文档章节

CentOS下创建基于supervisord的sshd和其它服务的Docker image

加油2018
 加油2018
发布于 2015/01/08 14:53
字数 702
阅读 1.1K
收藏 0

#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>>

1. 基于supervisord的sshd和httpd

获取最新的centos镜像

# docker pull centos:latest
编写Dockerfile(支持apache+ssh服务)
# mkdir /home/Dockerfile/webserver
# cd /home/Dockerfile/webserver
# vim Dockerfile
Dockerfile内容如下:
# This is a base comment
FROM centos:latest
MAINTAINER renguijiayi

#yum install Package
RUN yum -y install net-tools
RUN yum -y install iputils  iproute  man  vim-minimal  openssh-server  openssh-clients
RUN yum -y install httpd
RUN yum -y install python-setuptools
RUN easy_install supervisor

#set sshd
RUN ssh-keygen -q -N "" -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN ssh-keygen -q -N "" -t rsa -f /etc/ssh/ssh_host_rsa_key
RUN ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ""
RUN sed -ri 's/session    required     pam_loginuid.so/#session    required     pam_loginuid.so/g' /etc/pam.d/sshd
RUN mkdir -p /root/.ssh && chown root.root /root && chmod 700 /root/.ssh
RUN echo 'root:qwe123' | chpasswd

#set supervisor
RUN mkdir -p /var/log/supervisor
ADD supervisord.conf /etc/supervisord.conf

#set port
EXPOSE 22
EXPOSE 80

#set ENV
ENV LANG en_US.UTF-8
ENV LC_ALL en_US.UTF-8

#run supervisor
CMD ["/usr/bin/supervisord -c /etc/supervisord.conf"]

通过supervisord来维护Docker容器中服务进程,编写supervisord.conf:

# vi supervisord.conf
[supervisord]
nodaemon=true

[program:sshd]
command=/usr/sbin/sshd -D

[program:httpd]
command=/usr/sbin/httpd -DFOREGROUND

创建镜像,运行:

# docker build -t test/webserver:v1 .

2. 基于supervisord的sshd和mysql

直接上Dockerfile:

FROM centos:centos6
 
MAINTAINER renguijiayi
 
RUN rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
RUN yum install -y openssh-server sudo mysql-server mysql supervisor
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config
  
RUN useradd admin
RUN echo "admin:admin" | chpasswd
RUN echo "admin   ALL=(ALL)       ALL" >> /etc/sudoers
  
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
RUN mkdir /var/run/sshd
 
RUN /etc/init.d/mysqld start &&\
    mysql -e "grant all privileges on *.* to 'root'@'%' identified by 'letmein';"&&\
    mysql -e "grant all privileges on *.* to 'root'@'localhost' identified by 'letmein';"&&\
    mysql -u root -pletmein -e "show databases;"
 
RUN mkdir -p /var/log/supervisor
COPY supervisord.conf /etc/supervisord.conf
 
EXPOSE 22 3306
CMD ["/usr/bin/supervisord"]
在Dockerfile所在目录下创建supervisord.conf文件,内容如下:
[supervisord]
nodaemon=true
 
[program:sshd]
command=/usr/sbin/sshd -D
 
[program:mysqld]
command=/usr/bin/mysqld_safe
在Dockerfile所在目录下运行build命令来生成image文件,这里使用mysql_server作为image文件名:
sudo docker build -t myserver .

首先使用下面的命令来启动容器:

sudo docker run --name=myserver -d -P myserver
启动完容器后,可以使用“sudo docker ps”来查看,此时可以看PORTS列内容为“0.0.0.0:49171->22/tcp, 0.0.0.0:49172->3306/tcp”容器的22端口和3306端口会被映射到宿主机器的49171和49172端口。

可以通过下面的命令来访问ssh和mysql服务:

ssh admin@<宿主机器> -p <宿主机器端口>
mysql -h <宿主机器> -u root -pletmein -P 49172
也可以使用“sudo docker inspect myserver | grep IPAddress”来查看容器IP地址,然后通过下面命令访问ssh和mysql服务:
ssh admin@<容器机器IP> 
mysql -h <容器机器IP> -u root -pletmein

总结:sshd在大多数情况下对于开发人员来说都是基本要求。如果还有其它进程需要运行的话,利用supervisord来管理多进程的启动是十分方便的。所以sshd和supervisord是制作基础模板的基本要求。

© 著作权归作者所有

加油2018
粉丝 150
博文 276
码字总数 246145
作品 0
海淀
架构师
私信 提问
加载中

评论(0)

通过DockerFile创建ssh服务镜像

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

koumm
2017/06/14
0
0
阅读准备-构建redis容器

Supervisor Centos Supervisor安装 要求 python环境 因为是一个 Python 程序 [root@localhost wang]# python -VPython 2.7.5 验证: 成功安装后可以登陆python 查看是否能成功加载 Supervis...

一叶舟troy
2015/12/13
83
0
docker学习笔记

1,安装 CentOS6 # rpm -ivh http://mirrors.yun-idc.com/epel/6/i386/epel-release-6-8.noarch.rpm #rpm -ivh http://mirrors.ustc.edu.cn/fedora/epel/6/x8664/epel-release-6-8.noarch.rpm......

木雨山
2015/09/17
2.4K
0
基于 docker 的个人网站部署

vps个人网站迁移的问题 4月份的时候,现在的 vps 提供商升级了硬件配置,为了充分使用vps的资源,我只好重装了操作系统。 本来计划今年把个人的vps主机从国外迁回来,所以为了方便后面的迁移...

东昕
2014/06/24
1.8K
0
Supervisor 来管理进程

一、使用 Supervisor 来管理进程 Docker 容器在启动的时候开启单个进程,比如,一个 ssh 或者 apache 的 daemon 服务。但我们经常需要在一个机器上开启多个服务,这可以有很多方法,最简单的...

柴鑫旺
2017/09/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

PDF如何添加下划线?迅捷PDF编辑器一键添加

“在PDF文件中如何添加下划线?”最近,很多办公室小伙伴都向小编咨询这样一个问题。我们常常需要接触、使用到PDF文件,通过查看、阅读、编辑PDF文件以处理各种各样的学习、工作任务。当我们...

dawda
19分钟前
20
0
go中gin框架+realize实现边写代码边编译,热更新

最近看到了热加载,相关的,就搜索了goland实现热加载 发现了一个插件realize https://github.com/oxequa/realize 然后,为了自己撸代码更方便,配合gin写个教程 1.准备 go get github.com/...

osc_ho8dcqsx
19分钟前
17
0
CAP理论的理解

转自:https://www.cnblogs.com/mingorun/p/11025538.html CAP理论的理解 CAP理论作为分布式系统的基础理论,它描述的是一个分布式系统在以下三个特性中: 一致性(Consistency) 可用性(Ava...

osc_5rgbamh9
20分钟前
24
0
求所有科目都大于80分的学生姓名

   蠢蠢的我=》 select t1.name from ( select name,count(*) as num from table t where fenshu>80 group by name) t1join( select name,count(kecheng) as num from table group ......

osc_gk4myeyk
21分钟前
15
0
Memcache(1.1)Memcache 基本概述与架构概述

【1】基本概念介绍 官网:https://memcached.org/ 【1.1】memcache与memcached memcache:是早期使用的,与php结合的,是Php中常用的一个原生插件,完全在php框架内开发的 memcached:是建立...

osc_7ie26pzn
22分钟前
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部