Docker学习笔记(2)——创建实现SSH服务的Docker容器

为镜像添加SSH服务

单纯进入本地容器可以通过attach,exec的方法,但是远程登录到容器内则需要SSH(Secure Shell)的支持。

1.通过docker commit命令创建

进入容器
$ docker run -it ubuntu:latest /bin/bash
更新apt缓存,安装openssh-server(命令如果一遍不成功就再来第二遍)
# apt-get update; apt-get install openssh-server -y
若需要正常启动SSH服务,则目录/var/run/sshd必须存在,并启动SSH服务
# mkdir -p /var/run/sshd
# /usr/sbin/sshd -D &
此时可以使用netstat工具查看,容器22端口已经处于监听状态
# netstat -tunlp(apt-get install net-tools安装netstat)
修改SSH服务安全登录配置,取消pam登录限制(用到sed编辑器)
# sed -ri 's/session    required    pam_loginuid.so/#session    required    pam_loginuid.so/g' /etc/pam.d/sshd
相当于把整行注释掉
现在本地主机获取宿主机公钥
$ sudo ssh-keygen -t rsa
$ sudo cat /root/.ssh/id_rsa.pub(创建在/root/.ssh/下面)
将那个文件的内容(公钥)复制到容器下面文件里
# mkdir root/.ssh
# vi /root/.ssh/authorized_keys
创建自动启动SSH服务的可执行文件run.sh
# vi /run.sh
# chmod +x run.sh
其中,run.sh脚本内容如下
#!/bin/bash
/usr/sbin/sshd -D
最后退出容器
# exit
保存镜像
$ docker commit fc1936ea8ceb sshd:ubuntu 

2.通过Dockerfile创建实现ssh服务的镜像

创建工作目录,在其中创建Dockerfile文件和run.sh文件
$ mkdir sshd_ubuntu
$ cd sshd_ubuntu/
$ touch Dockerfile run.sh
编写run.sh脚本和authorized_keys文件
$ vi run.sh
#!/bin/bash
/usr/sbin/sshd -D
$ ssh-keygen -t rsa
...
$ cat ~/.ssh/id_rsa.pub > authorized_keys
(生成到sshd_ubuntu文件夹下)
编写Dockerfile文件:
FORM ubuntu:latest

MAINTAINER docker_user (user@docker.com)

RUN apt-get update
RUN apt-get install -y openssh-server
RUN mkdir -p /var/run/sshd
RUN mkdir -p /root/.ssh

RUN sed -ri 's/session    required    pam_loginuid.so/#session    required    pam_loginuid.so/g' /etc/pam.d/sshd

(ADD命令,从Dockerfile所在目录里复制authorized_keys文件添,复制到容器目录下的/root/.ssh/authorized_keys)
ADD authorized_keys /root/.ssh/authorized_keys
ADD run.sh /run.sh
RUN chmod 755 /run.sh

EXPOSE 22

CMD ["/run.sh"]
创建镜像,在sshd_ubuntu目录下,使用docker build命令来创建镜像,需要注意最后还有一个”.”
$ cd sshd_ubuntu
$ docker build -t sshd:dockerfile .

通过docker images查看镜像:

发现dockerfile创建的镜像大小相比更小一些
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值