一、安装Docker
1.1在线安装
1.由于apt官方库里的docker版本可能比较旧,所以先卸载可能存在的旧版本
sudo apt-get remove docker docker-engine docker-ce docker.io
2.更新apt包索引
sudo apt-get update
3.安装以下包以使apt可以通过HTTPS使用存储库(repository)
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common
4.添加Docker官方的GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
5.使用以下命令来设置stable存储库
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
6.再更新一下apt包索引
sudo apt-get update
7.安装最新版本的Docker CE
sudo apt-get install -y docker-ce
1.2离线安装
1.Ubuntu对应版本名称
- Ubuntu Focal 20.04 (LTS)
- Ubuntu Bionic 18.04 (LTS)
- Ubuntu Xenial 16.04 (LTS)
2.打开对应版本名称的链接:Index of linux/ubuntu/dists/xenial/pool/stable/amd64/,分别下载
- containerd.io*.deb
- docker-ce-cli*.deb
- docker-ce*.deb
3.安装,注意顺序
sudo dpkg -i containerd.io*.deb docker-ce-cli*.deb docker-ce*.deb
2.验证docker
1.查看docker服务是否启动
systemctl status docker
2.若未启动,则启动docker服务
sudo systemctl start docker
3.hello-world验证是否成功安装
sudo docker run hello-world
3.常用Docker命令
1.信息
Commands | Comments |
---|---|
info | 显示Docker系统信息 |
inspect | 显示镜像/容器基本信息 |
version | 显示Docker版本信息 |
2.镜像管理
Commands | Comments |
---|---|
build | 通过Dockerfile创建镜像 |
images | 列出所有镜像 |
tag | 重命名镜像 |
history | 查看指定镜像的创建历史 |
rmi | 删除一个或多个镜像 |
tag | 标记镜像并将其归入某一仓库 |
pull | 从镜像仓库中拉取或者更新指定镜像 |
cp | 用于容器与主机之间的数据拷贝 |
save | 将一个或多个镜像保存为tar包 |
load | 通过tar包载入镜像 |
import | 通过tar包载入容器,恢复为镜像,可以指定新名称 |
3.容器生命周期管理
Commands | Comments |
---|---|
run | 创建一个新的容器并运行一个命令 |
create | 创建一个新的容器但不启动它 |
restart | 重启一个或多个容器 |
start | 启动一个或多个容器 |
stop | 停止一个或多个运行中的容器 |
kill | 杀死一个或多个运行中的容器 |
pause | 暂停一个或多个运行中的容器中的所有进程 |
unpause | 恢复一个或多个运行中的容器中的所有进程 |
rm | 移除一个或多个容器 |
rename | 重命名容器 |
4.容器操作
Commands | Comments |
---|---|
ps | 列出所有容器 |
top | 查看容器中运行的进程信息 |
port | 列出指定的容器的端口映射 |
exec | 在运行的容器中执行命令 |
commit | 将容器打包为镜像 |
export | 将容器的文件系统导出为tar包 |
二、安装nvidia-docker
因为docker不支持GPU加速,所以需要安装nvidia-docker
官方文档:Installation Guide — NVIDIA Cloud Native Technologies documentation
1.1在线安装
1.安装nvidia-docker
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \
&& 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
sudo apt-get install -y nvidia-docker2
sudo systemctl restart docker
2.若安装成功则可以输出显卡信息
nvidia-docker run --rm nvidia/cuda:10.1-base nvidia-smi
1.2离线安装
1.下载deb包,apt默认保存在/var/cache/apt/archives目录下
sudo apt install -d -y nvidia-docker2
下载了5个包:
2.查看deb包的依赖关系
apt-cache dependens package_name
3.按照依赖关系依次安装
- libnvidia-container1
- libnvidia-container-tools
- nvidia-container-toolkit
- nvidia-container-runtime
- nvidia-docker2
三、部署pytorch
镜像(image),是一个配置好的环境;容器(container),是image的具体实例。镜像和容器的关系相当于面向对象中类与对象的关系。
1.拉取镜像
docker pull pytorch/pytorch:1.6.0-cuda10.1-cudnn7-devel
2.查看已下载的镜像
docker images
3.为该镜像创建一个容器
pytorch:1.6.0-cuda10.1-cudnn7-devel镜像需要nvidia-docker run或者docker run --runtime=nvidia来启动
nvidia-docker run --rm -it -v host_volume:container_volume -p host_port:container_port pytorch/pytorch:1.6.0-cuda10.1-cudnn7-devel /bin/bash
或
docker run --runtime=nvidia --rm -it -v host_volume:container_volume -p host_port:container_port pytorch/pytorch:1.6.0-cuda10.1-cudnn7-devel /bin/bash
也可以修改/etc/docker/daemon.json,在第一行添加"default-runtime": "nvidia"
{
"default-runtime": "nvidia"
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
}
}
docker run --rm -it -v host_volume:container_volume -p host_port:container_port pytorch/pytorch:1.6.0-cuda10.1-cudnn7-devel /bin/bash
docker run参数:
Args | Comments |
---|---|
--rm | 退出时自动移除容器 |
-it | 启动交互式终端 |
-v | 将主机的一个目录映射到容器下 |
-w | 指定容器内的工作目录 |
-p | 将主机端口映射到容器端口 |
--name | 容器名称 |
4.如果在容器内配置了其他环境,可以将容器导出为镜像
docker commit container_id image_name:tag
5.退出容器,在容器内bash输入
exit
6.停止/开启容器
docker stop container_id/docker start -i container_id
通过Dockerfile部署
1.Dockerfile中的参数(D必须大写)
Args | Comments |
---|---|
ARG | 参数 |
FROM | 指定镜像源 |
ENV | 环境变量 |
EXPOSE | 开放暴露端口 |
RUN | 执行命令 |
CMD | 执行环境变量 |
2. 在Dockerfile所在文件夹打开终端运行,注意末尾有一个‘.’
docker build -t project_name:tag .
或者指定Dockerfile路径
docker build -f /path/to/Dockerfile -t project_name:tag .
3.为该镜像创建一个容器
nvidia-docker run --rm -it -v host_volume:container_volume -p host_port:container_port project_name:tag /bin/bash
4.使用apt安装前需先运行
apt update
四、迁移Docker
由于/root空间不够,我们可以将docker迁移到Home目录下
1.迁移docker
sudo cp -a /var/lib/docker ~/docker
2.备份docker
sudo mv -u /var/lib/docker /var/lib/docker.bak
3.生成软连接
sudo ln -s ~/docker /var/lib/docker
五、PyCharm连接远程服务器的docker
PyCharm+Docker:打造最舒适的深度学习炼丹炉 - 知乎
PyCharm必须是专业版,社区版不提供远程服务。在interpreter中选择Docker镜像,注意Python解释器的位置。