1.基于容器制作镜像
ssh例子:
[root@docker ~]# docker rm -f `docker ps -qa`
[root@docker ~]# docker run -it --name "oldguo_sshv1" centos:6.9 /bin/bash
[root@df8386465269 /]# passwd
mv /etc/yum.repos.d/*.repo /tmp
echo -e "[ftp]\nname=ftp\nbaseurl=ftp://10.0.0.110/pub/centos6\ngpgcheck=0">/etc/yum.repos.d/ftp.repo
yum makecache fast && yum install openssh-server -y
/etc/init.d/sshd start ----->重要:ssh第一次启动时,需要生成秘钥,生成pam验证配置文件
/etc/init.d/sshd stop
"hang" 运行sshd,并丢到后台
/usr/sbin/sshd -D
docker commit oldguo_sshv1 oldguo/sshd:v1
2.基于Dockerfile构建简易镜像
1)
例子: centos 6.9+SSH
[root@docker test]# cat dockerfile
FROM centos:6.9
RUN mv /etc/yum.repos.d/*.repo /tmp
RUN echo -e "[ftp]\nname=ftp\nbaseurl=ftp://10.0.0.100/pub\ngpgcheck=0">/etc/yum.repos.d/ftp.repo
RUN yum makecache fast && yum install openssh-server -y
RUN echo "123456"|passwd --stdin root
RUN /etc/init.d/sshd start
EXPOSE 22
CMD ["/usr/sbin/sshd","-D"]
2)双服务 sshd+httpd +volumns
mkdir -p /opt/Dockerfile/app/ssh_httpd_vol
[root@docker ssh_httpd]# vim Dockerfile
FROM centos:6.9
RUN mv /etc/yum.repos.d/*.repo /tmp
RUN echo -e "[ftp]\nname=ftp\nbaseurl=ftp://10.0.0.110/pub/centos6\ngpgcheck=0">/etc/yum.repos.d/ftp.repo
RUN yum makecache fast && yum install openssh-server -y
RUN yum install -y httpd
RUN echo "123456"|passwd --stdin root
RUN /etc/init.d/sshd start
EXPOSE 22
EXPOSE 80
ADD ssh_httpd.sh /opt/ssh_httpd.sh
VOLUME /var/www/html
CMD ["/bin/bash","/opt/ssh_httpd.sh"]
[root@docker ssh_httpd]# cat ssh_httpd.sh
#!/bin/bash
/etc/init.d/httpd start
/usr/sbin/sshd -D
docker build -t "oldguo/ssh_httpd_vol:v1" .
3)centos7.5+sshd
方法1:
## Centos7.5
[root@docker sshd]# cat dockerfile
FROM centos:7.5.1804
FROM centos:7.5.1804
RUN mv /etc/yum.repos.d/*.repo /tmp
RUN echo -e "[ftp]\nname=ftp\nbaseurl=ftp://10.0.0.100/pub\ngpgcheck=0">/etc/yum.repos.d/ftp.repo
RUN yum install -y openssh-server
RUN yum install -y openssh-clients
RUN yum install -y sed
RUN yum install net-tools* -y
RUN yum install iproute-* -y
RUN yum install NetworkManager -y
RUN mkdir /var/run/sshd
RUN echo 'UseDNS no' >> /etc/ssh/sshd_config
RUN sed -i -e '/pam_loginuid.so/d' /etc/pam.d/sshd
RUN echo 'root:123456' | chpasswd
RUN /usr/bin/ssh-keygen -A
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
方法二:
##制作支持systemd的7.5镜像
https://forums.docker.com/t/any-simple-and-safe-way-to-start-services-on-centos7-systemd/5695/10
https://access.redhat.com/articles/754933
FROM centos:7.5.1804
ENV container docker
RUN (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/*;
VOLUME [ "/sys/fs/cgroup" ]
CMD ["/usr/sbin/init"]
FROM oldguo/centos7.5:v1
RUN mv /etc/yum.repos.d/*.repo /tmp
RUN echo -e "[ftp]\nname=ftp\nbaseurl=ftp://10.0.0.100/pub\ngpgcheck=0">/etc/yum.repos.d/ftp.repo
RUN yum makecache fast
RUN yum install -y openssh-server
RUN yum install -y openssh-clients
RUN yum install -y sed
RUN yum install net-tools* -y
RUN yum install iproute-* -y
RUN yum install NetworkManager -y
RUN echo 'root:123456' | chpasswd
RUN systemctl enable sshd
EXPOSE 22
CMD ["/usr/sbin/init"]
测试
docker run -tid --privileged=true --name testssh -v /sys/fs/cgroup:/sys/fs/cgroup:ro -p 2022:22 test:v1
5074

被折叠的 条评论
为什么被折叠?



