[root@localhost ~]
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos7 7.3.1611 d5ebea14da54 2 weeks ago 311 MB
<none> <none> d5c154b612c8 2 weeks ago 311 MB
test
latest ecefde07358f 11 weeks ago 599.6 MB
learn
/ping
latest fea07d84b0df 4 months ago 196.7 MB
docker.io
/tomcat
latest ebb17717bed4 4 months ago 355.4 MB
docker.io
/centos
latest 980e0e4c79ec 6 months ago 196.7 MB
nginx 1.9 c8c29d842c09 9 months ago 182.7 MB
docker.io
/redis
2.8.19 dd9fe7db5236 22 months ago 110.7 MB
[root@localhost ~]
# docker run -i -t centos7:7.3.1611 /bin/bash
[root@a3c8baf6961e /]
# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
[root@a3c8baf6961e /]
# yum install wget vim
[root@a3c8baf6961e /]
# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
安装
ssh
服务端
[root@a3c8baf6961e /]
# yum cleal all
[root@a3c8baf6961e /]
# yum install passwd
[root@a3c8baf6961e /]
# yum install openssh-server
修改容器密码(提前yum -y reinstall cracklib-dicts)
[root@a3c8baf6961e /]
# echo "123456" |passwd --stdin root
产生公私钥
[root@a3c8baf6961e /]
# ssh-keygen -t rsa //一路回车
[root@a3c8baf6961e /]
# cd ~/.ssh/
[root@a3c8baf6961e .
ssh
]
# ls
id_rsa id_rsa.pub
[root@a3c8baf6961e .
ssh
]
# cp id_rsa.pub authorized_keys
[root@a3c8baf6961e .
ssh
]
# ls
authorized_keys id_rsa id_rsa.pub
执行sshd命令,有报错:
[root@a3c8baf6961e .
ssh
]
# /usr/sbin/sshd
Could not load host key:
/etc/ssh/ssh_host_rsa_key
Could not load host key:
/etc/ssh/ssh_host_dsa_key
Could not load host key:
/etc/ssh/ssh_host_ecdsa_key
Could not load host key:
/etc/ssh/ssh_host_ed25519_key
解决办法:
[root@a3c8baf6961e .
ssh
]
# ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key //均是一路回车
[root@a3c8baf6961e .
ssh
]
# ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
[root@a3c8baf6961e .
ssh
]
# ssh-keygen -t rsa -f /etc/ssh/ssh_host_ecdsa_key
[root@a3c8baf6961e .
ssh
]
# ssh-keygen -t rsa -f /etc/ssh/ssh_host_ed25519_key
再次执行sshd命令,如果没有报错,说明可以启动了
[root@a3c8baf6961e .
ssh
]
# /usr/sbin/sshd
[root@a3c8baf6961e .
ssh
]
#
-----------------------启动
ssh
,如果报错如下(这是centos7下的一个bug)-------------------------
[root@a3c8baf6961e .
ssh
]
# systemctl restart sshd.service
Failed to get D-Bus connection: Operation not permitted
这个报错在之前的文档里就已经提到过了
解决办法如下:
先把上面的容器关闭(docker stop container-
id
),然后重新启动容器,启动时加上参数--privileged(特权参数,也可以是--privileged=
true
,如果启动容器中挂载目录没有权限也可以添加此参数)和
/sbin/init
(代替
/bin/bash
),如下:
[root@localhost ~]
# docker run --privileged -i -t centos7:7.3.1611 /sbin/init
上面的容器启动后,会一直在卡着的状态中,先不用管,打开另一个终端窗口,查看容器
[root@localhost ~]
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
af40bd07fa0f centos7:7.3.1611
"/sbin/init"
28 seconds ago Up 28 seconds nauseous_shirley
然后按照容器的ID进去,这个时候再根据
/bin/bash
进入容器(前面加
exec
-it参数),接着重启
ssh
服务就ok了
[root@localhost ~]
# docker exec -it af40bd07fa0f /bin/bash
[root@af40bd07fa0f /]
# systemctl restart sshd.service
[root@af40bd07fa0f /]
# echo "123456" |passwd --stdin root //注意这里由于上述特殊情况重新启动了容器,之前创建的root密码无效了(这就相当于重新另起了一个容器),需要重新修改下root密码!!可以随便创建个用户,然后切换到root,测试下之前创建的root密码是否还有效!
--------------------------------------------------------------------------------------------------
查看
ssh
端口,发现22端口已经开启
[root@af40bd07fa0f /]
# ss -a|grep ssh
tcp LISTEN 0 128 *:
ssh
*:*
tcp LISTEN 0 128 :::
ssh
:::*
[root@af40bd07fa0f /]
# ss -ln|grep 22
u_dgr UNCONN 0 0 * 26884224 * 26885412
tcp LISTEN 0 128 *:22 *:*
tcp LISTEN 0 128 :::22 :::*