
出品丨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/。
“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/了解更多
除了這兩個指令之外,還有其他一些具有細微差别的 Docker 指令,例如 run 與 build 與create 的相似之處。了解更多并嘗試不同的 docker 指令可以幫助您成為使用這種強大雲技術的專業人士。