zl程序教程

您现在的位置是:首页 >  工具

当前栏目

Docker Container同时启动多服务

Docker服务 启动 同时 container
2023-09-14 08:58:00 时间
转载请注明来自:http://blog.csdn.net/wsscy2004
昨天踩了个天坑,我有一个基本的镜像centos6.5+ssh,是通过Dockerfile build的,利用CMD命令启动ssh。

通过centos6.5+ssh镜像,我想build一个rabbitmq镜像,Dockerfile中CMD启动rabbitmq服务。虽然我知道Dockerfile中的CMD只能有一个,但没想到创建另一个image,也会继承FROM image的CMD.

利用docker的命令inspect可以看到,CMD已经被替换了。

"Cmd": [

 /usr/bin/supervisord"

],
下面进入正题,如何同时启动多个服务,主要有如下方式

supervisor supervisor是linux下监控进程的工具,通过supervisor启动所有服务。

创建Dockerfile:

# use this image to run multiple service

# add service in supervisord.conf

FROM centos6-ssh

MAINTAINER edwardsbean@gmail.com

RUN yum install -y supervisor

RUN mkdir -p /var/run/sshd

RUN mkdir -p /var/log/supervisor

ADD supervisord.conf /etc/supervisord.conf

# expose your port to host

EXPOSE 22 80

CMD ["/usr/bin/supervisord"]
创建supervisord.conf:

[supervisord]

nodaemon=true

[program:sshd]

command=/usr/sbin/sshd -D

#add another service#[program:hello]#command=/bin/bash -c "/root/test.sh"
制作成image:

docker build -t supervisord .

以后就可以通过supervisord.conf添加服务了

CMD启动脚本 通过将所有要启动的服务封装成一个脚本,利用CMD命令去启动这个脚本。但是不如supervisord好、不推荐。


Docker 镜像(image)& 容器(container) 什么是 Docker 镜像(image)? 镜像由多个层组成,每层叠加之后,从外部看来就如一个独立的对象; 镜像内部是一个精简的操作系统(OS),同时还包含应用运行所必须的文件和依赖包; 镜像可以运行一个或多个容器,同时镜像也可以停止某个容器的运行,并从中创建新的镜像;【镜像(iamge)的分类】...
Docker系列开篇之Virtual Machine VS Container(一) Docker系列开篇之Virtual Machine VS Container(一)前言本节开始我们正式进入Docker系列,网上关于Docker相关文章如数家珍,写博客至今,我也一直在朝着如何写出通俗易懂且不枯燥的文章这个目标前进,喃喃自语的同时也希望看到文章的童鞋能明白我在讲什么,将知识点叙述清楚没有,讲解的效果如何,是否有启发或收获,能够得到及时的反馈当然也能让我理解的更透彻,好了,我们开始吧。
连接 Docker Container 的几种方式 经过熟悉之后,在 docker 里安装了一个 ubuntu 准备学习使用。然后遇到了一些问题:使用 docker run -d ubuntu 之后,container在运行之后马上退出了。 原因很简单,在docker run 之后没有命令参数,添加 bash 就可以了: docker run -.