本教程主要在原有centos镜像的基础上,打包新的包含有ssh等基础软件的镜像,方便开发时向其他用户进行分配和使用。
首先,假设您已经具有docker的基础知识,如果您不够熟悉,可以参考《Docker — 从入门到实践》一书,或者其他教程。
首先,我们可以建立一个新的目录,centos-ssh
,然后进入目录,建立Dockerfile
文件,
内容如下,
# 基础镜像
FROM hub.c.163.com/library/centos:7.2.1511
# 基本个人信息
MAINTAINER liqingfeng liqingfengzzu@163.com
#替换为网易源,其中CentOS7-Base-163.repo为网易的库文件
ADD CentOS7-Base-163.repo /etc/yum.repos.d/CentOS-Base.repo
#安装常用软件
RUN yum install -y sudo vim tar wget curl rsync bzip2 iptables tcpdump less net-tools lsof sysstat cronie passwd openssl openssh-server openssh-clients screen strace telnet unzip python-setuptools\
&& yum clean all
#生成ssh所需要的密钥等
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N ''
RUN ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''
RUN ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N ''
#允许RSA认证
RUN echo "RSAAuthentication yes" >> /etc/ssh/sshd_config
# 允许公钥认证
RUN echo "PubkeyAuthentication yes" >> /etc/ssh/sshd_config
# 安装supervisor,并设置子目录配置文件夹位置
RUN easy_install supervisor\
&& cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime\
&& mkdir -p /etc/supervisor/conf.d/\
&& /usr/bin/echo_supervisord_conf > /etc/supervisord.conf\
&& echo [include] >> /etc/supervisord.conf\
&& echo 'files = /etc/supervisor/conf.d/*.conf' >> /etc/supervisord.conf\
&& yum clean all
#ssh的supervisor配置
COPY sshd.conf /etc/supervisor/conf.d/sshd.conf
#设置密码,注意,这里设置的默认密码为123456&*
RUN echo 'root:123456&*' | chpasswd
#暴露22端口
EXPOSE 22
#启动
CMD ["/usr/bin/supervisord"]
其中,这里分别用到了两个额外的文件,分别是网易源的配置文件CentOS7-Base-163.repo
,另外一个ssh的supervisor配置文件sshd.conf
,
前者可以在这里找到对应的网易配置,如我们选择的是Centos7配置,下载后,需要放在与Dockfile
同样的文件夹下。
另外,sshd.conf
文件则如下所示,
[supervisord]
nodaemon=true
[program:sshd]
command=/usr/sbin/sshd -D
当三个文件都准备好后,可以运行构建命令,开始构建
docker build -t my/centos .
生成后,可以用docker images
查看镜像。
注意,我们在Dockfile
中配置了默认的账号和密码,如果需要改变,则注意更改。
启动相关的docker容器后,即可通过ssh进行访问。