当前位置:首页 » 《我的小黑屋》 » 正文

ssh 直接登录docker容器 (不用通过宿主机进入)

3 人参与  2024年10月22日 11:20  分类 : 《我的小黑屋》  评论

点击全文阅读


若我们想直接通过ssh链接docker容器,而不是通过宿主机进入。

1.启动docker,进入docker容器:

docker exec -it 42d099e3fdca /bin/bash (42d099e3fdca是CONTAINER ID)

2.进入docker后,使用passwd密码来修改密码(如提示没有这个命令行使用yum install passwd安装):

passwd    xxx密码    xxx确认密码

3.安装Openssh(docker 容器中执行):

yum -y install openssh-serveryum -y install openssh-clients

修改SSH配置文件以下选项,去掉#注释,将四个选项启用:

vim /etc/ssh/sshd_config

RSAAuthentication yes #启用 RSA 认证PubkeyAuthentication yes #启用公钥私钥配对认证方式AuthorizedKeysFile .ssh/authorized_keys #公钥文件路径(和上面生成的文件同)PermitRootLogin yes #root能使用ssh登录

重启ssh服务,并设置开机启动,可能报错,可后面进入从镜像启动的新容器进行运行:

service sshd restartchkconfig sshd on

4.退出容器并保存更改:

使用exit命令退出当前运行的容器,退出后用于保存的唯一ID,也可不用退出,但不进行操作,直接在另一个终端运行以下commit:

exit

现在我们的容器已经被我们改变了,使用 docker commit 命令,将当前的容器生成镜像:

docker commit ffe81683c404  centos6-jdk7:ssh

ffe81683c404: 创建镜像的容器的ID,就是上面的容器id,也就是我们刚才进入的容器id

centos6-jdk7:ssh: 目标镜像的仓库名和 tag 信息,冒号前面部分是生成的镜像的仓库名字,冒号后面是镜像tag

创建成功后会返回这个镜像的 ID 信息,查看镜像:

docker images

5.启动新的容器并打通22端口:

将新的镜像启动,并将docker服务器的2222端口映射到容器的22端口上,进入容器启用映射端口:

docker run -it -p 2222:22 --net host -v $PWD:/home --name my_container 镜像ID bash/usr/sbin/sshd -p 2222

my_container:创建的新容器名

镜像ID:前文报错的镜像ID

6、然后用ssh 直接登录docker容器(可以xshell):

ssh root@ip -p 2222#密码为前文设置的密码

ip: 为宿主主机的ip,而不是docker容器的ip

端口:就是上面的2222

用户名: root

密码: 就是上面password部分设置的密码

7.关掉该容器:

在宿主机通过 docker stop 容器id 即可关闭

启动容器 docker start 容器id

启动后,就可以用xshell进行连接。

其它:

1. 进入容器执行/usr/sbin/sshd -p 2222,启动一个端口
2. 容器间可通过该端口ssh登录,ssh ip -p 12345
3. 如果需要免密,docker run容器时,docker -v /root/.ssh 挂载.ssh目录
4. 容器间mpirun执行,mpirun -np .... --hostfile hosts -mca plm_rsh_args "-p 12345" ./exe

参考文章:ssh 直接登录docker容器 (SSH连接docker容器)


点击全文阅读


本文链接:http://zhangshiyu.com/post/175377.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1