我们知道进入docker容器可以使用attach、exec等命令来操作和管理,但是如果需要远程登录并管理容器,就需要ssh服务的支持了。
1、基于commit命令创建
docker提供了commit命令,支持用户提交自己对容器的修改,并生成新的镜像。
格式:
#docker commit CONTAINER [REPOSITORY[:TAG]]
我们今天使用的ubuntu14.04系统来测试:
运行ubuntu14.04:
#docker run -dit ubuntu:14.04 /bin/bash
安装和配置ssh服务:
#apt-get update #apt-get install openssh-server
#service ssh start
#netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 3064/sshd
tcp6 0 0 :::22 :::* LISTEN 3064/ssh
可以看到,ssh服务已经起来了,端口为22.
创建一个启动ssh服务的脚本并添加可执行权限:
#vi /run.sh 内容: #!/bin/bash /usr/sbin/sshd -D 保存退出 #chmod 755 /run.sh
退出容器,然后将刚刚的容器用docker commit 命令来保存为一个新的sshd:ubuntu镜像:
#docker commit f5614a29f767 sshd:ubuntu
sha256:f0fc45b72c9abb90e929a7557692f5fb9c3953426f4b13e14d16a9c3b5158a04
查看我们本地的images信息:
#docker images REPOSITORY TAG IMAGE ID CREATED SIZE sshd ubuntu f0fc45b72c9a 5 seconds ago 243MB ubuntu 16.04 a51debf7e1eb 2 days ago 116MB debian latest 4879790bd60d 6 days ago 101MB test 1 ea2185f851a4 8 days ago 244MB buile_repo/frist_image latest a209b4fcb225 8 days ago 244MB 10.30.234.212:5000/ubuntu14_ruby latest fd2e33845352 3 weeks ago 157MB
可以看到我们刚刚commit的带有sshd的image。