转自:https://blog.csdn.net/taiyangdao/article/details/73123939
通常,我们首先定义Dockerfile文件,然后通过docker build命令构建得到镜像文件。然后,才能够基于镜像文件通过docker run启动一个容器的实例。
那么在启动一个容器的时候,就可以改变镜像文件中的一些参数,而镜像文件中的这些参数往往是通过Dockerfile文件定义的。
但并非Dockerfile文件中的所有定义都可以在启动容器的时候被重新定义。docker run不能覆盖的Dockerfile文件指令如下:
FROM
MAINTAINER
RUN
ADD
COPY
1. 覆盖ENTRYPOINT指令
Dockerfile文件中的ENTRYPOINT指令,用以给出容器启动后默认入口。
ENTRYPOINT指令给出容器启动后的默认行为,一般难以在启动容器时覆盖,但是可以追加命令参数。示例如下:
docker run --entrypoint /bin/bash ...,给出容器入口的后续命令参数
docker run --entrypoint="/bin/bash ..." ...,给出容器的新Shell
docker run -it --entrypoint="" mysql bash,重置容器入口
2. 覆盖CMD指令
Dockerfile文件中的CMD指令,给出容器启动后默认执行的指令。
可以在启动容器的时候,为d