4.10 进入容器

在使用 -d 参数时,容器启动后会进入后台,用户无法看到容器中的信息,也无法进行操作。这个时候如果需要进入容器进行操作,推荐使用官方的attachexec命令。

1. attach命令

attach是Docker自带的命令,命令格式为docker [container] attach [--detach-keys=string] [--no-stdin] [--sig-proxy[=true]]:

这个命令支持三个主要选项:

  • --detach-keys=string:指定退出attach模式的快捷键序列,默认是CTRL-p,CTRL-q,需要同时按下CTRL键、p和q这三个键;

  • --no-stdin=true|false:是否关闭标准输入,默认是保持打开;

  • --sig-proxy=true|false:是否代理收到的系统信号给应用进程,默认为true。

当多个窗口同时attach到同一个容器的时候,所有窗口都会同步显示;当某个窗口因命令阻塞时,其他窗口也无法执行操作了。

2. exec命令

可以使用docker exec命令在运行中容器内直接执行任意命令,命令格式为docker [container] exec [-d|--detach] [--detach-keys=string] [-i|--interactive] [--privileged] [-t|--tty] [-u|--user=USER] CONTAINER COMMAND [ARG...]

比较重要的参数有:

  • -d, --detach:在容器中后台执行命令;

  • --detach-keys=string:指定将容器切回后台的按键;

  • -e, --env=[]:指定环境变量列表;

  • -i, --interactive=true|false:打开标准输入接受用户输入命令,默认值为false;

  • --privileged=true|false:是否给执行命令以高权限,默认值为false;

  • -t, --tty=true|false:分配伪终端,默认值为false;

  • -u, --user=string:执行命令的用户名或ID。

例如,进入到刚创建的容器中,并启动一个bash:

$ docker exec -it a96249ecc8dd /bin/bash
root@a96249ecc8dd:/# 

Last updated