?
Dieses Dokument verwendet PHP-Handbuch für chinesische Websites Freigeben
在正在運行的容器中運行命令
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
名字,簡寫 | 默認 | 描述 |
---|---|---|
--detach, -d | false | 分離模式:在后臺運行命令 |
--detach-keys | 覆蓋分離容器的鍵序列 | |
--env,-e | 設置環(huán)境變量 | |
--interactive, -i | false | 即使沒有連接,也要保持STDIN打開 |
--privileged | false | 給命令賦予擴展權(quán)限 |
--tty, -t | false | 分配一個偽TTY |
--user,-u | 用戶名或UID(格式:<名稱| uid>:<組| gid>) |
命令 | 描述 |
---|---|
docker | Docker CLI的基本命令。 |
該docker exec
命令在正在運行的容器中運行新命令。
該命令docker exec
僅在容器的主進程(PID 1
)正在運行時使用運行開始,并且如果容器重新啟動,則不會重新啟動該命令。
COMMAND 將在容器的默認目錄中運行。它的底層映像有一個在其 Dockerfile 中使用 WORKDIR 指令指定的自定義目錄,這將用于替代。
COMMAND 應該是可執(zhí)行文件,鏈接或引用的命令將不起作用。例如:docker exec -ti my_container "echo a && echo b"
不會工作,但docker exec -ti my_container sh -c "echo a && echo b"
會。
docker exec
首先,啟動一個容器。
$ docker run --name ubuntu_bash --rm -i -t ubuntu bash
這將創(chuàng)建一個名為容器ubuntu_bash
并啟動 Bash 會話。
接下來,在容器上執(zhí)行一個命令。
$ docker exec -d ubuntu_bash touch /tmp/execWorks
這將在后臺創(chuàng)建一個/tmp/execWorks
運行容器內(nèi)的新文件ubuntu_bash
。
接下來,bash
在容器上執(zhí)行一個交互式 shell 。
$ docker exec -it ubuntu_bash bash
這將在容器中創(chuàng)建一個新的 Bash 會話ubuntu_bash
。
接下來,在當前的 bash 會話中設置一個環(huán)境變量。
$ docker exec -it -e VAR=1 ubuntu_bash bash
這將在ubuntu_bash
環(huán)境變量$VAR
設置為“1” 的容器中創(chuàng)建一個新的 Bash 會話。請注意,此環(huán)境變量僅在當前的 Bash 會話中有效。
docker exec
如果容器暫停,那么docker exec
命令將失敗并出現(xiàn)錯誤:
$ docker pause test test $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1ae3b36715d2 ubuntu:latest "bash" 17 seconds ago Up 16 seconds (Paused) test $ docker exec test ls FATA[0000] Error response from daemon: Container test is paused, unpause the container before exec $ echo $?1