安装docker

# remove old version
sudo apt-get remove docker docker-engine docker.io
# some tools
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
# Add Docker’s official GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# Verify fingerprint
sudo apt-key fingerprint 0EBFCD88
# set up the stable repository
sudo add-apt-repository \
  "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) \
  stable"

sudo apt-get update
sudo apt-get install docker-ce=18.03.0~ce-0~ubuntu
# If you have nvidia-docker 1.0 installed: we need to remove it and all existing GPU containers
docker volume ls -q -f driver=nvidia-docker | xargs -r -I{} -n1 docker ps -q -a -f volume={} | xargs -r docker rm -f
sudo apt-get purge -y nvidia-docker

# Add the package repositories
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \
  sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \
  sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update

# Install nvidia-docker2 and reload the Docker daemon configuration
sudo apt-get install -y nvidia-docker2
sudo pkill -SIGHUP dockerd

# Test nvidia-smi with the latest official CUDA image
docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi

启动docker

docker run -it ubuntu bash

更新DNS服务器

从docker pull下来的Ubuntu的DNS server设置的是Google的DNS server, 需要替换为公司内部的

echo '# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#    DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 192.168.2.103
search abc.com.cn
' > /etc/resolv.conf

更新软件包

apt-get update

安装需要的软件

  • apt-get install vim
  • apt-get install curl

把container保存在image

  • docker ps -a - 查看容器列表, 取得对应的CONTAINERID
  • docker commit e0146ead3398 test/ubuntu:v1 - 把容器e0146ead3398保存到test/ubuntu:v1, v1为tag

把image保存到本地文件

  • docker images - 查看image列表, 取得对应的IMAGE ID
  • docker save -o test_ubuntu.tar 857a5f24252b - 把镜像857a5f24252b保存到test_ubuntu.tar

从文件中加载镜像

  • docker load -i test_ubuntu.tar - 从test_ubuntu.tar中加载镜像

为导入的镜像打tag

  • docker tag image_id new_tag

常用命令

  • docker attach --sig-proxy=false <NAME/CONTAINER ID> - attach到并禁用signal proxy
  • docker run --sig-proxy=false -p 10022:22 --entrypoint /root/startup.sh --cpus 0.5 vpi/ubuntu:jenkins - 分配0.5个cpu给当前容器并且转发主机端口10022到容器端口22, 设置entrypoint为/root/startup.sh
  • sudo usermod -aG docker <USER> 增加docker使用者, 重新登录生效

默认文件存放位置

  • /var/lib/docker

Proxy for build docker image

docker build \
    --build-arg http_proxy=http://192.168.0.254:10801 \
    --build-arg https_proxy=http://192.168.0.254:10801 \
    --network host \
    -f Dockerfile_blender_builder -t blender_builder .

Shipyard

https://www.ivankrizsan.se/2016/07/10/managing-containers-shipyard/

startup.sh

#!/bin/bash
echo 'Run with --sig-proxy=false to disable signal proxy'
echo
echo '# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 192.168.2.103
search abc.com.cn
' > /etc/resolv.conf

start_script=
while [ "$#" -gt 0 ]; do
    case "$1" in
        -s|--start-script) start_script="$2"; shift 2;;
        --start-script=*) start_script="${1#*=}"; shift 1;;

        -l|--log) log_to_file=1; shift 1;;

        *) echo "Unknown parameter passed: $1"; shift 1;;
    esac
done

if [ "x$start_script" != "x" ]; then
    echo 'Run env setup script'
    wget -qO- --no-check-certificate $start_script | bash
fi

echo 'Start sshd - `Ctrl + C` to detach'
/usr/sbin/sshd -D

Published

Category

Docker