Docker Container同时启动多服务 supervisor

Docker Container同时启动多服务

转载请注明来自: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 [email protected]

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好、不推荐。

时间: 2024-10-14 12:52:16

Docker Container同时启动多服务 supervisor的相关文章

docker容器中启动service服务 Failed to get D-Bus connection: Operation not permitted

解决方案: 启动时设置参数  --privileged 使用该参数,container内的root拥有真正的root权限.否则,container内的root只是外部的一个普通用户权限

Docker源码分析(八):Docker Container网络(下)

1.Docker Client配置容器网络模式 Docker目前支持4种网络模式,分别是bridge.host.container.none,Docker开发者可以根据自己的需求来确定最适合自己应用场景的网络模式. 从Docker Container网络创建流程图中可以看到,创建流程第一个涉及的Docker模块即为Docker Client.当然,这也十分好理解,毕竟Docker Container网络环境的创建需要由用户发起,用户根据自身对容器的需求,选择网络模式,并将其通过Docker Cl

container在运行的时候重启 docker 服务, 可能会导致 container无法启动

如果有container在运行的时候重启 docker 服务, 可能会导致 container无法启动, 错误信息类似于 Error response from daemon: Cannot start container zookeeper: Error getting container ddf1dd91bbf46dc648268327f8f7c6fffaf2f19cda5cf1d97fdc701016d4332c from driver devicemapper: Error mounti

docker yum安装报错 服务启动报错

在使用docker容器yum安装时出现类似的错误: Transaction check error:file /usr/lib64/libsystemd-daemon.so.0 from install of systemd-libs-219-19.el7.x86_64 conflicts with file from package systemd-container-libs-208.20-6.el7.centos.x86_64file /usr/lib64/libsystemd-id128

docker组成 以及启动服务遇到的错

Docker 创建镜像,配置镜像file, 1.什么是docker? 把所有环境固化 ,这样在某个固定的环境中运行某个项目 只需要把 固化的环境拿过来,直接运行 ,这样  把项目程序 放到任何服务器上都可以运行. 2.什么是镜像? 镜像: 基础镜像:操作系统镜像,debian.ubertu.windows.,所有的操作系统都能打包成一个镜像,  jdk .maven也可以打包成一个镜像 3.镜像 有什么作用? 把镜像copy出来放到容器中运行.一个完整的Docker镜像可以支撑一个Docker容

Error response from daemon ... no space left on device docker启动容器服务报错

docker 启动容器服务的时候,报错no space left on device 1. 检查磁盘是否用光 3.检查inode是否耗光,从截图看到是inode耗光导致出现问题: 进入到/run里面看看是哪些文件耗光了:#for i in ./*; do echo $i; find $i | wc -l; done查看到最大的是/run/docker/libcontainerd/下面一部分容器耗光的.该目录的结构是:/run/docker/libcontainerd/2b9251bcc7a448

docker container 重启服务器 无法启动

默认情况下,在重启服务器之后,容器不会自动重新启动,可通过如下方法进行解决: 方法一 :手动修改docker的配置文件,然后重启 docker,所有的容器都会在服务器重启后自动启动,需要注意的是不同版本的服务器,docker的 配置文件路径不同: 找到配置文件,将 RestartPolicy 属性值由 no 改为 always,然后重启 docker,systemctl restart docekr 方法二 :docker  container  update  --restart=always

Docker container 集装箱说明

容器操作 使用 docker 命令行操作 docker 容器 启动容器 [email protected] ~ $ docker run Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...] Run a command in a new container -a, --attach=[] Attach to STDIN, STDOUT or STDERR. -c, --cpu-shares=0 CPU shares (relative weig

Docker container 容器介绍

容器操作 使用 docker 命令行操作 docker 容器 启动容器 [email protected] ~ $ docker run Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...] Run a command in a new container -a, --attach=[] Attach to STDIN, STDOUT or STDERR. -c, --cpu-shares=0 CPU shares (relative weig