2018-3-30
1.安装前的准备工作
- 确保是64位的操作系统
- 卸载旧版本的docker
sudo apt-get remove docker docker-engine docker.io
dockerde相关文件都在/var/lib/docker/
路径下
2.使用docker仓库安装
首次安装docker时需要添加docker的仓库
- 更新软件源的仓库信息
sudo apt-get update
- 安装包来使apt通过HTTPS来使用docker仓库
sudo apt-get install apt-transport-https ca-certificates \
curl software-properties-common
- 添加docker的官方GPG证书
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
| sudo apt-key add -
- 验证是否添加成功带有fingerprint的key
sudo apt-key fingerprint 0EBFCD88
- 添加稳定的docker仓库
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable"
安装docker-ce
- 验证是否添加成功带有fingerprint的key
- 再次更新仓库信息
sudo apt-get update
- 指令安装docker
注意:sudo apt-get install docker-ce
只能安装目前最高的版本,但通常使用下面方法来选择要安装的版本apt-cache madison docker-ce
查看目前的多个版本,结果如下:
使用sudo apt-get install docker-ce=<VERSION>
安装特定的版本,这里使用17.12.0版本,指令为:sudo apt-get install docker-ce=17.12.0~ce-0~ubuntu
- 验证安装的结果
如果安装docker安装正确,则运行sudo docker run hello-world
后输出下面结果:
4.创建docker组
该操作的作用:不用每次使用docker指令时都输入sudo
- 创建docker组
sudo groupadd docker
创建docker组cat /etc/group | grep -i docker
查看docker组的基本情况如下,目前该组中还没有添加用户:
2.为docker组添加用户sudo usermod -aG docker $USER
,其中$USER
表示当前的用户,再次查看docker用户组的信息如下,该组中多了个david用户(当前登录的用户):
- 注销登录后,用户组生效,就可以直接使用不带sudo的docker指令
5.安装nvidia-docker来支持GPU
- 卸载旧版本的nvidia-docker及GPU容器
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
- 添加仓库
- 添加key:
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
- 添加key:
安装nvidia-docker2并配置docker dameon加速镜像下载
- 安装nvidia的gpu支持:
sudo apt-get install -y nvidia-docker2
- 修改
/etc/docker/daemon.json
文件内容如下:1
2
3
4
5
6
7
8
9{
"registry-mirrors": ["http://58167a06.m.daocloud.io"],
"runtimes": {
"nvidia": {
"path": "/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
}
}
}
其中链接部分是使用国内的加速镜像,这里使用dalcloud的加速镜像,如果使用阿里云的加速镜像,将链接替换为https://8vntriz8.mirror.aliyuncs.com即可,该链接是在注册阿里开发者平台时生成的,具体的细节见https://www.cnblogs.com/atuotuo/p/6264800.html.
- 重载daemon使配置生效,并重启docker:
sudo pkill -SIGHUP dockerd
sudo systemctl daemon-reload
sudo systemctl restart docker
- 安装nvidia的gpu支持:
测试安装情况
docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi
会下载cuda镜像来测试
5.使用docker安装tensorflow
- 打开tensorflow的docker镜像仓库如下:
使用指令nvidia-docker run -it -p 8888:8888 tensorflow/tensorflow:<mirror tag>
下载并运行tag对应的镜像,这里使用tag为1.7.0-gpu-py3的镜像输出结果如下.
将最下面的链接复制到浏览器就可以打开ipython notebook并使用对应的镜像环境了.
注意:首次运行上面的指令会下载对应tag的镜像,之后运行可以直接从本地读取该镜像.
使用
docker images
查看已下载镜像信息,结果如下:
- 使用
docker rmi -f <IMAGE ID>
删除对应ID号的镜像.
6.将主机的目录挂载到容器中
- 首先使用
docker ps
查看目前运行的容器,结果如下,使用docker kill <container ID>
关闭ID号对应的容器:
- 使用
docker exec -it 2783ad1bf2dc /bin/bash
登录该容器,其中2783ad1bf2dc
为第一步的结果中看到的容器ID号,登录的结果如下:
登录成功后,终端的用户和工作组组也随着改变,该容器的目录结构与一般的Linux相同,输入
exit
或使用按键ctrl + d
退出登录状态.OPTIONS说明:
- -d :分离模式: 在后台运行
- -i :标准输入,即使没有附加也保持STDIN 打开
- -t :分配一个伪终端,后面必须加
/bin/bash
- 这里将
/home/david/docker/tensorflow
目录挂载到1.7.0-gpu-py3容器的/notebooks/tensorflow
目录下,将主机的目录挂载到容器后,修改主机的文件,容器中的文件也会同步更新,这样比较方便,操作如下:docker run -it -v <主机目录>:<容器挂载目录> <容器镜像> /bin/bash
,-v
表示挂载目录的选项;冒号前面是主机目录,后面是容器目录;最后面接容器镜像
这里的挂载目录操作:
docker run -it -v /home/david/docker/tensorflow:/notebooks/tensorflow tensorflow/tensorflow:1.7.0-gpu-py3 /bin/bash
查看挂载结果如下:
可以看出,在容器的/notebooks
目录下已经出现了tensorflow
目录,并且该文件夹下已经出现了在主机目录/home/david/docker/tensorflow
里的test.py
文件,即目录挂载成功.
注意:使用下面指令可以一步到位!打开ipython notebook并挂载主机目录到容器.
docker run -it -v /home/david/docker/tensorflow:/notebooks/tensorflow -p 8888:8888 tensorflow/tensorflow:1.7.0-gpu-py3
运行结果: