我想检查其他人创建的 docker 镜像,同时指定了入口点和 cmd,例如:
ENTRYPOINT ["/usr/sbin/apache2ctl"]
CMD ["-D", "FOREGROUND"]
Run Code Online (Sandbox Code Playgroud)
我目前这样做:
docker run --interactive --tty --entrypoint=/bin/bash $IMAGE --login
Run Code Online (Sandbox Code Playgroud)
有没有办法将 CMD 覆盖为空(所以我不必使用“--login”)?
小智 195
您可以直接输入 via docker run -it --entrypoint=/bin/bash $IMAGE -i
(您将从映像启动一个新容器并以交互模式获取 bash shell),然后在该容器中运行 entrypoint 命令。
然后,您可以检查处于应运行状态的正在运行的容器。
编辑:从 Docker 1.3 开始,您可以使用exec
在正在运行的容器中运行进程。像往常一样启动您的容器,然后通过发出以下命令输入它:
docker exec -it $CONTAINER_ID /bin/bash
假设安装了 bash,您将获得对正在运行的容器的 shell 访问权限。
Sim*_*hum 46
请参阅:https : //docs.docker.com/engine/reference/run/#overriding-dockerfile-image-defaults
相关部分:
CMD(默认命令或选项)在 Docker 命令行中调用可选的 COMMAND:
$ docker run [OPTIONS] IMAGE[:TAG] [COMMAND] [ARG...]
Run Code Online (Sandbox Code Playgroud)
此命令是可选的,因为创建 IMAGE 的人可能已经使用 Dockerfile CMD 提供了默认命令。作为操作员(从镜像运行容器的人),您可以通过指定新的 COMMAND 来覆盖该 CMD。
如果图像还指定了 ENTRYPOINT,则 CMD 或 COMMAND 作为参数附加到 ENTRYPOINT。
所以要做你想做的,你只需要指定一个 cmd,并使用/bin/bash
. 不是很“空”,但它完成了 99% 的工作。
小智 33
对于来这里覆盖入口点和命令以传递其他命令的任何人,例如运行 bash 而不是入口点脚本,然后运行一些其他带有参数的命令(我从其他答案中不清楚):
docker run [other options] --entrypoint '/bin/sh' $IMAGE -c 'npm link gulp gulp-sass gulp-sourcemaps'
Run Code Online (Sandbox Code Playgroud)
-c 'npm link ...'
是参数,/bin/sh
所以在这里你可以传递任何你想在容器中运行的命令。/bin/sh
用于高山图像,/bin/bash
最有可能用于其他图像。
归档时间: |
|
查看次数: |
258404 次 |
最近记录: |