非常教程

Docker 17参考手册

引擎: 管理员指南 | Engine: Admin Guide

在容器中运行多个服务(引擎) | Run multiple services in a container (Engine)

容器的主要运行过程是ENTRYPOINT和/或CMDDockerfile.一般建议您使用每个容器一个服务来区分关注的区域。该服务可能分到多个进程%28,例如,Apacheweb服务器启动多个工作进程%29。有多个进程是可以的,但是为了从Docker中获得最大的好处,请避免一个容器负责整个应用程序的多个方面。您可以使用用户定义的网络和共享卷连接多个容器。

容器的主进程负责管理它启动的所有进程。在某些情况下,主进程设计不好,并且在容器存在时没有很好地处理“收割”%28停止%29子进程。如果您的流程属于此类别,则可以使用--init选项在运行容器时。大--init标志将一个微小的init进程插入容器中作为主进程,并在容器退出时处理所有进程的收获。以这种方式处理这样的过程比使用完全的init进程(例如sysvinit,,,upstart,或systemd来处理容器中的流程生命周期。

如果您需要在一个容器中运行多个服务,您可以通过几种不同的方式来完成这一任务。

  • 将所有命令放入包装脚本中,并提供测试和调试信息。将包装器脚本作为CMD这是一个很幼稚的例子。首先,包装器脚本: #%21/bin/bash#启动第一个进程。[医]第一[医]进程-D状态=$?如果$Status-N0;然后回显“未能启动我的[医]第一[医]进程:$state“退出$Statusfi#启动第二个进程。[医]第二[医]进程-D状态=$?如果$Status-N0;然后回显“未能启动我的[医]第二[医]Process:$Status“Exit$Statsfi#朴素检查每分钟运行一次检查,以查看是否有任何进程退出。#这说明了如果要在容器中运行多个服务,需要完成的部分工作。如果检测到任何一个进程已经退出,容器将退出并带有一个错误#。#否则它将永远循环,每60秒醒来一次/bin/true;[医]第一[医]过程grep-q-v grep过程[医]一[医]状态=$?PS辅助grep我[医]第二[医]过程grep-q-v grep过程[医]二[医]状态=$?#如果上面的grep找到了什么,如果它们都不是0,它们将退出0状态#,那么如果$Process[医]一[医]状态-n0-o$进程[医]二[医]现状---N0然后回显“其中一个进程已经退出”。出口-1fi睡眠60完成 接下来,Dockerfile: 来自ubuntu的最新版本[医]第一[医]处理我的[医]第一[医]进程复制我的[医]第二[医]处理我的[医]第二[医]进程复制我的[医]包装器[医]脚本嘘我[医]包装器[医]script.sh CMD./我[医]包装器[医]script.sh
  • 使用流程管理器,如supervisord这是一种中等重量的方法,需要你打包。supervisord以及它在图像%28中的配置,或者将您的图像建立在以下内容的基础上:supervisord%29,以及它将管理的不同应用程序。然后你开始supervisord,它为您管理您的流程。下面是一个使用这种方法的Dockerfile示例,它假定预先编写的supervisord.conf,,,my_first_process,和my_second_process所有文件都与您的Dockerfile位于同一个目录中。

来自ubuntu:最新运行APT-获取更新&APT-获取安装-y监控器运行mkdir-p/var/log/主管复制Superord.conf/etc/Superor/con.d/visorord.conf复制我的[医]第一[医]处理我的[医]第一[医]进程复制我的[医]第二[医]处理我的[医]第二[医]过程CMD“/usr/bin/Superord”

码头工人,督导员,过程管理

引擎: 管理员指南 | Engine: Admin Guide相关

1.Amazon CloudWatch记录日志记录驱动程序(引擎) | Amazon CloudWatch logs logging driver (Engine)
2. 绑定挂载 | Bind mounts (Engine)
3.使用Prometheus(引擎)收集Docker指标 | Collect Docker metrics with Prometheus (Engine)
4.配置和运行Docker(引擎) | Configuring and running Docker (Engine)
5.配置日志记录驱动程序 | Configuring logging drivers (Engine)
6.使用systemd控制和配置Docker(引擎) | Control and configure Docker with systemd (Engine)
7.ETW日志记录驱动程序(引擎) | ETW logging driver (Engine)
8.流利的日志驱动程序(引擎) | Fluentd logging driver (Engine)
9.格式化命令和日志输出(引擎) | Format command and log output (Engine)
10.Google Cloud日志记录驱动程序(引擎) | Google Cloud logging driver (Engine)
11.Graylog扩展格式(GELF)日志记录驱动程序(引擎) | Graylog Extended Format (GELF) logging driver (Engine)
12.Journald日志记录驱动程序(引擎) | Journald logging driver (Engine)
13.JSON文件日志记录驱动程序(引擎) | JSON File logging driver (Engine)
14.在守护进程停机期间保持容器处于活动状态(引擎) | Keep containers alive during daemon downtime (Engine)
15.限制容器的资源(引擎) | Limit a container's resources (Engine)
16.通过大使容器链接(引擎) | Link via an ambassador container (Engine)
17.记录驱动程序的日志标记(引擎) | Log tags for logging driver (Engine)
18.Logentries日志驱动程序(引擎) | Logentries logging driver (Engine)
19.PowerShell DSC用法(引擎) | PowerShell DSC usage (Engine)
20.修剪未使用的Docker对象(引擎) | Prune unused Docker objects (Engine)
21.运行时指标(引擎) | Runtime metrics (Engine)
22.Splunk日志记录驱动程序(引擎) | Splunk logging driver (Engine)
23.自动启动容器(引擎) | Start containers automatically (Engine)
24.存储概述(引擎) | Storage overview (Engine)
25.Syslog日志记录驱动程序(引擎) | Syslog logging driver (Engine)
26.tmpfs mounts
27.解决卷问题(引擎) | Troubleshoot volume problems (Engine)
28.使用日志驱动程序插件(引擎) | Use a logging driver plugin (Engine)
29.使用Ansible(引擎) | Using Ansible (Engine)
30.使用Chef(引擎) | Using Chef (Engine)
31.使用Puppet(引擎) | Using Puppet (Engine)
32.查看容器的日志(引擎) | View a container's logs (Engine)
33.Volumes (Engine)
Docker 17

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

主页 https://docker.com/
源码 https://github.com/docker/docker
版本 17
发布版本 17.06