一、 Docker-CE
先决条件
操作系统要求
如需安装 Docker,您需要以下 Ubuntu 版本之一的 64 位版本:
- Cosmic 18.10
- Bionic 18.04 (LTS)
- Xenial 16.04 (LTS)
Docker CE 支持 x86_64(或者 amd64)、armhf、arm64、s390x(IBM Z)和 ppc64le(IBM Power)架构。
卸载旧版本
Docker 的早期版本称为 docker
,docker.io
或 docker-engine
。如果安装了这些版本,请卸载它们:
1
$ sudo apt-get remove docker docker-engine docker.io containerd runc
如果 apt-get
报告未安装任何这些软件包,这表示情况正常。
/var/lib/docker/
的内容,包括镜像、容器、存储卷和网络将被保留。Docker CE 软件包现在称为 docker-ce
。
安装 Docker CE
您可以通过不同方式安装 Docker CE,具体取决于您的需求:
- 大多数用户 设置 Docker 的镜像仓库 并从中进行安装,从而可以轻松完成安装和升级任务。这是推荐方法。
- 一些用户下载 DEB 软件包并手动进行安装,然后完全由手动管理升级。在某些情况(例如,在不能访问互联网的隔离系统中安装 Docker)下,这很有用。
使用镜像仓库进行安装
首次在新的主机上安装 Docker CE 之前,您需要设置 Docker 镜像仓库。然后,您可以从此镜像仓库安装和更新 Docker。
设置镜像仓库
-
更新
apt
软件包索引:1
$ sudo apt-get update
-
安装软件包,以允许
apt
通过 HTTPS 使用镜像仓库:1 2 3 4 5 6
$ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common
-
添加 Docker 的官方 GPG 密钥:
1
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
验证密钥指纹是否为
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
。1 2 3 4 5 6
$ sudo apt-key fingerprint 0EBFCD88 pub rsa4096 2017-02-22 [SCEA] 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 uid [ unknown] Docker Release (CE deb) <docker@docker.com> sub rsa4096 2017-02-22 [S]
-
使用下列命令设置 stable 镜像仓库。您始终需要使用 stable 镜像仓库,即使您还需要通过 edge 或 testing 镜像仓库安装构建也是如此。如需添加 edge 或 testing 镜像仓库,请在以下命令中的词
stable
之后添加词edge
和/或testing
。注:下面的
lsb_release -cs
子命令用于返回您的 Ubuntu 分发版,例如xenial
。有时,在 Linux Mint 等分发版中,您可能必须将
$(lsb_release -cs)
更改为您的父代 Ubuntu 分发版。例 如:如果您使用的是Linux Mint Rafaela
,您可以使用trusty
。amd64:
1 2 3 4
$ sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"
安装 DOCKER CE
-
更新
apt
软件包索引。1
$ sudo apt-get update
-
安装最新版本的 Docker CE,或者转至下一步以安装特定版本。将替换任何现有的 Docker 安装版本。
1
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
警告: 如果您启用了多个 Docker 镜像仓库,而且在安装或者更新时不在
apt-get install
或apt-get update
命令中指定版本,那么将始终安装可用的最高版本, 这可能无法满足您的稳定性需求。 -
在生产系统中,您应该安装特定版本的 Docker CE,而不是始终使用最新版本。
a. 列出所有可用版本:
1 2 3 4 5 6 7
$ apt-cache madison docker-ce docker-ce | 5:18.09.1~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages docker-ce | 5:18.09.0~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages docker-ce | 18.06.1~ce~3-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages docker-ce | 18.06.0~ce~3-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages ...
b. 用第二列的版本号指定安装的版本,例如
5:18.09.1~3-0~ubuntu-xenial
.1
$ sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io
-
运行
hello-world
镜像,验证是否正确安装了 Docker CE。1
$ sudo docker run hello-world
此命令将下载一个测试镜像并在容器中运行它。容器运行时,它将输出一条参考消息并退出。
Docker CE 已安装并且正在运行。您需要使用 sudo
运行 Docker 命令。继续执行 Linux 安装后步骤 以允许非特权用户运行 Docker 命令,以及了解其他可选配置步骤。
升级 DOCKER CE
如需升级 Docker CE,首先运行 sudo apt-get update
,然后按照 安装说明 执行操作,并选择您要安装的新版本。
从软件包进行安装
如果您无法使用 Docker 镜像仓库安装 Docker CE,可以下载适用于您的版本的 .deb
文件,并手动进行安装。每次要升级 Docker CE 时,您都需要下载一个新文件。
-
转至
https://download.docker.com/linux/ubuntu/dists/
,选择您的 Ubuntu 版本(lsb_release -a
查看),浏览至pool/stable/
,然后选择amd64
,armhf
,arm64
,ppc64el
或者s390x
。下载适用于您想要安装的.deb
文件。注:如需安装nightly软件包,请将 URL 中的词
stable
更改为nightly
。 -
安装 Docker CE,将下面的路径更改为您下载 Docker 软件包的路径。
1
$ sudo dpkg -i /path/to/package.deb
Docker 守护进程将自动启动。
-
运行
hello-world
镜像,验证是否正确安装了 Docker CE。1
$ sudo docker run hello-world
此命令将下载一个测试镜像并在容器中运行它。容器运行时,它将输出一条参考消息并退出。
-
命令行方式下载:
1 2 3 4 5 6
download_url='https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/amd64' docker_version='18.06.0~ce~3-0' wget --no-check-certificate ${download_url}/docker-ce_${docker_version}~ubuntu_amd64.deb sudo dpkg -i docker-ce*.deb sudo apt-get -f install # 一般只有一个libtfl7的依赖
Docker CE 已安装并且正在运行。您需要使用 sudo
运行 Docker 命令。继续执行 Linux 的安装后步骤 以允许非特权用户运行 Docker 命令,以及了解其他可选配置步骤。
- 升级 DOCKER CE
如需升级 Docker CE,请下载较新的软件包文件并重复上述 安装过程,指向新文件。
卸载 Docker CE
-
卸载 Docker CE 软件包:
1
$ sudo apt-get purge docker-ce
-
主机上的镜像、容器、存储卷、或定制配置文件不会自动删除。如需删除所有镜像、容器和存储卷,请运行下列命令:
1
$ sudo rm -rf /var/lib/docker
您必须手动删除任何已编辑的配置文件。
以非 root 用户身份管理
docker
守护进程绑定至 Unix 套接字,而不是 TCP 端口。默认情况下,该 Unix 套接字由用户 root
所有,而其他用户只能使用 sudo
访问它。docker
守护进程始终以 root
用户身份运行。
在使用 docker
命令时,如果您不想使用 sudo
,请创建名为 docker
的 Unix 组并向其中添加用户。docker
守护进程启动时,它将使 Unix 套接字的所有权可由 docker
组进行读取/写入。
警告:
docker
组将授予等同于root
用户的特权。如需有关此操作如何影响系统安全性的详细信息,请参阅 Docker 守护进程攻击面。
如需创建 docker
组并添加您的用户,请执行下列操作:
-
创建
docker
组。1
$ sudo groupadd docker
-
向
docker
组中添加您的用户。1
$ sudo usermod -aG docker $USER
-
注销并重新登录,以便对您的组成员资格进行更新。
如果在虚拟机上进行测试,可能必须重启此虚拟机才能使更改生效。
在桌面 Linux 环境(例如,X Windows)中,彻底从您的会话中注销,然后重新登录。
-
验证您是否可以在不使用
sudo
的情况下运行docker
命令。1
$ docker run hello-world
此命令将下载一个测试镜像并在容器中运行它。容器运行时,它将输出一条参考消息并退出。
如果你之前已经用
sudo
执行过Docker CLI命令,你可能看到如下错误,这个错误表明~/.docker/
文件夹已经被用错误的权限创建。1 2
WARNING: Error loading config file: /home/user/.docker/config.json - stat /home/user/.docker/config.json: permission denied
要解决这个问题,要么删除
~/.docker
文件夹(这个文件夹会自动生成,但是之前的配置会丢失),或者用下列命令修改权限:1 2
$ sudo chown "$USER":"$USER" /home/"$USER"/.docker -R $ sudo chmod g+rwx "$HOME/.docker" -R
将 Docker 配置为开机自启动
大多数最新的 Linux 分发版(RHEL、CentOS、Fedora、Ubuntu 16.04 及更高版本)都使用 systemd
来管理在系统启动时启动的服务。 Ubuntu 14.10 及更低版本使用 upstart
。
systemd
1
$ sudo systemctl enable docker
如需禁用此性能,请改为使用 disable
。
1
$ sudo systemctl disable docker
如果您需要添加 HTTP 代理,请为 Docker 运行时文件设置另一个目录或分区,请参阅 定制您的 systemd Docker 守护进程选项。
upstart
Docker 用 upstart
自动配置为在启动时启动的。如需禁用此行为,请使用以下命令:
1
$ echo manual | sudo tee /etc/init/docker.override
chkconfig
1
$ sudo chkconfig docker on
参考
二、Nvidia-Docker
先决条件
运行安装 nvidia-docker 2.0 需要以下先决条件:
- GNU/Linux x86_64 with kernel version > 3.10
- Docker >= 1.12
- NVIDIA GPU with Architecture > Fermi (2.1)
- NVIDIA drivers ~= 361.93 (untested on older versions)
你的 GPU 驱动可能限制你能运行的 CUDA 镜像 (见 CUDA requirements)
Docker CE 支持x86_64
(或者amd64
),armhf
,arm64
,s390x
(IBM Z), 和 ppc64le
(IBM Power) 架构。
卸载 nvidia-docker 1.0
在继续下一步之前,必须完全卸载 nvidia-docker 1.0 版本。而且必须 stop
和 remove
所有的 nvidia-docker 1.0 启动的容器。
Ubuntu distributions
1
2
docker volpeizhiume 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 nvidia-docker
安装 nvidia-docker 2.0
确保你已经安装了 NVIDIA驱动 和 docker 支持的 版本(见上面的先决条件)
如果你有修改 /etc/docker/daemon.json
,nvidia-docker2
可能会覆盖它
Ubuntu distributions
- 按照 文档 安装配置Repository:
1
2
3
4
5
6
7
8
9
10
11
# In order to setup the nvidia-docker repository for your distribution, follow the instructions below.
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
# In order to update the nvidia-docker repository key for your distribution, follow the instructions below.
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \
sudo apt-key add -
- 安装
nvidia-docker2
并且更新Docker daemon
配置:
1
2
sudo apt-get install nvidia-docker2
sudo pkill -SIGHUP dockerd
使用老版本的 docker
用 apt-cache madison nvidia-docker2 nvidia-container-runtime
或者 yum search --showduplicates nvidia-docker2 nvidia-container-runtime
列出可用的版本,然后在安装时指定版本,例如:
1
sudo apt-get install -y nvidia-docker2=2.0.1+docker1.12.6-1 nvidia-container-runtime=1.1.0+docker1.12.6-1
验证
使用时必须选择 nvidia
作为runtime:
1
docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi