ton*_*919 12 docker docker-container
有两个容器A和B.一旦容器A启动,将执行一个进程,然后容器将停止.容器B只是一个Web应用程序(比如expressjs).是否有可能从容器B中启动A?
lar*_*sks 23
可以授予对docker的容器访问权限,以便它可以在主机上生成其他容器.您可以通过在容器中公开docker socket来实现此目的,例如:
docker run -v /var/run/docker.sock:/var/run/docker.sock --name containerB myimage ...
Run Code Online (Sandbox Code Playgroud)
现在,如果您docker在容器中有客户端,您将能够控制主机上的docker守护程序并使用它来生成"容器A".
在尝试此方法之前,您应该了解安全注意事项:访问docker与root在主机上访问相同,这意味着如果您的Web应用程序有远程攻击,您只需将密钥交给主机攻击者.本文将对此进行更全面的描述.
Ber*_*ard 12
可以通过安装docker插座来实现.
容器A
它会将时间打印到标准输出(及其日志)并退出.
docker run --name contA ubuntu date
Run Code Online (Sandbox Code Playgroud)
容器B
诀窍是安装主机的docker socket然后在容器上安装docker客户端.然后它将与守护进程交互,就像您使用主机中的docker一样.安装docker后,它只需每5秒重启一次容器A.
docker run --name contB -v /var/run/docker.sock:/var/run/docker.sock ubuntu bash -c "
apt-get update && apt-get install -y curl &&
curl -sSL https://get.docker.com/ | sh &&
watch --interval 5 docker restart contA"
Run Code Online (Sandbox Code Playgroud)
您可以通过查看其日志来查看contA
docker logs contA
Run Code Online (Sandbox Code Playgroud)
也就是说,Docker真的意味着长期运行的服务.在Docker github上有一些关于为维护,cron作业等指定短期"工作"服务的问题,但没有任何决定,更不用说编码了.因此,最好构建您的系统,以便容器能够正常运行并保持稳定.
| 归档时间: |
|
| 查看次数: |
8677 次 |
| 最近记录: |