和师兄一起管理并维护实验室的机器。本文记录了一些常用的Docker管理命令和脚本。
常用指令
- 查看所有容器:
docker ps -a
- 启动目标容器:
docker start 容器名
- 进入目标容器:
docker exec -it 容器ID bash
- 重启容器ssh服务:进入目标容器后,输入
/etc/init.d/ssh restart
- 退出容器:control+D (不要输入
exit
,会直接关闭容器) - jiaoyifan容器的密码是
123
- 启动ssh:
service ssh restart
- 删除containers:先停止
docker stop 容器ID
,再删除docker container rm 容器ID
- 让container在docker服务启动时自动启动:
docker container update --restart=always ${CONTAINER_ID}
开docker的一般流程
去NVIDIA官方查找所需要的docker版本: https://docs.nvidia.com/deeplearning/frameworks/pytorch-release-notes/ https://catalog.ngc.nvidia.com/orgs/nvidia/containers/pytorch
执行docker命令,新建docker:
docker run --gpus '"device=2,3"' -it -p 宿主机端口:22 --name test -v /data_nfs/xx:/data nvcr.io/nvidia/pytorch:xx.xx-py3
# -v:挂载磁盘映射,宿主机目录:docker内部目录
# -p:宿主机端口号:docker端口号,22是ssh的端口
# -name:container名字
# nvcr:之前选择的pytorch docker版本,一般都是用21.02
# --gpus:不要忘了是单引号+双引号
进到container里面,装一下ssh
docker start 容器ID
docker exec -it 容器ID bash
apt-get update
apt-get install vim -y
apt-get install openssh-server -y
启动一下ssh服务
vim /etc/ssh/sshd_config
添加PermitRootLogin yes
添加UsePAM no
# 修改密码
passwd root
# 启动ssh服务
service ssh start
让container在docker重启后自动启动
docker container update --restart=always ${docker_container_id}
安装tmux
apt install tmux
重装nvidia驱动
额,建议不要作死。
给正在运行的Container开放端口
先关闭docker
# 停止运行container
docker stop xxxxxx
# 停止运行docker
sudo systemctl stop docker
sudo systemctl stop docker.socket
修改/var/lib/docker/containers/<conainerID>/
目录下的hostconfig.json
和config.v2.json
中PortBindings
和ExposedPorts
"PortBindings":{"22/tcp":[{"HostIp":"","HostPort":"50005"}],"8000/tcp":[{"HostIp":"","HostPort":"40005"}],"8080/tcp":[{"HostIp":"","HostPort":"30005"}]}
"ExposedPorts":{"22/tcp":{},"8000/tcp":{},"8080/tcp":{}}
修改时注意逗号括号,修改前可以cp
备份一下,如果格式错误,docker启动后会忽略该容器。
文档信息
- 本文作者:焦逸凡
- 本文链接:https://ailovejinx.github.io/2023/08/10/blog-docker/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)