docker建立容器以后,可以通过宿主机器直接登陆容器,远程的话就需要首先远程登录宿主机,然后再登录容器。 在实际操作中在多个容器切换的话,还是没有直接通过ssh远程登录容器来得方便!
思路的话其实很简单,有两种:
- 通过现有容器安装ssh,然后通过commit生成新的镜像。
- 通过dockerfile直接建立新的ssh镜像
第二种方法地址:《Docker 镜像添加SSH服务之dockerfile(十九)》
1.通过commit制作新的镜像
1、找到一个系统镜像。我们以centos为例。
docker pull centos
2、创建容器。
docker run -itd -p 8001:22 --name dongzao --privileged=true centos:latest /usr/sbin/init
使用 --privileged=true 运行特权模式 ,主要用于容器内的systemctl 命令使用的问题。
3、登陆容器
docker exec -it dongzao /bin/bash
4、更新容器
yum -y update
yum install -y vim
5、安装ssh
yum install -y openssl openssh-server
6、编辑ssh配置文件
vim /etc/ssh/sshd_config
修改一下参数,图中是已经修改好的。
其他的都不需要动了。
7、设置root密码
容器启动以后root的密码我们不知道,就只能修改了。
echo "root:123456"|chpasswd
使用这样修改密码是应为 passwd 根本就无法使用。
8、启动ssh
systemctl start sshd # 启动ssh
ssytemctl enable sshd # 开机启动
测试登录
9、生成ssh镜像
dockers commit 容器ID 新镜像名称
10、测试新的镜像
我们使用新的镜像生成一个容器。
docker run -itd -p 8005:22 --name zabbx --privileged=true ssh-centos /usr/sbin/init
测试可以登录
注意,上面的镜像创建容器开机启动ssh需要加上--privileged=true。
评论区