简介
有需求在镜像中需要开启SSH服务,本文介绍如何在将SSH服务器安装到镜像中。
镜像制作
先选择一个基础镜像,然后安装systemd及openssh服务(注意要清理安装遗留的一些问文件,尽量减小镜像尺寸)。
1、 Dockerfile:
要启动SSH需要挂载本地系统的/sys/fs/cgroup
,及启动时需要使用init
启动。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| FROM centos MAINTAINER “Yourname" <youremail@address.com> ENV container docker RUN yum -y update \ && yum -y install openssh-server \ && yum -y install openssh-client \ && yum -y install systemd \ && yum clean all \ && (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done) \ && rm -f /lib/systemd/system/multi-user.target.wants/* \ && rm -f /etc/systemd/system/*.wants/* \ && rm -f /lib/systemd/system/local-fs.target.wants/* \ && rm -f /lib/systemd/system/sockets.target.wants/*udev* \ && rm -f /lib/systemd/system/sockets.target.wants/*initctl* \ && rm -f /lib/systemd/system/basic.target.wants/* \ && rm -f /lib/systemd/system/anaconda.target.wants/* RUN systemctl enable sshd RUN echo "your root password" | passwd --stdin root VOLUME [ "/sys/fs/cgroup" ] CMD [ "/usr/sbin/init" ]
|
2、 制作镜像:
通过Docker生成新的镜像.
1
| $ docker build --rm -t centos-sshd:7.3 - < [Dockerfile name]
|
3、 启动容器:
启动容器需要使用--privileged
参数。
1
| $ docker run --privileged -ti -e container=docker -p 127.0.0.1:30022:22 centos-sshd:7.3
|