替换source.list导致docker image启动失败

时间:2020-04-26 08:46:01

标签: docker

我有一个包含Tomcat 7的基本映像,该映像保留在RAM中,并在将docker-compose build; docker-compose up -d作为容器运行后正确侦听端口。

然后我要更改/etc/apt/source.list。因此,我首先手动运行基础映像并打开bash。然后,我使用docker cp source.list #baseHash:/etc/apt/命令将首选的source.list复制到映像中。之后,我将docker tagdocker commit修改后的图像作为“ modsource”图像。

奇怪的是,在我发出docker-compose命令之后,容器(使用modsource)的状态完全为“ Exit(0)”。我所做的只是更改/etc/apt/source.list。

我研究了该图像,并认为它在容器启动后运行/app-entrypoint.sh。脚本代码为:

#!/bin/bash -e

. /opt/bitnami/base/functions
. /opt/bitnami/base/helpers

print_welcome_page

if [[ "$1" == "nami" && "$2" == "start" ]] || [[ "$1" == "/init.sh" ]]; then
  nami_initialize tomcat
  info "Starting tomcat... "
fi

exec tini -- "$@"

当我从docker log运行modsource映像时,只看到欢迎页面消息。我没有看到任何tomcat初始化消息。但是,在基础映像中,在欢迎消息之后,我看到了很多正在运行的消息。因此,我想对于“ modsource”图像,脚本中的if语句不会通过。

调查之后,我在两张图片上都运行了dock image history并比较了结果。在这里:

╰─➤  diff base.his modsource.his                                                                           [04/26/20 % 4:41PM]
2c2,3
< 4f657f0ee5af        8 months ago        /bin/sh -c #(nop)  CMD ["nami" "start" "--fo…   0B
---
> 68b8feb75b3b        25 hours ago        /bin/bash                                       361B
> <missing>           8 months ago        /bin/sh -c #(nop)  CMD ["nami" "start" "--fo…   0B

68b8feb75b3b是从modsource映像运行的容器的容器ID。 modsource映像中仍然存在命令“ nami”“ start”。不知何故它无法运行...

所以我的问题是,为什么我复制source.list的操作引起问题?什么是实施我要对图像进行更改的正确方法?

0 个答案:

没有答案