1. 程式人生 > >“docker run”VS“docker exec”,這兩個命令有區別嗎?

“docker run”VS“docker exec”,這兩個命令有區別嗎?

640?wx_fmt=png

出品丨Docker公司(ID:docker-cn)

編譯丨小東

每週一、三、五晚6點10分  與您不見不散

說在前面

“docker run”和“docker exec”都是 Docker 容器中用於執行的命令。然而,在不同的情況下,它們的使用有著本質上的區別。

&

“docker run”命令

“docker run”通常是在新建立的容器中所使用的命令。 它適用於在沒有其他容器執行的情況下,您想要建立一個容器,並且要啟動它,然後在其上執行一個程序。它的格式如下所示:

docker run [OPTIONS] IMAGE COMMAND [ARG...]

在“docker run”命令之後,您必須通過指定映象來建立容器,同時還可以指定的[OPTIONS]和[ARG...],例如:

docker run --name ubuntu_bash --rm -i -t ubuntu bash

上述命令將建立一個名為 ubuntu_bash 的容器並啟動一個 Bash 會話。該示例中所使用的[OPTIONS]和[ARG...]的詳細解讀如下所示:

  • --name 為容器指定名稱,在本例中的容器名稱為 ubuntu_bash;

  • --rm 就像 bash 中的 rm 命令一樣,它會刪除容器,但這裡它會在該容器退出時進行刪除;

  • -i 就是 –interactive 的縮寫,它確保了即使沒有連線到正在執行的容器,STDIN(標準輸入)也會處於開啟狀態;

  • -t 也可以使用 –tty 來進行引用,在容器中啟動互動式的 bashshell;

  • 容器的映象應遵循[OPTIONS],這裡的是映象 ubuntu;

  • 緊隨映象後面的部分是您要執行的命令:bash;

想了解更多關於“docker run”的更多[OPTIONS]資訊,請檢視https://docs.docker.com/engine/reference/commandline/run/。

640?wx_fmt=png

 “docker exec”命令

“docker exec”適用於在現有容器中執行命令的情況。如果您已經擁有了一個正在執行的容器,並希望更改該容器或從中獲取某些內容,那麼使用“docker exec”命令就非常合適了。例如,如果您使用了 docker-compose,那麼您可能會啟動多個容器,並且希望能夠在建立它們後訪問其中的一個或多個容器。它的格式如下所示:

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

“docker exec”也有著一系列可以指定的[OPTIONS]和[ARG...],儘管您需要確保容器和命令的狀態才能執行。您可以使用以下命令在名為 ubuntu_bash 的容器上啟動互動式的 bash shell:

docker exec -it ubuntu_bash bash

這裡的[OPTIONS] –it 與“docker run”命令中的相同。 更多[OPTIONS]和[ARG...]的示例如下所示:

docker exec -d -w /temp ubuntu_bash touch my_file.sh

  • -w 後跟目錄或檔案路徑,您可以說明要在哪個工作目錄中執行命令;

  • -d 或 –detached 表示容器將以分離模式執行,因此您仍然可以繼續將終端會話和在後臺執行的容器一起使用。如果要檢視容器傳送到 STDOUT 的內容,請不要使用此選項;

  • 該命令用於建立名為 my_file.sh 的檔案,在 /temp 目錄下執行名為 ubuntu_bash 的容器;

想了解更多關於“docker exec”的更多[OPTIONS]資訊,請檢視https://docs.docker.com/engine/reference/commandline/exec/。

640?wx_fmt=png

瞭解更多

除了這兩個命令之外,還有其他一些具有細微差別的 Docker 命令,例如 run 與 build 與create 的相似之處。瞭解更多並嘗試不同的 docker 命令可以幫助您成為使用這種強大雲技術的專業人士。

640?wx_fmt=png

點選下列標題,閱讀更多幹貨

如果本文對你有幫助,歡迎分享到朋友圈!獲取更多Docker實用技巧,掃描下圖二維碼!

640?wx_fmt=png