`

Docker Container同时启动多服务

 
阅读更多

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 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如何进入启动容器

    本文介绍了Docker如何进入启动容器,分享给大家,具体如下: 在使用-d参数时,容器启动后会进入后台,用户无法看到容器中的信息,也无法进行操作。 这个时候如果需要进入容器进行操作,有多种方法,包括使用官方的...

    docker常用命令 整理成了思维导图 结构更清晰

    删除镜像, 可以同时删除多个 删除所有 docker rmi $(docker images -q) docker images -q 获取所有镜像id 容器相关命令 命令提示 docker container --help 创建容器(自动启动) docker ...

    docker安装完成启动不了(报错:Failed to start Docker Application Container Engine.)

    废话不多说,直接上干货 进入正题: 一、Docker—安装部署 注意:Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上 ...4、启动docker和查看docker的状态 systemctl start docker——

    Docker的常用命令

    docker rename [CONTAINER_NAME] [NEW_CONTAINER_NAME] 在新容器中运行命令 docker run [IMAGE] [COMMAND] 退出后移除容器 docker run –rm [IMAGE] 启动一个容器并保持运行 docker run -td [IMAGE] 启动一个...

    Docker Container 使用

    Docker Container基础用法启动镜像创建出一个运行状态的容器容器操作常见命令运行容器查看容器信息查看容器运行产生的输出暂停容器恢复容器停止容器重新启动容器删除容器(删除前要stop)查看docker里所有启动中的...

    DockerClient的启动与命令执行

    在上文Docker源码分析之——Docker Daemon的启动中,介绍了...container操作的请求的载体,在于DockerClient。本文从Docker源码的角度,分析Docker Client启动与执行请求的过程。DockerClient启动的流程与DockerDae

    Docker 源码 - 分析

    (三):Docker Daemon启动 (四):Docker Daemon之NewDaemon实现 (五):Docker Server的创建 (六):Docker Daemon网络 (七):Docker Container网络 (上) (八):Docker Container网络(下) (九):...

    基于docker的分布式爬虫服务Zerg.zip

    基于docker的分布式爬虫服务特性多机多 IP,充分利用 IP 资源服务自动发现和注册(基于 etcd 和 registrator)负载均衡服务端客户端通信基于 gRPC,支持多种编程语言的客户端可设置抓取超时支持 GET、HEAD、POST ...

    超级详细:Docker Commands —— Container Commands !(新手必看必会)

    文章目录All Docker Container Commands(必看):基础命令:①、列出容器 —— docker ps②、创建容器 —— docker create③、启动容器 —— docker start④、创建并启动容器 —— docker run (常用)⑤、进入容器...

    Docker服务启动工具dock.zip

    使用 Docker 和这个叫 dock 的小工具,你可以短时间内启动所有开发环境所需要的服务。 典型使用方法: $ dock redis jenkins mongodb Starting redis (using /Users/ben/.dock-formulas/formulas/redis) ...

    解决docker run 或者 docker restart 启动镜像就自动退出

    执行命令:docker run –name centos8 -d centos /bin/bash,通过docker ps查看正在运行中容器,找不到centos8。 通过docker ps -a查看发现,centos8容器已经处于停止状态了 [root@MiWiFi-R4A-srv server]$ docker ...

    docker.service启动报错的一次排查详解

    ● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled) Drop-In: /etc/systemd/system/docker.service.d └─...

    详解Docker无法正常启动的原因及解决办法

    一、Docker启动异常表现: 1.状态反复restaring,用命令查看 $docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 21c09be88c11 docker.xxxx....

    Go-Dockle-安全的ContainerImageLinter帮助构建最佳实践Docker镜像易于启动

    Dockle - 安全的Container Image Linter,帮助构建最佳实践Docker镜像,易于启动

    nvidia-docker_1.0.1-1_amd64.deb

    更方便配置的能利用nvidia GPU的docker. ...所以现在的nvidia-docker的解决方案是在image里不安装nvidia driver,而是在启动container时通过挂载driver文件或者指定特定的硬件的方式来启动container。

    docker-ptmagic:用于PTMagic插件的Docker Container,用于获利预告片

    泊坞窗PT Magic PTMagic插件的Docker Container,用于获利预告片。版本2.0.3先决条件正在运行的Profittrailer(我使用自己的Docker容器rafffael / profit-trailer的fork) 通过docker卷/ mnt / profittrailer的完全...

    Docker学习之Container容器的具体使用

    容器是 Docker 又一核心概念。 ...因为 Docker 的容器实在太轻量级了,很多时候用户都是随时删除和新创建容器。 新建并启动 所需要的命令主要为 docker run 这跟在本地直接执行 /bin/echo ‘hell

    重启docker服务应用自启停命令(推荐)

    下面看下重启docker服务应用自启停命令,具体内容如下所述: #重启docker服务应用,不自动开启docker容器 docker update --restart=no (docker容器CONTAINER ID 或 docekr容器NAMES) #重启docker服务应用,自动开启...

    h2:在Docker容器中作为服务器运行的H2数据库

    docker container run \ --publish 9092:9082 \ --detach \ --name h2 \ nemerosa/h2 然后可以使用以下JDBC URL访问数据库: jdbc:h2:tcp://localhost/yourdb (假设您的Docker主机也是localhost ) 数据量 ...

    docker.rar

    > 创建docker启动文件(docker.services)放入/usr/lib/systemd/system/目录 ``` [Unit] Description=Docker Application Container Engine Documentation=http://docs.docker.com After=network.target docker....

Global site tag (gtag.js) - Google Analytics