原文:https://phoenixnap.com/kb/docker-run-override-entrypoint
為了演示如何覆蓋 entrypoint 命令,我們將運行一個結合了 CMD 和 entrypoint 的 hello world 容器。
下面是 Dockerfile 的內容,ENTRYPOINT
命令定義了可執行文件,而 CMD
設置了默認參數。
FROM ubuntu
MAINTAINER sofija
RUN apt-get update
ENTRYPOINT [“echo”, “Hello”]
CMD [“World”]
如果構建一個鏡像並生成一個容器運行,得到:
你可以非常簡單地通過設置參數來覆蓋掉默認 CMD 指定的參數,格式如下:
sudo docker run [container_name] [new_parameter]
一個示例:
「然而」,你可能想要覆蓋掉默認的可執行文件,例如在一個容器中運行 Shell。這個時候,我們需要顯式地指定 --entrypoint
標志,語法如下:
sudo docker run --entrypoint [new_command] [docker_image] [optional:value]
例如,我們要覆蓋掉上面的 echo
命令,執行 shell:
sudo docker run -it --entrypoint /bin/bash [docker_image]
輸出告訴了我們已經身處容器之中:
❝小結一下,不難理解,當不指定
--entrypoint
時,默認的 entrypoint 就是 shell,所以如果我們在 dockerfile 中指定了 entry point,那么我們想要運行其他可執行文件時,就必須顯式地指定可執行文件了。❞