通过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服务。

时间: 2024-10-05 23:26:46

通过DockerFile创建ssh服务镜像的相关文章

通过DockerFile创建tomcat+ssh服务镜像

在上一节通过DockerFile创建ssh服务容器中创建一个centos:ssh_v2镜像,本文在该镜像的基础上再创建一个tomcat镜像,实现TOMCAT+SSH的镜像.    可以直接使用该镜像创建容器提供tomcat服务,通过定制tomcat服务器web目录,开通后可放入代码,或通过传入本地目录方式提供代码目录. 1. 准备如下内容: -rw-r--r-- 1 root root      323 5月  31 14:20 Dockerfile   -rw-r--r-- 1 root ro

6.docker制作SSH服务镜像

* commit方式安装ssh服务 1)准备工作 docker run -it ubuntu:14.04 /bin/bash 2)安装配置ssh服务 apt-get update;apt-get install openssh-server -y apt-get install net-tools -y mkdir -p /var/run/sshd /usr/sbin/sshd -D & sed -ri 's/session    required     pam_loginuid.so/#se

Dockerfile创建自定义Docker镜像以及CMD与ENTRYPOINT指令的比较

1.概述 创建Docker镜像的方式有三种 docker commit命令:由容器生成镜像: Dockerfile文件+docker build命令: 从本地文件系统导入:OpenVZ的模板. 关于这三种方式的大致说明请参考yeasy/docker_practice的创建镜像. 最近学习了Dockerfile文件的相关配置,这里做一下简单的总结,并对之前一直感到有些迷惑的CMD和ENTRYPOINT指令做个差异对比. 2.Dockerfile文件总结 Dockerfile 由一行行命令语句组成,

使用Dockerfile创建nginx服务容器镜像

1.下载nginx配置文件 wget http://www.apelearn.com/study_v2/.nginx_conf 2. vim Dockerfile #本地有centos的镜像,可以直接指定镜像名称:如果需要从docker官网下载其他版本镜像,请自行修改版本号 FROM centos:6.8 MAINTAINER wyman [email protected] #根据实际需要选择安装 RUN yum install -y pcre-devel wget net-tools gcc

使用Dockerfile创建自己的镜像

要创建自己的Docker镜像,最好的方法是使用Dockerfile文件,在使用过程中,由于国内的网络环境的问题,创建镜像的过程中可能因为需要下载的软件不能及时获得,可能造成创建的镜像出错.为解决这个问题,在编写Dockerfile时,可以通过RUN指令,把软件源的地址换成国内的,虽然这样做有人说做成功了,但我在测试时没有成功,所以我的建议是通过进入容器,手动下载需要的软件,这样能够避免出现这样的错误.软件下载安装好后,再把该容器commit成一个镜像,再写Dockerfile文件,写入需要做的配

【docker】基于Dockerfile构建mysqld服务镜像

一 创建构建目录结构     # mkdir  -pv docker/mysql# cd docker/mysql/ 二 写Dockerfile 文件 # vim  Dockerfile  #此处 sshd:latest 为上篇文章中创建的镜像#此Dockerfile 「dookerpool」的 Dockerfile文件,仅仅在在测试时候做了些优化和更改FROM sshd:latestMAINTAINER mykernel(www.mykernel.cn)#安装软件 RUN ENV DEBIAN

基于alpine用dockerfile创建的nginx镜像

1.下载alpine镜像 [[email protected] ~]# docker pull alpine Using default tag: latest Trying to pull repository docker.io/library/alpine ... latest: Pulling from docker.io/library/alpine 4fe2ade4980c: Pull complete Digest: sha256:621c2f39f8133acb8e64023a9

基于alpine用dockerfile创建的tomcat镜像

1.下载alpine镜像 [[email protected] ~]# docker pull alpine Using default tag: latest Trying to pull repository docker.io/library/alpine ... latest: Pulling from docker.io/library/alpine 4fe2ade4980c: Pull complete Digest: sha256:621c2f39f8133acb8e64023a9

Dockerfile构建微服务镜像

1.将jar包上传linux服务器/eureka目录,在jar包所在目录创建名为Dockerfile的文件 2.在Dockerfile中添加以下内容 # 基于哪个镜像 From java:8 # 复制文件到容器 ADD eureka-server-0.0.1-SNAPSHOT.jar /app.jar # 声明需要暴露的端口 EXPOSE 8000 # 配置容器启动后执行的命令 ENTRYPOINT ["java","-jar","/app.jar&quo