将 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