公司有一批机器是内网的机器,无法访问外网,但是内网之间都是可以互通的,我们需要在这几台机器上部署环境,所以优先考虑使用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/^#?PermitRootLogin\s+.*/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