通过遵循操作指南,我已经在现有镜像的基础上创建了一个新镜像。
我没有原始图像的Dockerfile,当容器启动时发生了一些我无法改变的事情--这看起来就是这样的。
有没有办法修改基础镜像Dockerfile中的命令?
例如,容器在启动时运行bash脚本,我想要更改这一点。
发布于 2016-05-12 18:51:03
为了回答你的特定问题:“容器在启动时运行bash脚本,我想要更改这一点”。假设您想要运行/script.sh (镜像的一部分)而不是默认的,您可以使用以下命令实例化一个容器:
docker run --entrypoint /script.sh repo/image如果script.sh不是映像的一部分,并且/或者您不希望每次都使用--entrypoint显式指定它,则可以准备一个包含并运行您自己的script.sh的映像
script.sh Dockerfile,内容如下:从存储库/ /script.sh
docker build -t="myimage" .
docker run myimage添加入口点script.sh
备注:
docker hub在运行容器时(步骤4),不再需要指定--entrypoint,因为我们在Dockerfile.
发布于 2014-11-24 20:58:32
只需在空目录中创建一个新的Dockerfile即可。使用以下命令启动Dockerfile
FROM repo/image 其中'repo/ image‘是您当前使用的镜像的id。
并在下面添加您的自定义设置。
这样,您就可以构建一个基于另一个映像的新映像。
特别是,要更改在启动时运行的命令,请输入CMD和/或入口点行。
发布于 2014-11-25 17:53:58
如果使用本教程中的命令启动容器失败,则基本映像很可能引入了入口点。为docker run指定的任何命令都将作为选项附加到入口点命令。因此,给定例如/usr/bin/somescript的入口点,
docker run -d --name newguest -p 8080:80 mymod/httpd:v1 /usr/sbin/httpd -D FOREGROUND将导致容器执行
/usr/bin/somescript /usr/sbin/httpd -D FOREGROUND而不是
/usr/sbin/httpd -D FOREGROUND要删除入口点,请使用--entrypoint选项:
docker run --entrypoint "" -d --name newguest -p 8080:80 mymod/httpd:v1 /usr/sbin/httpd -D FOREGROUNDhttps://stackoverflow.com/questions/27105112
复制相似问题