操作步骤
●下载基础镜像
●建立工作目录.
●创建并编写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)
来源:CSDN
作者:不甘平凡※
链接:https://blog.csdn.net/LS19990712/article/details/103732467