我有一个包含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 tag
和docker 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的操作引起问题?什么是实施我要对图像进行更改的正确方法?