Skip to content

记录Docker的常见用法,主要是用在机器学习上。

Docker基础

shell
# 拉取镜像
$ docker pull <image_name>
# 删除镜像
$ docker rmi <image_id>
# 查看本地已经下载的镜像
$ docker images ls

# 基本运行
$ docker run <image_name>:tag <commands>
$ docker run ubuntu:leatest /bin/echo "hello world"
# 以后台模式运行(detach mode)
$ docker run -d <image_name> <commands>

# 查看运行中的container,可以查看Container id 和 name
$ docker ps
# 停止和重启container
$ docker stop <container_name>
$ docker restart <container_name>

# detach/ escape in a iteractive containner
<C-p>+<C+q>

# attach to a container
$ docker attach <container_name>/<container_id>

高级运行

可以在执行 run命令的时候添加各种参数设置 container的各种参数

shell
$ docker run <parameters> <image_name> <commands>

<parameter list>
-it # 交互模式运行
--name <container_name> # 指定container运行名字
-v <host_folder>:<container_folder> # 映射宿主机文件夹到container,也就是 volume
-p <host_port>:<container_port> # 映射container端口到宿主机

给Container挂载GPU,在运行的时候添加参数

shell
--gpus all
# or
--runtime=nvidia

最终运行例子,这里以运行 Pytorch 环境为例子。

shell
docker run --gpus all \
--ipc=host
-it \
--name pytorch_yjm \
-v /home/jiaming:/workspace \
-p 8022:22 \
pytorch/pytorch:1.9.0-cuda10.2-cudnn7-devel \
/bin/bash

深度学习工具配置

  • 配置SSH
shell
apt install update
apt install -y openssh-server vim
vim \etc\ssh\sshd_config # 配置ssh

添加如下内容

json
Port 22
PermitRootLogin yes
  • 修改 root 密码,并重启ssh服务
shell
service ssh restart
passwd root
  • 炼丹专用库的安装
shell
conda install -y numpy seaborn opencv pandas
# 如果需要使用 jupyter 的话
conda install -y jupyter

Save container to an image

我们以交互方式配置完环境后,为了不用每次都重新配置,可以将Container 保存为image。 这样每次只用Run一下这个镜像就可以了。自定镜像的方法有 通过dockerfile编译生成 和 通过 commit 的方式。这里展示 commit 的方式,

shell
$ docker commit -a "author_name" -m "messages" <container_id> <save_image_name>:<tag>
$ docker commit -a "jiaming" -m "pytorch" a404c6c174a2  mytorch:v1

最新更新: