我们知道,进入容器常用的两种方式为:docker exec ...
、docker attach ...
,那这两者有什么区别呢?
首先,运行一个测试容器,并在启动容器时运行相关指令,如下:
docker run --name test -d ubuntu /bin/bash -c "while true; do sleep 1; echo hello world; done"
1、attach 进入容器
docker attach test
如何退出容器而不停止容器运行?方法:Ctrl + p + q
,如果使用 exit
那退出容器后,容器也会随之停止运行。
2、exec 进入容器
那这又如何退出容器呢?exec 方式的话,直接 exit 退出容器即可(且容器不会停止运行)。
从这两者方式进入容器,不难发现,这两者的主要区别如下:
- attach 直接进入容器启动命令的终端,不会启动新进程,并以
Ctrl + p + q
不终止容器退出; - exec 则是在容器中打开新的终端,且可启动新的进程,以
exit
不终止容器退出; - 因此,如果想直接在终端中查看启动命令的输出,可使用
attach
,否则使用exec
。
但实际生产中,看启动输出,一般我们是通过 docker logs -f ...
命令,如下图所示:
其中 -f
选项是以动态的形式查看输出结果,效果类似 tailf
或 tail -f
。
—END