Answers:
您可以通过输入docker run -it --entrypoint=/bin/bash $IMAGE -i
(您将通过映像启动一个新容器并以交互方式获取bash shell),然后在该容器中运行entrypoint命令。
然后,您可以在正在运行的状态下检查正在运行的容器。
编辑:自Docker 1.3起,您可以exec
在运行中的容器中运行进程。按照通常的方式启动容器,然后发出以下命令输入容器:
docker exec -it $CONTAINER_ID /bin/bash
假设安装了bash,您将获得对运行中容器的shell访问权限。
-i
之后$IMAGE
?
参见:https : //docs.docker.com/engine/reference/run/#overriding-dockerfile-image-defaults
相关部分:
CMD(默认命令或选项)在Docker命令行中调用可选的COMMAND:
$ docker run [OPTIONS] IMAGE[:TAG] [COMMAND] [ARG...]
该命令是可选的,因为创建IMAGE的人员可能已经使用Dockerfile CMD提供了默认的COMMAND。作为操作员(从图像中运行容器的人员),您只需指定新的COMMAND即可覆盖该CMD。
如果图像还指定了ENTRYPOINT,则将CMD或COMMAND作为参数附加到ENTRYPOINT。
因此,执行所需操作只需指定一个cmd,然后使用即可覆盖/bin/bash
。并不是很“空”,但它可以完成99%的工作。
--login
到-l
我想您的解决方案已经足够了。
1 ? Ssl 0:00 /usr/bin/geth echo setting up db
对于任何来这里重写输入点AND命令以传递其他命令的人,例如,运行bash而不是入口点脚本,然后运行带有参数的其他命令(从其他答案中看不出来):
docker run [other options] --entrypoint '/bin/sh' $IMAGE -c 'npm link gulp gulp-sass gulp-sourcemaps'
-c 'npm link ...'
是参数,/bin/sh
因此您可以在此处传递要在容器中运行的任何命令。/bin/sh
用于高山图像,/bin/bash
最有可能用于其他图像。
'...'
使用双引号"..."
/bin/sh
但您的情况可能并非如此。