构建带有ssh服务的镜像

时间:2022-07-22
本文章向大家介绍构建带有ssh服务的镜像,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

背景

公司有一批机器是内网的机器,无法访问外网,但是内网之间都是可以互通的,我们需要在这几台机器上部署环境,所以优先考虑使用docker容器,在本地写好dockerfile,构建好镜像,然后把镜像load到目标机器上,所以我们需要先构建一层装有基础服务的镜像,然后在此基础上部署服务。

实现方法

ubuntu实现方法:

FROM       ubuntu:16.04
MAINTAINER dogfei
RUN apt-get -y update 
    && apt-get install -y openssh-server 
    && mkdir /var/run/sshd 
    && echo 'root:root' |chpasswd 
    && sed -ri 's/^#?PermitRootLogins+.*/PermitRootLogin yes/' /etc/ssh/sshd_config 
    && sed -ri 's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config 
    && mkdir /root/.ssh 
    && apt-get clean && 
    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]

centos实现方法:

FROM centos:latest
MAINTAINER dogfei
RUN rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm 
    && rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 
    && yum install -y yum-priorities 
    && yum install -y sudo 
    && yum install -y net-tools openssh-clients openssh-server 
# 将sshd的UsePAM参数设置成no,优化ssh连接
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config
# 修改root用户密码,这里密码为:devilf
RUN echo "root:devilf"|chpasswd 
    && ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key 
    && ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
# 启动sshd服务并且暴露22端口
RUN mkdir /var/run/sshd
EXPOSE 22    #监听22端口,外界可以访问
ENTRYPOINT ["/usr/sbin/sshd","-D"]    #entrypoint表示默认情况下容器运行的命令

开始构建

docker build -t='ssh-server:v1' .

注:

当我们使用普通用户执行docker相关的命令时,我们可能需要加上sudo才能执行,非常麻烦,所以我们可以把当前的用户添加到docker组里

sudo usermod -aG docker dogfei