docker启动训练容器
-
拉取容器镜像
- 配置代理在国内拉取镜像
-
容器启动
- 容器使用显卡
-
conda环境配置
1、拉取容器镜像
docker pull NAME[:TAG]
- NAME:镜像名称,如
ubuntu
,mysql
等等 - TAG:镜像标签,通常表示不同版本号,如果不指定则默认
latest
拉取完成后使用docker images
查看是否有存在拉取的镜像名称
配置代理可以参考Blog,这里不再过多赘述
2、容器启动
在 Docker 中启动容器是通过 docker run
命令完成的,它不仅可以启动容器,还可以在不存在指定镜像时从仓库拉取镜像。以下是如何启动容器的基本步骤和一些重要的注意事项。
启动容器的基本命令
命令格式如下:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
- IMAGE:镜像的名字和标签(如果未指定标签,默认使用
latest
)。 - COMMAND 和 ARG:在容器启动后执行的命令及其参数。
常用选项
-d
,--detach
:后台运行容器,并打印容器 ID。--name
:为容器指定一个名称,方便后续操作。-p
,--publish
:发布容器的端口到宿主机上,格式为宿主机端口:容器端口
。-v
,--volume
:挂载宿主机的目录或文件到容器内。--rm
:容器退出时自动清理容器文件系统。-e
,--env
:设置环境变量。--restart
:设置容器的重启策略,如always
、on-failure
、unless-stopped
。
示例
假设你想运行一个 ubuntu 服务器:
docker run -d --name my-ubuntu -p 8080:80 ubuntu
这个命令将:
- 在后台启动一个新的容器。
- 将容器命名为
my-ubuntu
。 - 将容器的 80 端口映射到宿主机的 8080 端口。
- 使用
ubuntu
镜像。
注意事项!!!
- 端口冲突:确保映射到宿主机的端口未被其他应用占用。如果容器启动后,修改端口会非常麻烦!
- 挂载:如果容器内的数据是重要的,应该通过
-v
选项挂载数据卷或绑定宿主目录,以防容器删除后数据丢失。挂载非常重要!每一个容器都应该有一个挂载路径,方便与容器进行数据交互!下面给出一个挂载的例子
假设你正在开发一个 Web 应用,你的 HTML 和 JavaScript 文件存放在宿主机的 /path/to/webapp
目录中。你想要将这个目录挂载到运行 ubuntu 服务器的容器中,以便容器可以直接使用这些文件。
docker run -d \--name my-ubuntu \-v /path/to/webapp:/usr/share/ubuntu/html \-p 8080:80 \ubuntu
这个命令做了以下几件事:
-d
使容器在后台运行。--name my-ubuntu
将容器命名为my-ubuntu
。-v /path/to/webapp:/usr/share/ubuntu/html
将宿主机的/path/to/webapp
目录挂载到容器的/usr/share/ubuntu/html
目录。这意味着容器中 ubuntu 服务默认的 Web 根目录现在指向你的本地开发目录,任何更改都会立即反映在通过 ubuntu 提供的网页上。-p 8080:80
将容器的 80 端口映射到宿主机的 8080 端口,使你可以通过http://localhost:8080
访问你的 Web 应用。
2.1、让docker容器使用宿主机显卡
步骤1:检查驱动
首先使用nvidia-smi
检查宿主机是否能正常使用显卡
步骤2:安装nvidia-container-toolkit
安装nvidia容器工具包(nvidia-container-toolkit),需要这个工具才能让docker支持nvidia的GPU
如果你使用的是ubuntu可以使用以下命令安装
# 添加安装包存储库
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# 安装NVIDIA-DOCKER2软件包,然后重新加载Docker守护程序配置
sudo apt-get update
sudo apt-get install -y nvidia-docker2
sudo systemctl restart docker
更详细步骤可以参考官方链接
步骤3:运行支持GPU的容器
安装完 NVIDIA Docker 后,可以通过 --gpus
标志来启动支持 GPU 的容器。例如,如果想运行一个支持GPU使用的ubuntu容器,可以使用以下命令:
docker run --gpus all ubuntu
3、容器内的conda环境安装
进入容器内部后,安装conda环境,有conda和miniconda两个选项
- conda: 如果你不能明确你的环境要求,建议安装conda,因为里面会预装好常用包,但是会很大很重
- miniconda: 轻量,如果你明确你需要的库,那么miniconda是最好的选择
这里以安装miniconda为例:
mkdir -p ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm ~/miniconda3/miniconda.sh
在安装好后,更新资源
source ~/miniconda3/bin/activate
在所有可用的shell中初始化conda
conda init --all