原文地址,转载请注明出处:http://blog.csdn.net/qq_34021712/article/details/73379851    ©王赛超

前言:

使用ssh连接docker容器,需要给docker容器先分配好ip之后才可以开启ssh服务,才能使用ssh连接

参考文章:给docker容器分配静态ip地址

操作过程:

第一步:进入一个已经运行的docker容器中

docker exec -it 8ac5d5bd2408 /bin/bash


第二步:设置root密码

[root@8ac5d5bd2408 /]# passwd    #如果没有该命令 使用yum install passwd安装
Changing password for user root.
New password:                    #设置新密码
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:             #确认新密码
passwd: all authentication tokens updated successfully.


第三步:安装Openssh
yum -y install openssh-server
yum -y install openssh-clients

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

$ vi /etc/ssh/sshd_config

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


第五步:重启ssh服务,并设置开机启动:
$ service sshd restart
$ chkconfig sshd on

重启sh服务时 报错,找不到命令bash: service: command not found
解决方法:yum install initscripts  

然后再次启用 报错Failed to get D-Bus connection: Operation not permitted
网上查了一下说是centos7的坑
解决:在启用docker容器时 添加/usr/sbin/init
docker run -i -d --net=none --name javadocker3 -v /usr/local/software/:/mnt/software/ 3bee3060bfc8 /usr/sbin/init


第六步:测试
我是使用ssh shell client 连接的,测试通过,可以使用!

第七步:保存为一个新的镜像,以后基于该镜像启动,不用再进行此操作了
docker commit -m 'base' -a 'wang sai chao' a142e478cbeb  java-base:base

其中

          -m 来指定提交的说明信息,跟我们使用的版本控制工具一样;

          -a 可以指定更新的用户信息;之后是用来创建镜像的容器的ID;

          最后指定目标镜像的仓库名和 tag 信息。创建成功后会返回这个镜像的 ID 信息。


Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐