如何在docker run中使用--init参数
有--init
和--init-path
选项docker run
,但不清楚如何使用。
一开始,我认为它有点像dumb-init,但包含在docker
core中(有点像“ native”)。但是也--init
需要--init-path
设置关键要求,指向“ docker-
init二进制文件”,并且不知道在何处使用它。Google对“ docker-init”保持沉默。
好的,也许我应该使用’yelp / dumb-init’或’phusion / baseimage-
docker’,但是这些解决方案似乎没有使用docker run
‘s --init
选项。
所以,我很好奇我应该在哪里把这个“ docker-init二进制文件”设置--init-path
为?
-
在run命令中指定新的docker
–init选项基本上将ENTRYPOINT设置为tini并将CMD传递给它或您在命令行上指定的任何内容。例如,如果不使用init,则CMD变为pid1。在这种情况下,/ bin / bash
docker run -ti --rm ubuntu:16.04 /bin/bash root@d740f7360840:/# ps -fA UID PID PPID C STIME TTY TIME CMD root 1 0 1 03:30 ? 00:00:00 /bin/bash root 11 1 0 03:30 ? 00:00:00 ps -fA
使用–init,tini(/ dev / init)变为pid 1
docker run -ti --init --rm ubuntu:16.04 /bin/bash root@5b5fe6ee71b5:/# ps -fA UID PID PPID C STIME TTY TIME CMD root 1 0 1 03:30 ? 00:00:00 /dev/init -- /bin/bash root 7 1 0 03:30 ? 00:00:00 /bin/bash root 12 7 0 03:30 ? 00:00:00 ps -fA
tini是一流的初始化过程,可以正确地作为pid 1运行。pid 1进程必须正确地获取分叉的子进程,否则,诸如资源泄漏和僵尸出现之类的坏事情就会发生。
这是您想要的应用程序,这些应用程序分叉并且在编写时没有考虑到孩子的收获,因为通常它们会将其留给init系统。一个经典的例子是Java
Jenkins应用程序。
-
如何在Docker容器中使用setfacl?
2021-02-01 关注 0 浏览94 1答案
-
如何在Docker容器中使用sudo?
2021-02-01 关注 0 浏览685 1答案
-
如何在Minikube中使用本地docker镜像?
2021-02-02 关注 0 浏览90 1答案
-
如何在(子)模块中使用__init__.py定义名称空间?
2021-01-29 关注 0 浏览93 1答案
-
如何在HttpPost中使用参数
2021-01-31 关注 0 浏览163 1答案
-
如何在 docker compose 中使用环境变量
2022-05-26 关注 0 浏览39 1答案
-
如何在Docker Compose中使用环境变量
2021-02-01 关注 0 浏览160 1答案
-
如何在__init__中使用sphinx自动模块和公开函数
2021-01-29 关注 0 浏览112 1答案
-
如何在SQL中使用“ LIMIT”参数?
2021-05-10 关注 0 浏览129 1答案
-
如何在Java中使用输出参数?
2021-01-30 关注 0 浏览102 1答案