美文网首页
镜像添加SSH服务

镜像添加SSH服务

作者: 涵仔睡觉 | 来源:发表于2019-06-22 19:19 被阅读0次

《Docker技术入门与实践》笔记

为了解决远程管理容器的问题,需要SSH的支持。为镜像添加SSH功能,一般有两种方式:

  • 基于docker commit命令创建镜像
  • 基于Dockerfile创建镜像

1 基于docker commit命令创建镜像

docker commit命令支持用户提交对指定容器的修改,并生成新的镜像。格式:

$ docker commit CONTAINER [REPOSITORY[:TAG]]

因此,我们只需要使用需要添加SSH功能的镜像创建一个容器,在容器中添加SSH服务,并使用docker commit命令提交并生成新的支持SSH功能的镜像。

以在Ubuntu:14.04镜像中增加SSH功能为例,主要步骤为:

// 创建一个容器
$ docker run -it ubuntu:14.04 /bin/bash

// 更新apt缓存
# apt-get update

// 为容器安装和配置SSH功能
# apt-get install openssh-server -y

// 启动SSH之前,必须确保/var/run/sshd目录存在,手动创建
# mkdir -p /var/run/sshd

// 启动SSH服务
# /usr/sbin/sshd -D &

// 查看容器的22端口,已经处于LISTEN状态
# netstat -tunlp

// 注释/etc/pam.d/sshd文件中的session 
// required pam_loginuid.so行,取消pam登陆限制
# sed -ri 's/session required pam_loginuid.so/#session required pam_loginuid.so/g' /etc/pam.d/sshd

// 增加本地主机的公钥信息
# mkdir root/.ssh
# vi /root/.ssh/authorized_keys

// 创建自动启动SSH功能的可执行文件run.sh
# vi /run.sh
        #!/bin/bash
        /usr/sbin/sshd -D
// 添加可执行权限
# chmod +x run.sh

// 容器修改完成,退出容器
# exit

// 提交并生成一个新的镜像sshd:ubuntu
$ docker commit ffaed(容器ID) sshd:ubuntu

// 使用镜像sshd:ubuntu启动容器,并将本地主机的10022端口
// 映射到容器的SSH服务监听端口22,同时使该容器启动ssh服务:
$ docker run -p 10022:22 -d sshd:ubuntu /run.sh

// 查看本地主机的ip地址(192.168.118.1)
$ ipconfig

// 从本地主机,通过SSH访问10022端口登陆到容器中
$ ssh root@192.168.118.1 -p 10022

2 基于Dockerfile创建镜像

使用Dockerfile也可以在一个镜像的基础上创建一个包含SSH功能的镜像。

# 创建sshd_ubuntu工作目录
$ mkdir sshd_ubuntu
$ cd sshd_ubuntu

# windows下cmd创建Dockerfile和run.sh文件
$ type nul > Dockerfile
$ type nul > run.sh

# 将.ssh目录下的id_rsa.pub的内容复制到sshd_ubuntu目录下的authorized_keys文件中
$ type .ssh\id_rsa.pub > sshd_ubuntu\authorized_keys

# 在sshd_ubuntu目录下使用Dockerfile创建新镜像ssh:dockerfile。
$ cd sshd_ubuntu
$ docker build -t ssh:dockerfile .
Successfully built XXX

// 使用镜像sshd:ubuntu启动容器,并将本地主机的10122端口
// 映射到容器的SSH服务监听端口22,同时使该容器启动ssh服务:
$ docker run -p 10122:22 -d sshd:ubuntu /run.sh

// 查看本地主机的ip地址(192.168.118.1)
$ ipconfig

// 从本地主机,通过SSH访问10122端口登陆到容器中
$ ssh root@192.168.118.1 -p 10122

相关文章

网友评论

      本文标题:镜像添加SSH服务

      本文链接:https://www.haomeiwen.com/subject/xnivqctx.html