Docker 进入容器内的 Linux 的交互命令行

概要

Docker 镜像都是基于各种版本的 Linux 的基础镜像构建的。那么我们如何从宿主机进入已经在运行的 docker 容器的 Linux 的命令行呢;我们又如何能进入容器的 Linux 交互命令行作为 root 用户呢?请看下文。

正文

1、查看要进入的容器的 CONTAINER ID

如下示例:

➜  ~ sudo docker ps -a                         
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                         PORTS                                            NAMES
80045ea2ebaf        my_jboss_v1.0.1     "/opt/jboss/wildfly/…"   6 minutes ago       Up 6 minutes                   0.0.0.0:8080->8080/tcp, 0.0.0.0:9990->9990/tcp   my_jboss_v1.0.1
15ee503df884        nginx               "nginx -g 'daemon of…"   28 minutes ago      Up 28 minutes                  0.0.0.0:18000->80/tcp                            nginx_v1.0.0
d23c3ce1b193        mysql:5.7           "docker-entrypoint.s…"   38 minutes ago      Exited (1) 38 minutes ago                                                       mystifying_hermann
a5134f112349        jboss/wildfly       "/opt/jboss/wildfly/…"   2 hours ago         Exited (0) About an hour ago                                                    bold_black
881250e83ebb        ubuntu              "/bin/sh -c 'while t…"   3 weeks ago         Exited (255) 3 weeks ago       0.0.0.0:8888->8888/tcp                           adoring_bell

2、进入容器中作为默认用户

如下示例,如提示输入密码,请输入你宿主机(本机,你的电脑)的密码。

从第一步查到的 CONTAINER ID 是 80045ea2ebaf,但我们不用写完整的 CONTAINER ID,只需要写足够与其他 CONTAINER ID 区分即可。

比如,上面我的 docker 容器有 80045ea2ebaf 与 881250e83ebb 都是 8 开头,那么就不能只写一个 8,可以写 80。

➜  ~ sudo docker exec -it 8 /bin/bash
Error response from daemon: Multiple IDs found with provided prefix: 8

➜  ~ sudo docker exec -it 80 /bin/bash
Password:

[jboss@80045ea2ebaf ~]$ 

3、执行如下命令使用 root 用户进入容器

➜  ~ sudo docker exec -u root -it 80 /bin/bash
[root@80045ea2ebaf jboss]# 
[root@80045ea2ebaf jboss]# 
[root@80045ea2ebaf jboss]#

结尾

docker exec 的参数如下:

➜  ~ docker exec --help          


Usage:  docker exec [OPTIONS] CONTAINER COMMAND [ARG…]

Run a command in a running container

Options:

  -d, –detach               Detached mode: run command in the background

      –detach-keys string   Override the key sequence for detaching a container

  -e, –env list             Set environment variables

  -i, –interactive          Keep STDIN open even if not attached

      –privileged           Give extended privileges to the command

  -t, –tty                  Allocate a pseudo-TTY

  -u, –user string          Username or UID (format: <name|uid>[:<group|gid>])

  -w, –workdir string       Working directory inside the container

You may also like...

发表评论

电子邮件地址不会被公开。 必填项已用*标注

%d 博主赞过: