`

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详细安装与配置教程

    service docker start # 启动docker服务 # 基本信息查看 docker version # 查看docker的版本号,包括客户端、服务端、依赖的Go等 docker info # 查看系统(docker)层面信息,包括管理的images, containers数等 ...

    Fortran并行数值计算软件Docker开发环境

    Fortran并行数值计算软件Docker开发环境 这个代码库旨在帮助工程师们快速构建多平台MPI与opneMP的混合并行仿真软件开发环境。当然,你只用MPI也没...将宿主机目录挂载到容器并启动(举例):docker container run -i

    如何创建一个新的Docker镜像和启动应用?

    Docker 是一个开源的应用容器引擎,它允许开发者将应用及其依赖打包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 或 Windows 机器上。... - Docker Hub 是一个服务,允许用户分享和管理 Docker 镜像。

    docker20.10.7离线安装

    接着使用`systemctl start docker`来启动Docker服务,并使用`systemctl enable docker`来设置Docker服务开机自启。 8. **验证Docker状态和版本**:最后,我们可以通过命令`systemctl status docker`来检查Docker...

    docker部署通用服务器监控服务部署

    3. 使用`docker-compose up -d`命令启动所有服务。`-d`参数表示在后台运行服务。 4. Prometheus会自动发现并开始收集Cadvisor提供的监控数据。 5. 访问Grafana的Web界面,配置数据源为Prometheus,并创建仪表板展示...

    Docker的常用命令

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

    centos7离线安装docker

    离线安装 Docker 需要卸载旧版本 Docker,上传和解压 Docker 二进制文件,安装 Docker RPM 软件包,启动 Docker 服务,并测试 Docker 是否安装成功。了解 Docker 的核心概念和优势可以帮助开发者更好地使用 Docker。

    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网络(下) (九):...

    银河麒麟v10 sp1 server安装docker手册

    Error: Problem: cannot install the best candidate for the job - nothing provides container-selinux >= 2:2.74 needed by docker-ce-3:20.10.17-3.el7.aarch64 (try to add '--skip-broken' to skip ...

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

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

    centos下nvidia-docker2环境安装离线安装资料包

    5. 启动Docker服务并设置开机启动: ```bash sudo systemctl start docker sudo systemctl enable docker ``` 接下来,我们处理NVIDIA-Docker2的安装。离线安装资料包中的"安装命令.txt"应该包含了具体的安装...

Global site tag (gtag.js) - Google Analytics