本文主要是介绍Dockerfile 基于centos7镜像搭建sshd服务与systemctl命令,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- SSH Dockerfile
- Systemctl Dockerfile
SSH Dockerfile
#Dockerfile 配置
FROM centos:7
MAINTAINER This is centos:ssh
#安装ssh和其他服务软件包
RUN yum update && yum install -y openssh* net-tools lsof telnet passwd
#修改root用户密码
RUN echo "123456" | passwd --stdin root
#设置不使用ssh服务端的pam模块
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config
#创建非对称秘钥
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
#关闭pam.d的ssh会话模块
RUN sed -i '/^session\s\+required\s\+pam_loginuid.so/s/^ /#/' /etc/pam.d/sshd
#创建ssh工作目录并设置权限
RUN mkdir -p /root/.ssh && chown root.root /root && chmod 700 /root/.ssh
#暴露端口
EXPOSE 22
#开启sshd服务
CMD ["/usr/sbin/sshd","-D"]
#创建容器
docker build -t centos:ssh .
#运行容器
docker run -d -P centos:ssh
#测试,输入密码即可
ssh localhost -p 32768
Systemctl Dockerfile
#基于sshd服务搭建systemctl命令
FROM centos:ssh
#设置变量
ENV container docker
#遍历进入的目录进行匹配systemd-tmpfiles-setup.service,然后进行删除操作
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/*;
#创建卷,便于挂载到host
VOLUME ["/sys/fs/cgroup"]
#初始化
CMD ["/usr/sbin/init"]
#创建容器
docker build -t centos:systemctl .
#运行容器(--privileged 让容器内的root拥有真正的root权限)
docker run --privileged -it -v /sys/fs/cgroup:/sys/fs/cgroup:ro centos:systemctl /sbin/init
#在另一个窗口打开测试
docker exec -it 606e899db931 bash
systemctl status sshd
这篇关于Dockerfile 基于centos7镜像搭建sshd服务与systemctl命令的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!