想通过Dockerfile来创建一个可以支持SSH服务的镜像一般步骤含哪些?先创建工作目录:
# mkdir sshd_ubuntu
# ls
在其中继续创建Dockerfile和run.sh文件:
# cd sshd_ubuntu/
# touch Dockerfile run.sh
# ls
再编写run.sh脚本和authorized_keys文件
# vi run.sh
写入内容
#! /bin/bash
/usr/sbin/sshd –D
在宿主机中生成SSH密钥对,并创建authorized_keys。
# ssh-keygen –t rsa
生成公钥/私钥rsa密钥对。
输入要保存密钥的文件(/root/.ssh/id rsa):
id rsa
[rootalocalhost sshd ubuntu]# ssh-keyqen -t rsa
输入密码(如果没有密码,请填空):idrsa
再次输入相同密码:idrsa
# cat ~/sshd_ubuntu/id_rsa.pub >authorized_keys
# ls
[root@localhost sshd ubuntul# ls
authorized keys
Dockerfile id rsa id rsa.pub run.sh
然后就可以开始编写Dockerfile。
#设置继承镜像
FROM ubuntu
#提供一些作者的信息
MAINTAINER from www.dockerpool.com by Aiden
#下面开始运行命令,此处更改Ubuntu的源为国内163的源
RUN echo "deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse" > /etc/apt/sources.list
RUN echo "deb http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse" >> /etc/apt/sources.list
RUN echo "deb http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse" >> /etc/apt/sources.list
RUN echo "deb http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse" >> /etc/apt/sources.list
RUN echo "deb http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse" >> /etc/apt/sources.list
RUN apt-get update
#安装ssh服务
RUN apt-get install -y openssh-server
RUN mkdir -p /var/run/sshd
RUN mkdir -p /root/.ssh
#取消pam限制
RUN sed -ri 's/session required pam_loginuid.so/#session required pam_loginuid.so/g' /etc/pam.d/sshd
#复制配置文件到相应位置,并赋予脚本可执行权限
ADD authorized_keys /root/.ssh/authorized_keys
ADD run.sh /run.sh
RUN chmod 755 /run.sh
#开放端口
EXPOSE 22
#设置自启动命令
CMD ["/run.sh"]
创建镜像,要注意在最后一个“.”表示使用当前目录中的Dockerfile
# docker build –t ssh:dockerfile .
Step 16/17 : EXPOSE 22
--> Running in 8127c0773eb6
Removing intermediate container 8127c0773eb6
--> 43deeebb36b0
Step 17/17 : CMD ["/run.sh"]
---> Running in 71a583b3lea4
Removing intermediate container 71a583b31ea4
---> 18d5664af464
Successfully built 18d5664af464
Successfully tagged sshd:dockerfile
命令执行完,可以看到Successfully built xxx表示镜像创建成功。在本地查看镜像sshd:dockerfile镜像已存在:
#docker images
测试镜像和运行内存,使用刚才创建sshd:dockerfile镜像来运行一个容器。直接启动镜像,映射容器的22端口到本地10122端口。
# docker run –d –p 10122:22 sshd:dockerfile
# docker ps
在宿主机新打开一个终端,连接到新建的容器
# ssh 192.168.56.33 –p 10122
这样就可以创建好镜像了如需帮助,请联系华纳云。