安装docker¶
- 安装docker 18.03.0~ce-0~ubuntu ubuntu/#install-docker-ce
# 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
- 安装nvidia-docker2 nvidia-docker
# 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 vimapt-get install curl
把container保存在image¶
docker ps -a- 查看容器列表, 取得对应的CONTAINERIDdocker commit e0146ead3398 test/ubuntu:v1- 把容器e0146ead3398保存到test/ubuntu:v1, v1为tag
把image保存到本地文件¶
docker images- 查看image列表, 取得对应的IMAGE IDdocker 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.shsudo 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