执行docker ps时,返回以下内容
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
285a40d8fe9c busybox "top" 10 hours ago Up 10 hours affectionate_nightingale
93eccc49d12e localstack/localstack:0.14.0 "docker-entrypoint.sh" 12 hours ago Up 12 hours 4510-4559/tcp, 5678/tcp, 0.0.0.0:4566->4566/tcp, :::4566->4566/tcp docker_localstack_1
577c50d348d1 docker_db "docker-entrypoint.s…" 12 hours ago Up 12 hours 33060/tcp, 0.0.0.0:3314->3306/tcp, :::3314->3306/tcp mysql_host我想知道docker-entrypoint.sh in CMD是什么。我理解CMD定义了PID1,换句话说,它定义了这个容器的用途以及每个容器应该做什么。
Dockerfile
FROM --platform=linux/amd64 mysql:8.0
COPY initdb.d/* /docker-entrypoint-initdb.d/
CMD ["mysqld"]如果有人知道什么是docker-entrypoint.sh,请告诉我好吗?
谢谢
发布于 2022-04-12 00:55:51
这是图像的入口点。
基本映像的Dockerfile声明了一个运行该shell脚本的ENTRYPOINT。派生图像继承了该ENTRYPOINT,但替换了它的CMD。因为映像有一个ENTRYPOINT和一个CMD 它们被组合成一个命令及其参数。,所以您可以在那里看到这个组合命令。
ENTRYPOINT的一个典型用途是作为一个包装器,它执行一些第一次设置,然后执行CMD。mysql:8图像遵循此模式。它的docker-entrypoint.sh相当复杂:它负责创建初始数据库存储、启动临时数据库、运行/docker-entrypoint-initdb.d目录中的任何内容,然后调用exec "$@"来运行CMD。
对于您显示的Dockerfile,您不需要重复CMD;它的基像已经声明了一个相同的CMD,只要继承它就可以了。这同样适用于其他映像,如tomcat、php:fpm或nginx,其中基本映像是一个完全可运行的东西,而不仅仅是语言运行时。
https://stackoverflow.com/questions/71835673
复制相似问题