1:Dockerfile构建SSHD镜像(必须有网)
Ⅰ基于Dockerfile制作镜像时首先需要建立工作目录,作为生成镜像的工作目录,然后分别创建并编写Dockerfile文件、需要运行的脚本文件以及要复制到容器中的文件。
《1》:systemctl stop firewalld 关闭防火墙
《2》:iptables -F
《3》:setenforce 0
《4》:cat /etc/resolv.conf 关注DNS 地址
《5》:mkdir sshd 创建目录
《6》:cd sshd 切换目录
《7》:ssh-keygen 创建密钥对
《8》:cp /root/ .ssh/id_rsa.pub ./ 复制到当前目录下
《9》:vim Dockerfile 编写文件
《10》:写入:
FROM centos:7
MAINTAINER Crushlinux <crushlinux@163.com>
RUN yum -y install openssh-server net-tools openssh-devel lsof telnet
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
ADD id_rsa.pub /root/.ssh/authorized_keys
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
EXPOSE 22
CMD ["/usr/sbin/sshd" , "-D"]
注释:
#第一行必须指明基于的基础镜像
FROM centos:latest
#维护该镜像的用户信息
MAINTAINER The CentOS Project <cloud-ops@centos.org>
#镜像操作指令
#RUN yum -y update
RUN yum -y install openssh-server net-tools openssh-devel lsof telnet
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
#开启 22 端口
EXPOSE 22
#启动容器时执行指令
CMD ["/usr/sbin/sshd" , "-D"]
《11》:docker build -t sshd:new . 构建镜像(注:-t 是指定镜像名称,. 是在当前环境下配置构建)
注:报以下错时,解决方法
注:以下又是一个报错信息,
解决方法:
<1>:vim /etc/sysconfig/network-scritps/ifcfg-ens33 编辑网卡
<2>:写入dns 地址 DNS=8.8.8.8
<3>:重启网卡,重启docker容器即可
以下说明安装成功。
《12》:docker run -d -p 2222:22 --name sshd-test --restart=always sshd:new (注:2222:22指的是把你的宿主机的端口和容器的端口结合一起,--name sshd-test 启动时容器的名字;--restart=always是:在启动docker服务的时候容器也就启动)
《13》:netstat -lnpt |grep 2222 查看端口
《14》:ssh localhost -p 2222 登录,他不需要密码