以下命令默认已经构建了一个 Docker Image。
- # 在服务器上启动 docker (-p 端口映射,用于后续的 ssh 连接)
- docker run -itd -v /mnt/mount/:/home -p 8124:22 --name container-name --gpus all image-name
-
- # 进入容器中
- docker exec -it container-name /bin/bash
-
- # 设置密码,后续登陆使用,比如 admin
- passwd
-
- # 查看 ssh 状态(出现 ssh: unrecognized service 表示 ssh 未安装)
- service ssh status
-
- # 安装 ssh
- apt-get update
- apt-get install openssh-server
-
- # 启动 ssh (出现 * Starting OpenBSD Secure Shell server sshd 表示启动成功)
- service ssh start
-
- # 打开 ssh 配置文件进行修改,并重启
- vi /etc/ssh/sshd_config
- ```
- # 修改 PermitRootLogin 和 UsePAM
- #PermitRootLogin prohibit-password
- PermitRootLogin yes
- # UsePAM yes
- UsePAM no
- ```
- service ssh restart
-
- # 在服务器上进行连接测试,输入上面设置的密码 admin,登陆成功则没问题
- ssh root@127.0.0.1 -p 8124
- # vscode 登陆此容器只需要把上面的 127.0.0.1 换成服务器 ip 即可
上述的步骤主要是在服务器上启动了一个docker容器,并在容器内安装和配置了ssh服务。以下是对于这些步骤的详细解释:
首先,使用 docker run
命令在服务器上启动了一个名为 container-name
的容器。这里使用了 -v /mnt/mount/:/home
参数将服务器上的 /mnt/mount/
目录映射到容器的 /home
目录。另外,-p 8124:22
参数表示将容器的22端口(ssh默认端口)映射到服务器的8124端口,这样后续可以通过ssh协议连接到容器。--name container-name --gpus all
参数为容器指定了一个名字和GPU的使用权限。最后的 image-name
是要运行的docker镜像名称。
接着,使用 docker exec -it container-name /bin/bash
命令进入了容器的交互式shell。在此命令中,-it
参数表示保持交互,并分配一个伪终端。/bin/bash
是要执行的shell命令,即启动bash shell。
在容器内,使用 passwd
命令设置了密码,这个密码将用于后续的ssh登陆。
为了确认ssh是否已经在容器内安装,使用 service ssh status
命令检查ssh服务的状态。如果未安装ssh服务,将会出现 unrecognized service
的提示。
如果ssh未安装,则使用 apt-get update
和 apt-get install openssh-server
命令来安装ssh服务。
安装完成后,使用 service ssh start
命令启动ssh服务。如果一切正常,将会看到 Starting OpenBSD Secure Shell server sshd
的提示,表示ssh服务已经成功启动。
为了修改ssh的配置,首先使用 vi /etc/ssh/sshd_config
命令打开配置文件。在配置文件中,修改了 PermitRootLogin
和 UsePAM
的设置。PermitRootLogin yes
表示允许root用户登录,而 UsePAM no
则表示不使用Pluggable Authentication Modules。修改后,使用 service ssh restart
命令重启ssh服务以应用新的配置。
最后,为了测试ssh连接是否正常,使用 ssh root@127.0.0.1 -p 8124
命令尝试连接到容器。在输入密码后,如果能正常登陆,就表示ssh连接没有问题。对于VSCode的远程连接也是同样的方式,只需要将上述命令中的 127.0.0.1
换成服务器的实际IP地址即可连接到VSCode。
以上就是在服务器上启动docker容器,并在容器内安装和配置ssh服务的全过程。
- # 与主机共享网络
- docker run -itd --network host --rm -v /mnt/:/mnt/ --gpus all --name torch -w /root nvcr.io/nvidia/pytorch:22.12-py3
-
- # 多端口映射
- docker run -itd --rm -v /mnt/:/mnt/ -p 8125:22 -p 9000-9010:9000-9010 --gpus all --name torch2 -w /root nvcr.io/nvidia/pytorch:22.12-py3