问题
1.在创建docker容器是默认的用户是root,进入容器是没有密码的,但是当ssh进行连接是需要密码,因为root用户密码是系统随机生成的。想解决这个问题可以通过配置免密登录的方式进行。
创建容器
- docker run --gpus all -it -p 9000:22 -v /media/harddisk/data_sets:/home/data_sets --name 容器名称 镜像ID /bin/bash
- 解释:这是一条Docker指令,用于启动一个新的Docker容器,其含义如下:
- docker run: 告诉Docker启动一个新的容器
- –gpus all: 指定容器可以访问所有可用的GPU资源
- -it: 分配一个伪终端并保持STDIN打开,以便您可以交互式地控制容器
- -p 9000:22: 将主机的9000端口映射到容器的22端口,这样可以通过SSH连接到容器
- -v /media/harddisk/data_sets:/home/data_sets: 将主机上的/media/harddisk/data_sets目录挂载到容器的/home/data_sets目录,这样可以在容器内访问主机上的数据集
- –name 容器名称: 指定容器的名称,这里使用了中文字符作为容器名称
镜像ID: 指定要启动的Docker镜像的ID - /bin/bash: 在容器内部启动一个bash shell,以便您可以交互式地执行命令
连接
ssh -p 9000 username@localhost
这是如何没配置免密会让你输入密码:
解决方案
1. 生成秘钥:
ssh-keygen
如果您已经有一个公钥和私钥,请跳过此步骤。(一般在家目录的.ssh文件夹里面)
2.配置容器秘钥
cd 到容器root目录,没有的的话就创建.ssh文件夹,在该文件家里面创建authorized_keys文件并复制共有秘钥。
cd /root
mkdir .ssh
vim authorized_keys (将宿主机中的秘钥给复制到这个文件里面按:wq保存退出)
3 . 再次进行连接
ssh -p port root@localhost