
本文记录如何创建一个支持 GPU 的 Docker 容器并配置 SSH 远程登录。该方法适合在服务器上搭建深度学习实验环境。一、需要自己修改的参数在执行命令前需要先确认下面几个参数。参数含义示例your_container容器名称yolo_container3010宿主机 SSH 端口不能和别人重复3010、3020/data/project宿主机上的代码或数据目录/data/project/workspace容器内的工作目录/workspace镜像名称Docker 镜像名称pytorch/pytorch:2.1.0-cuda12.1-cudnn8-devel服务器IP服务器地址根据实际服务器填写最需要自己修改的是下面几个位置--name your_container -p 3010:22 -v /data/project:/workspace 镜像名称 服务器IP二、创建 GPU Docker 容器执行下面的命令创建容器docker run -itd \ --gpus all \ --name your_container \ -p 3010:22 \ -v /data/project:/workspace \ --shm-size16g \ pytorch/pytorch:2.1.0-cuda12.1-cudnn8-devel \ /bin/bash其中--gpus all表示容器可以使用服务器上的所有 GPU。--name your_container表示容器名称可以自己设置。-p 3010:22表示端口映射。3010是宿主机端口22是容器内部 SSH 端口。-v /data/project:/workspace表示目录挂载。前面是宿主机目录后面是容器内目录。例如宿主机上的/data/project会映射到容器里的/workspace。--shm-size16g设置共享内存大小深度学习训练时比较常用可以减少 DataLoader 报错。三、查看容器是否创建成功执行docker ps -a如果能看到刚才创建的容器说明容器已经创建成功。如果只想查看正在运行的容器可以执行docker ps四、进入容器执行docker exec -it your_container /bin/bash其中your_container换成自己的容器名称。进入容器后后面的命令都在容器内部执行。五、安装 SSH 服务在容器内执行apt-get update apt-get install -y openssh-server vim其中openssh-server用于开启 SSH 登录服务。vim用于修改配置文件。六、设置 root 密码执行passwd然后根据提示输入两次密码。这个密码后面 SSH 登录容器时会用到。七、修改 SSH 配置打开 SSH 配置文件vim /etc/ssh/sshd_config找到或添加下面两行PermitRootLogin yes PasswordAuthentication yes这两行的作用是允许 root 用户使用密码登录。修改完成后在 vim 中按下面步骤保存退出Esc :wq八、启动 SSH 服务执行service ssh restart如果提示服务没有启动可以执行service ssh start九、远程登录 Docker 容器在本地电脑或服务器外部终端中执行ssh root服务器IP -p 3010其中服务器IP换成自己的服务器地址。3010要和创建容器时-p 3010:22中的端口保持一致。登录时输入前面设置的 root 密码即可。十、常用 Docker 命令查看所有容器docker ps -a查看正在运行的容器docker ps进入容器docker exec -it your_container /bin/bash启动容器docker start your_container停止容器docker stop your_container删除容器docker rm your_container查看镜像docker images删除镜像docker rmi 镜像ID十一、完整示例假设参数设置如下参数示例值容器名称yolo_container宿主机端口3010宿主机目录/data/project容器目录/workspace镜像pytorch/pytorch:2.1.0-cuda12.1-cudnn8-devel创建容器docker run -itd \ --gpus all \ --name yolo_container \ -p 3010:22 \ -v /data/project:/workspace \ --shm-size16g \ pytorch/pytorch:2.1.0-cuda12.1-cudnn8-devel \ /bin/bash进入容器docker exec -it yolo_container /bin/bash安装 SSHapt-get update apt-get install -y openssh-server vim设置密码passwd修改 SSH 配置vim /etc/ssh/sshd_config加入或修改PermitRootLogin yes PasswordAuthentication yes启动 SSHservice ssh restart远程登录ssh root服务器IP -p 3010十二、注意事项如果多人共用一台服务器-p 3010:22中的3010不能和别人重复。如果容器重启后无法 SSH 登录可以先进入容器docker exec -it your_container /bin/bash然后重新启动 SSHservice ssh start如果服务器处于公网环境不建议长期使用 root 密码登录更安全的方式是使用普通用户或 SSH key 登录。