?
This document uses PHP Chinese website manual Release
在正在運(yùn)行的容器中運(yùn)行命令
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
名字,簡(jiǎn)寫 | 默認(rèn) | 描述 |
---|---|---|
--detach, -d | false | 分離模式:在后臺(tái)運(yùn)行命令 |
--detach-keys | 覆蓋分離容器的鍵序列 | |
--env,-e | 設(shè)置環(huán)境變量 | |
--interactive, -i | false | 即使沒(méi)有連接,也要保持STDIN打開(kāi) |
--privileged | false | 給命令賦予擴(kuò)展權(quán)限 |
--tty, -t | false | 分配一個(gè)偽TTY |
--user,-u | 用戶名或UID(格式:<名稱| uid>:<組| gid>) |
命令 | 描述 |
---|---|
docker | Docker CLI的基本命令。 |
該docker exec
命令在正在運(yùn)行的容器中運(yùn)行新命令。
該命令docker exec
僅在容器的主進(jìn)程(PID 1
)正在運(yùn)行時(shí)使用運(yùn)行開(kāi)始,并且如果容器重新啟動(dòng),則不會(huì)重新啟動(dòng)該命令。
COMMAND 將在容器的默認(rèn)目錄中運(yùn)行。它的底層映像有一個(gè)在其 Dockerfile 中使用 WORKDIR 指令指定的自定義目錄,這將用于替代。
COMMAND 應(yīng)該是可執(zhí)行文件,鏈接或引用的命令將不起作用。例如:docker exec -ti my_container "echo a && echo b"
不會(huì)工作,但docker exec -ti my_container sh -c "echo a && echo b"
會(huì)。
docker exec
首先,啟動(dòng)一個(gè)容器。
$ docker run --name ubuntu_bash --rm -i -t ubuntu bash
這將創(chuàng)建一個(gè)名為容器ubuntu_bash
并啟動(dòng) Bash 會(huì)話。
接下來(lái),在容器上執(zhí)行一個(gè)命令。
$ docker exec -d ubuntu_bash touch /tmp/execWorks
這將在后臺(tái)創(chuàng)建一個(gè)/tmp/execWorks
運(yùn)行容器內(nèi)的新文件ubuntu_bash
。
接下來(lái),bash
在容器上執(zhí)行一個(gè)交互式 shell 。
$ docker exec -it ubuntu_bash bash
這將在容器中創(chuàng)建一個(gè)新的 Bash 會(huì)話ubuntu_bash
。
接下來(lái),在當(dāng)前的 bash 會(huì)話中設(shè)置一個(gè)環(huán)境變量。
$ docker exec -it -e VAR=1 ubuntu_bash bash
這將在ubuntu_bash
環(huán)境變量$VAR
設(shè)置為“1” 的容器中創(chuàng)建一個(gè)新的 Bash 會(huì)話。請(qǐng)注意,此環(huán)境變量?jī)H在當(dāng)前的 Bash 會(huì)話中有效。
docker exec
如果容器暫停,那么docker exec
命令將失敗并出現(xiàn)錯(cuò)誤:
$ 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