前言
根据《Docker技术入门与实战》一书,进行实验操作。
在kali(宿主机)上创建支持ssh服务的镜像的第二种方法。
创建镜像
使用Dockerfile
先创建sshd_ubuntu工作目录,在其中创建Dockerfile和run.sh文件。
编写run.sh脚本和authorized_keys文件
run.sh文件内容为
#!/bin/bash
/usr/sbin/sshd -D
同样在宿主机上生成SSH密钥对,并创建authorized_keys文件。
编写Dockerfile文件
#设置继承镜像
FROM ubuntu:14.04
#作者信息
MAINTAINER from csroad
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 requiredpam_loginuid.so/#session required pam_loginuid.so/g' /etc/pam.d/sshd
#复制配置文件到指定位置
RUN authorized_keys /root/.ssh/authorized_keys
ADD run.sh /run.sh
RUN chmod 755 /run.sh
#开放端口
EXPOSE 22
#设置自启动命令
CMD ["/run.sh"]
FROM 继承的镜像
MAINTAINER 作者
RUN执行的命令
ADD拷贝到镜像
EXPOSE暴露的端口
CMD指定默认容器主进程的启动命令。
编写Dockerfile文件就是相当于把手动创建SSH服务的步骤使用命令集合在一起。
保存镜像
docker build -t sshd:dockerfile .
. 表示使用当前目录中的Dockerfile
命令执行成功。
运行容器
docker run -d -p 10122:22 sshd:dockerfile
docker ps
宿主机尝试进行连接
ssh 192.168.1.200 -p 10122