摘要:通常Linux系统管理员通过SSH服务来管理OS,但Docker的很多镜像是不带SSH服务的,可以通过attach(遇到假死的现象)或者exec(目前测试ok)的方法进入容器来管理,但是这些命令都无法解决远程管理容器的问题,因此,当需要远程登陆到容器内进行一些操作的时候,就需要SSH的支持了。本文记录如何使用docker commit创建一个带有SSH服务的ubuntu镜像。

(1) 首先以交互的方式运行我们本地的ubuntu容器

docker run -it ubuntu:14.04 /bin/bash

(2) 尝试使用sshd命令,会发现容器中没有安装该服务。

sshd

bash: sshd: command not found

(3) 使用apt包管理器安装openssh-server

apt-get update


apt-get install openssh-server

(4) 安装和配置SSH服务

要正常启动SSH服务,需要目录/var/run/sshd存在,手动创建它,并启动服务:

mkdir -p /var/run/sshd

/usr/sbin/sshd -D &

此时查看容器的22端口(SSH服务器默认监听的端口),已经处于监听状态:

创建支持SSH服务的Docker镜像的方法

(5) 修改SSH服务的安全登陆配置

在远端客户端机器(即,非容器机器)执行命令 ssh-keygen -t rsa 生成rsa的公私密钥对,然后把公钥的信息拷贝到运行ubuntu容器机器的授权文件中:

mkdir /root/.ssh

vi /root/.ssh/authorized_keys # 粘贴客户端的公钥信息

(6) 创建自启动SSH服务的可执行文件run.sh

vi /run.sh

chmod +x /run.sh

脚本内容如下:

#!/bin/bash

/usr/sbin/sshd -D

(7) 最后退出容器,并将当前修改后的容器保存为一个新的镜像

在宿主主机执行命令 docker ps -a 查看容器的运行状态,可以得到刚才退出容器的container id,记住id前三位。

然后执行提交命令,保存新的镜像:

docker commit $(container id前三位) ubuntu_sshd_gerry:14.04

此命令提交后,会生成一个新的镜像id*(image id)和新的镜像 ubuntu_sshd_gerry:14.04(支持ssh服务的ubuntu镜像)

最后,可以使用 docker images 查看本地的镜像是否已经包含我们新创建的镜像 ubuntu_sshd_gerry:14.04。

创建支持SSH服务的Docker镜像的方法

(8) 使用新镜像和配置端口映射

启动容器,并添加端口映射 10022(宿主主机端口)---> 22(容器内部SSH服务监听端口):

docker run -p 10022:22 -d ubuntu_sshd_gerry:14.04 /run.sh

启动后,可以在宿主主机上看到容器运行的详细信息:

创建支持SSH服务的Docker镜像的方法

(9) 在宿主主机,或者其他远程主机,使用SSH访问10022端口来登陆容器,测试OK

创建支持SSH服务的Docker镜像的方法

补充说明:

对一个镜像打一个新的tag的方法(只是tag不一样,实际是同一个image,因为image id是一样的):

docker tag $(image id) ubuntu_sshd_gerry:14.04

然后将老的tag删除掉:

docker rm $(container id)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

标签:
SSH服务的Docker镜像,创建SSH服务的Docker镜像

免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
评论“创建支持SSH服务的Docker镜像的方法”
暂无“创建支持SSH服务的Docker镜像的方法”评论...

《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线

暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。

艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。

《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。