docker run 和 docker exec的區別

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

docker run 命令時創建容器時啓動容器;docker exec是針對已經創建好的容器執行啓動操作;



“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/。


 “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 的容器;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章