构建Ssh镜像与Systemctl镜像

断了今生、忘了曾经 提交于 2019-12-30 22:50:46

操作步骤 

●下载基础镜像
●建立工作目录.
●创建并编写Dockerfile文件
●生成镜像
●启动容器并修改root密码
●Build镜像命令

具体操作:

//创建目录
mkdir sshd
cd sshd

vim Dockerfile

#基于基础的镜像
FROM centos
#维护镜像的用户信息
MAINTAINER The CentOS Project <cloud-centos>
#安装必要环境包
RUN yum -y update
RUN yum -y install openssh* net-tools lsof telnet passwd
#给root用户设置密码
RUN echo '123456' | passwd --stdin root
#修改配置文件
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模块中相应功能
RUN sed -i '/^session\s\+repuired\s\+pam_loginuid.so/s/^/#/' /etc/pam.d/sshd
#创建目录并授权赋予权限
RUN mkdir -p /root/.ssh && chown root.root /root && chmod 700 /root/.ssh
#开启22端口
EXPOSE 22
#启动服务
CMD ["/usr/sbin/sshd","-D"]

//生成镜像
docker build -t sshd:new .

//启动容器并修改root密码
docker run -d -P sshd:new

//进入容器  
ssh localhost -p 32776
The authenticity of host '[localhost]:32776 ([::1]:32776)' can't be established.
RSA key fingerprint is SHA256:zwkzjtaFxT6cfncqiIuQTyU+dw6LOKQfwUfJ5s8Myis.
RSA key fingerprint is MD5:98:31:26:25:13:1f:e0:93:c3:ad:83:48:15:6a:55:dc.
Are you sure you want to continue connecting (yes/no)? yes          //输入yes
Warning: Permanently added '[localhost]:32776' (RSA) to the list of known hosts.
root@localhost's password:             //输入密码123456
[root@4d254aa19099 ~]#                //进入到容器 里

基于ssh镜像基础上进行操作:

mkdir systemctl
cd systemctl

FROM sshd:new
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-yser.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"]

docker build -t local/c7-systemd:latest .

//privateged container内的root拥有真正的root权限。否则,container内的root只是外部的一个普通用户权限。
docker run --privileged -ti -v /sys/fs/cgroup:/sys/fs/cgroup:ro local/c7-systemd:latest /sbin/init

//打开新的终端,进入容器
docker exec -it ec75f55ad6c6 bash

//说明可以使用systemctl命令
systemctl status sshd
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; disabled; vendor preset: en>
   Active: inactive (dead)
     Docs: man:sshd(8)
           man:sshd_config(5)

 

 

 

 

 

 

 

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!