本章目录
前提:
已经部署安装docker,能够正常使用即可
使用一台centos7的虚拟机,关闭防火墙和和核心防护
一:dockerfile构建镜像
1.1 Dockerfile命令解释
1.2 构建SSH镜像
1.创建目录,编写Dockerfile
[root@localhost ~]# mkdir sshd
[root@localhost ~]# cd sshd
[root@localhost ~]# vim Dockerfile
FROM centos:7 //指定基础镜像
MAINTAINER The CentOS Project <cloud-centos> //镜像的维护人信息
RUN yum -y update //更新容器yum源
RUN yum -y install openssh* net-tools lsof telnet passwd //部署环境工具
RUN echo '123456' | passwd --stdin root //设置root管理员账户登录密码
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/ssh_config //禁用ssh中的pam验证
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key //创建非对称密钥,并指定文件路径
RUN sed -i '/^session\s\+required\s\+pam_loginuid.so/s/^/#/' /etc/pam.d/sshd //禁用pam的ssh的pam会话模块
RUN mkdir -p /root/.ssh && chown root.root /root && chmod 700 /root/.ssh //创建ssh工作目录和权限设置
EXPOSE 22
CMD ["/usr/sbin/sshd","-D"] //容器加载时启动sshd服务
2.生成镜像,名称为sshd:new
[root@localhost sshd]# docker build -t sshd:new . //生成镜像
。。。省略内容,出现Successfully即安装成功
3.启动容器
[root@localhost sshd]# docker run -d -P sshd:new
[root@localhost sshd]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
adafc81ccb30 sshd:new "/usr/sbin/sshd -D" 6 seconds ago Up 5 seconds 0.0.0.0:32768->22/tcp distracted_pasteur
//-P:自动生成一个端口号,并且第一次产生的端口号为32768
4.远程登录测试
[root@localhost sshd]# ssh localhost -p 32768
。。。省略
Are you sure you want to continue connecting (yes/no)? yes //输入yes
root@localhost's password: //输入你设的密码,我设的是123456
[root@adafc81ccb30 ~]# //登录成功
1.3 构建systemctl镜像
1.创建目录,编写Dockerfile
[root@localhost sshd]# mkdir /systemctl
[root@localhost sshd]# cd /systemctl
[root@localhost systemctl]# vim Dockerfile
FROM sshd:new
ENV container docker 设置环境变量,container和docker
RUN (cd /lib/systemd/system/sysinit.target.wants/;for i in *;do [ $i ==