Docker容器里的进程为什么要前台运行

《第一本Docker书》里面,讲到Docker容器启动web服务时,都指定了前台运行的参数,例如apache:

[plain] view plain copy

  1. ENTRYPOINT [ "/usr/sbin/apache2" ]
  2. CMD ["-D", "FOREGROUND"]

又例如nginx:

[plain] view plain copy

  1. ENTRYPOINT [ "/usr/sbin/nginx", "-g", "daemon off;" ]

为什么要这么做呢?因为Docker容器仅在它的1号进程(PID为1)运行时,会保持运行。如果1号进程退出了,Docker容器也就退出了。

原文地址:https://www.cnblogs.com/wangmo/p/8573753.html

时间: 2024-07-30 00:27:33

Docker容器里的进程为什么要前台运行的相关文章

docker容器里设置中文时区

本文讨论docker容器里中文时区的问题,总所周知docker hub上的镜像默认都是英文时区的,在国人使用过程当中需要将时区设置成中文,我原来光配置/etc/localtime了date显示的时间也对,但是tomcat日志里输出的时间还是按默认时区,经过google一番,得知还需要设置timezone.以下描述一下Dockerfile的配置 ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime &&

Docker容器里时间与宿主机不同步

docker容器里时间设置: 第一种: Dockerfile文件中添加一行:RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime或者 第二种: 进入到容器中,设置环境变量  export TZ=Asia/Shanghai 文件字符编码设置: 设置环境变量: export $LANG=en_US.UTF-8

nsenter工具 通过docker pid进入到docker容器里

pid 可以是dockerID 也可以是docker 里面起的进程ID ##安装 wget https://mirrors.edge.kernel.org/pub/linux/utils/util-linux/v2.32/util-linux-2.32.tar.gz tar -xzvf util-linux-2.32.tar.gz cd util-linux-2.32/ ./configure --without-ncurses make nsenter cp nsenter /usr/loca

Docker容器里部署Apache+PHP+MariaDB+phpMyAdmin

前面讲到了创建MariaDB,这次在前面的基础上搭建phpMyAdmin服务,以便友好的管理数据库MariaDB.MariaDB的docker独立出来,这样方便管理,易于扩展.这次我们基于Dockerfile方式创建剩余的服务,Dockerfile也是官方推荐的创建镜像方法. 创建Apache+PHP+phpMyAdmin镜像 首先启动MariaDB的容器 在上一节中我们知道数据库的用户名是root,密码是123456,但是我们还缺少数据库的ip地址,我们使用如下方法获取docker实例的ip地

理解Docker容器的进程管理

摘要: Docker在进程管理上有一些特殊之处,如果不注意这些细节中的魔鬼就会带来一些隐患.另外Docker鼓励"一个容器一个进程(one process per container)"的方式.这种方式非常适合以单进程为主的微服务架构的应用.然而由于一些传统的应用是由若干紧耦合的多个进程构成的,这些进程难以 Docker在进程管理上有一些特殊之处,如果不注意这些细节中的魔鬼就会带来一些隐患.另外Docker鼓励"一个容器一个进程(one process per contain

docker Dockerfile里使用的命令说明

一,dockerfile格式 注释# 指令 参数 指令不区分大小写,但是推荐全部大写指令. 指令从上到下顺序被执行 第一个指令必须是[FROM],指示出要使用的基础镜像. 执行docker file时,如果使用到了别的配置文件,这些配置文件不能放到[执行docker file目录]的父目录,但可以放到子目录. 在执行docker file目录下,可以放一个隐藏文件(.dockerignore),里面存放的是build时不需要的文件.可以使用通配符去指定.比如,某个子目录里10个文件,build时

Docker 使用Supervisor来进程管理

supervisor 来管理容器中的多个进程.使用 Supervisor 可以更好的控制.管理.重启我们希望运行的进程.Supervisor 是一个进程控制系统. 它是一个 C/S 系统, 它允许用户去监控和控制在类 UNIX 系统的进程 配置首先创建一个Dockerfile 创建一个dockerfile的目录 生成密钥并创建authorized_keys文件. supervisor配置 第一段 supervsord 配置软件本身,使用 nodaemon 参数来运行.nodaemon=true

docker容器一

容器的介绍 容器是一种基础工具,泛指任何可以用于容纳其他物品的工具,可以部分或完全封闭,被用于容纳.存储.运输物品:物体可以被放置在容器中,而容器则可以保护内容物. 名称挂载点 Mount:挂载点 UTS:主机名与域名 IPC:信息量.消息队列和共享内存 PID:进程号 Network:网络设备.网络栈.端口号 user:用户和组 docker的概念 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源.Docker 可以让开发者打包他们的应用以及依赖包到一

如何在宿主机上执行容器里的jmap,jtack,jstat 命令获取信息(原创)

一般情况下,我们要获取docker容器里的jvm信息只能进入容器后执行jmap,jstack,jstat 命令去获取,jstack,jstat还好,但是jmap dump的文件要拿出来,得先copy dump文件到挂载在宿主机上的目录,或者使用docker cp命令去获取, 如  https://pathtogeek.com/thread-heap-dumps-from-a-docker-container 1. Run the below command to bash into the co