我正在尝试在容器启动期间执行一个脚本。
对于普通的 Linux 机器,如果我在/etc/rc.local
脚本中有脚本,则在重启时执行
我在构建 Docker 镜像时尝试做同样的事情。我/etc/rc.local
用新内容覆盖文件,然后执行
sudo docker run -d <image id>
我原本期望/etc/rc.local
它会被执行,但是什么也没有发生。
我是不是在错误的地方做这件事了?
答案1
Docker 仅运行您告诉它运行的进程(或多个进程)。
Docker 容器通常没有可运行的初始化系统。它们不像虚拟机那样包含完整的操作系统,在启动时执行所有初始化操作。
如果你想/etc/rc.local
运行,你必须自己启动它。例如:
docker run image /bin/bash -c "/etc/rc.local; <your command>"
有一些支持在启动时运行服务的替代基础映像,例如phusion/baseimage-docker。
读本文了解 Docker 以及启动容器时存在的问题。