通过DockerFile创建ssh服务镜像

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过DockerFile创建ssh服务镜像相关的知识,希望对你有一定的参考价值。

说明:创建一个含有sshd服务的基础镜像,再在这个基础镜像中创建其它中间件镜像,再利用中间件镜像创建应用容器。通过Dockerfile可以创建任意自定义容器,配合supervisord服务完美搭配。

1. 编写Dockerfile

[[email protected] ~]# vi /root/base_ssh/Dockerfile

-----------------DockerFile-----------------

# This is Dockerfile   
# Author: koumm     
# Base image docker.io/centos    
FROM docker.io/centos    
MAINTAINER KOUMM [email protected]    
RUN rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-9.noarch.rpm && \    
    yum install -y curl wget tar bzip2 unzip net-tools rsync man openssl openssl-devel && \     
    yum install -y gcc gcc-c++ git make automake cmake patch logrotate python-devel && \    
    yum -y install openssh-server passwd python-pip && \    
    yum clean all && \    
    /usr/bin/pip install supervisor    
ADD supervisord.conf /etc/supervisord.conf    
RUN mkdir -p /etc/supervisor.conf.d     
ADD sshd.ini /etc/supervisor.d/sshd.ini    
RUN echo ‘QWER#123456‘ | passwd --stdin root    
RUN ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ‘‘   
RUN ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ‘‘    
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key  -N ‘‘     
RUN sed -i "s/#UsePrivilegeSeparation.*/UsePrivilegeSeparation no/g" /etc/ssh/sshd_config    
RUN sed -i "s/UsePAM.*/UsePAM no/g" /etc/ssh/sshd_config    
EXPOSE 22    
ENTRYPOINT ["/usr/bin/supervisord"]

--------------------------------------------

2. 创建supervisord.conf配置文件

#创建supervisord主配置文件,事先将再成的配置文件复制一份出来即可。

# vi /root/base_ssh/supervisord.conf
[unix_http_server]   
file=/tmp/supervisor.sock   ; (the path to the socket file)    
[supervisord]    
logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log)    
logfile_maxbytes=50MB        ; (max main logfile bytes b4 rotation;default 50MB)    
logfile_backups=10           ; (num of main logfile rotation backups;default 10)    
loglevel=info                ; (log level;default info; others: debug,warn,trace)    
pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid)    
nodaemon=true               ; (start in foreground if true;default false)    
minfds=1024                  ; (min. avail startup file descriptors;default 1024)    
minprocs=200                 ; (min. avail process descriptors;default 200)    
[rpcinterface:supervisor]    
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface    
[supervisorctl]    
serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL  for a unix socket    
[include]    
files=/etc/supervisor.d/*.ini


# 创建sshd服务启动文件    

# vi /root/base_ssh/sshd.ini[program:sshd]   
command=/usr/sbin/sshd -D


3. 通过Dockerfile创建镜像

[[email protected] ~]# docker build -t centos:ssh_v2 /root/base_ssh/

过程略..

base_ssh为准备相关资源的目录,包括Dockerfile文件的位置。

[[email protected] ~]# docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE  
centos              ssh_v2              71fb8b60cf9f        6 minutes ago       407.1 MB    
docker.io/centos    latest              8140d0c64310        2 weeks ago         192.5 MB


4. 通过镜像创建容器

[[email protected] ~]# docker run -d -p 2223:22 --name sshtest1 centos:ssh_v2

说明: -p 2223:22 映射要机2223端口到容器22端口

技术分享

然后可以通过ssh登录主机的2223端口访问容器ssh服务。

本文出自 “koumm的linux技术博客” 博客,请务必保留此出处http://koumm.blog.51cto.com/703525/1936534

以上是关于通过DockerFile创建ssh服务镜像的主要内容,如果未能解决你的问题,请参考以下文章

通过Dockerfile创建支持SSH服务的docker镜像(centosUbuntu)

使用Dockerfile创建ssh服务的镜像02

用dockerfile创建支持ssh服务的centos镜像

Docker:使用Dockerfile创建支持SSH服务的镜像

使用Dockerfile创建一个带 ssh 服务的基础镜像

docker基于Dockerfile命令创建支持ssh服务的镜像