將 shell 放入正在執行的(分離的)容器中

登入正在執行的容器

使用者可以使用 exec 命令在新的互動式 bash shell 中輸入正在執行的容器。

假設一個容器名為 jovial_morse,那麼你可以執行以下命令獲得一個互動式的偽 TTY bash shell:

docker exec -it jovial_morse bash

使用特定使用者登入正在執行的容器

如果要以特定使用者身份輸入容器,可以使用 -u--user 引數進行設定。使用者名稱必須存在於容器中。

-u, --user 使用者名稱或 UID(格式:<name|uid>[:<group|gid>]

此命令將使用 dockeruser 使用者登入 jovial_morse

docker exec -it -u dockeruser jovial_morse bash

以 root 身份登入正在執行的容器

如果你想以 root 使用者身份登入,只需使用 -u root 引數即可。Root 使用者始終存在。

docker exec -it -u root jovial_morse bash

登入影象

你還可以使用 run 命令登入影象,但這需要影象名稱而不是容器名稱。

docker run -it dockerimage bash

登入中間影象(除錯)

你也可以登入到 Dockerfile 構建期間建立的中間影象。

docker build . 的輸出

$ docker build .
Uploading context 10240 bytes
Step 1 : FROM busybox
Pulling repository busybox
 ---> e9aa60c60128MB/2.284 MB (100%) endpoint: https://cdn-registry-1.docker.io/v1/
Step 2 : RUN ls -lh /
 ---> Running in 9c9e81692ae9
total 24
drwxr-xr-x    2 root     root        4.0K Mar 12  2013 bin
drwxr-xr-x    5 root     root        4.0K Oct 19 00:19 dev
drwxr-xr-x    2 root     root        4.0K Oct 19 00:19 etc
drwxr-xr-x    2 root     root        4.0K Nov 15 23:34 lib
lrwxrwxrwx    1 root     root           3 Mar 12  2013 lib64 -> lib
dr-xr-xr-x  116 root     root           0 Nov 15 23:34 proc
lrwxrwxrwx    1 root     root           3 Mar 12  2013 sbin -> bin
dr-xr-xr-x   13 root     root           0 Nov 15 23:34 sys
drwxr-xr-x    2 root     root        4.0K Mar 12  2013 tmp
drwxr-xr-x    2 root     root        4.0K Nov 15 23:34 usr
 ---> b35f4035db3f
Step 3 : CMD echo Hello world
 ---> Running in 02071fceb21b
 ---> f52f38b7823e

注意 ---> Running in 02071fceb21b 輸出,你可以登入這些影象:

docker run -it 02071fceb21b bash