小娜老师的讲义-创建支持SSH服务的镜像

(1) 首先以交互的方式运行我们本地的ubuntu容器
docker run -it ubuntu:v1 /bin/bash

(2) 尝试使用sshd命令,会发现容器中没有安装该服务。
sshd
bash: sshd: command not found
如果直接install会安装不上,因为还没有更新,所以要先update一下
(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服务器默认监听的端口),已经处于监听状态:
apt-get install net-tools
如果没有netstat命令,就需要安装net-tools
这里写图片描述

(5)修改SSH服务的安全登陆配置,取消pam登陆限制
sed -ri ‘s/session required pam_loginuid.so/#session required pam_loginuid.so/g’ /etc/pam.d/sshd
在远端客户端机器(即,非容器机器)执行命令 ssh-keygen -t rsa 生成rsa的公私密钥对,然后把公钥的信息拷贝到运行ubuntu容器机器的授权文件中:
这里写图片描述
mkdir /root/.ssh
vi /root/.ssh/authorized_keys # 粘贴客户端的公钥信息(id_rsa.pub)到这个文件中

(6) 创建自启动SSH服务的可执行文件run.sh
vi /run.sh
chmod +x /run.sh(为.sh文件添加可执行权限)
脚本内容如下:
#!/bin/bash
/usr/sbin/sshd -D

(7) 最后退出容器,并将当前修改后的容器保存为一个新的镜像
在宿主主机执行命令 docker ps -a 查看容器的运行状态,可以得到刚才退出容器的Container id,记住id前三位。
然后执行提交命令,保存新的镜像:
docker commit $(container id前三位) sshd:ubuntu
此命令提交后,会生成一个新的镜像id*(image id)和新的镜像 sshd:ubuntu(支持ssh服务的ubuntu镜像)
最后,可以使用 docker images 查看本地的镜像是否已经包含我们新创建的镜像
这里写图片描述

(8) 使用新镜像和配置端口映射
启动容器,并添加端口映射 10022(宿主主机端口)—> 22(容器内部SSH服务监听端口):
docker run -p 10022:22 -d sshd:ubuntu /run.sh
启动后,可以在宿主主机上看到容器运行的详细信息:
这里写图片描述

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

补充说明:
对一个镜像打一个新的tag的方法(只是tag不一样,实际是同一个image,因为image id是一样的):
docker tag (imageid)sshd:ubuntutagdockerrm (container id)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值