Docker attach VS exec

文章讲述了Docker中attach和exec两种进入容器的方式及其区别。attach直接连接到启动命令的终端,不会启动新进程,而exec则可以在容器内开启新终端和进程。退出attach需用Ctrl+p+q,exit会停止容器,而exec中exit仅退出终端不终止容器。在生产环境中,通常使用dockerlogs-f来动态查看输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

docker-attach


我们知道,进入容器常用的两种方式为:docker exec ...docker attach ...,那这两者有什么区别呢?

首先,运行一个测试容器,并在启动容器时运行相关指令,如下:

docker run --name test -d ubuntu /bin/bash -c "while true; do sleep 1; echo hello world; done"

image-20230605112140003

1、attach 进入容器

docker attach test

如何退出容器而不停止容器运行?方法:Ctrl + p + q,如果使用 exit 那退出容器后,容器也会随之停止运行。

2、exec 进入容器

image-20230605113008592

那这又如何退出容器呢?exec 方式的话,直接 exit 退出容器即可(且容器不会停止运行)。

从这两者方式进入容器,不难发现,这两者的主要区别如下:

  • attach 直接进入容器启动命令的终端,不会启动新进程,并以 Ctrl + p + q 不终止容器退出;
  • exec 则是在容器中打开新的终端,且可启动新的进程,以 exit 不终止容器退出;
  • 因此,如果想直接在终端中查看启动命令的输出,可使用 attach,否则使用 exec

但实际生产中,看启动输出,一般我们是通过 docker logs -f ... 命令,如下图所示:

image-20230605113739418

其中 -f 选项是以动态的形式查看输出结果,效果类似 tailftail -f

—END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云计算-Security

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值