2

所以我有一个 docker 镜像 Vidyo/mediabridge 我想自动运行一些脚本,在启动时在容器内启动一个任务所以当我运行我的镜像时:

docker run vidyo/mediabridge
OR 

码头文件:

from vidyo/mediabridge

码头工人执行:

docker build . -tag basicimage 
docker run basicimage

我得到输出

*** Running /etc/my_init.d/00_regen_ssh_host_keys.sh...
*** Running /etc/rc.local...
*** Booting runit daemon...
*** Runit started as PID 8

但是当我编辑图像并将其作为 dockerfile 运行时:

from vidyo/mediabridge
CMD echo "hi"

它给出的输出为

hi

并退出,所以基本上我的基本映像 vidyo/mediabridge 没有运行,当我尝试执行其他命令时,例如

dockerfile

from vidyo/mediabridge
ENTRYPOINT curl $s3path -o /opt/vidyo/config && sleep 10 && ./opt/vidyo/connect

表明

 * syslog-ng is not running
 * Starting system logging syslog-ng
 * Retrying 

然后它存在,任何人都可以帮忙,我认为我的基本图像 vidyo/mediabridge 运行不正常。有没有办法运行基础映像然后执行命令。

4

1 回答 1

2

当您添加 CMD 或 ENTRYPOINT 时,它会覆盖您正在使用的基础映像上的 CMD 或 ENTRYPOINT。

要扩展此图像,请不要添加另一个 CMD 或 ENTRYPOINT。如果您想添加 RUN 来执行它们将起作用的东西。

请注意,您不必将上述任一命令添加到 Dockerfile。只要您不添加更多,父图像就会持续存在。

如果要修改CMD或添加到它;我建议docker inspect image vidyo/mediabridge,获取您的基本容器正在运行的命令或入口点,并将其添加到您作为 CMD 运行的 shell 脚本的末尾。

于 2019-10-10T15:51:10.870 回答