最近工作上经常用到docker命令的应用,在交接工作时别人告诉我如果进入到docker container时需要用docker attach命令,我平时一般用到docker exec来进入docker, 这两个命令都是可以实现进入docker container的目的,但是两者有什么区别呢?

docker attach

docker attach可以attach到一个已经运行的容器的stdin,然后进行命令执行的动作。但是需要注意的是,如果从这个stdin中exit,会导致容器的停止。
PS:

  1. docker attach 命令输入后会卡顿,需要手动敲入Enter后才能到达container里面。
  2. 在我的容器内输入Ctrl+C是不起作用的。
  3. 输入exit或者Ctrl+D后容器直接退出会导致container的停止。
auto@auto-vm:~$ docker attach a18830d5b885
root@a18830d5b885:/#
root@a18830d5b885:/# ls
000test     
root@a18830d5b885:/# ^C
root@a18830d5b885:/# exit
exit
auto@auto-vm:~$

docker exec

用docker exec -it命令进入容器如果输入exit命令直接退出container,但是不会使得container停止,平时我用这个命令比较多。

auto@auto-vm:~$ docker exec -it 75916c3c83c3 bash
root@75916c3c83c3:/# ls
000test     
root@75916c3c83c3:/# exit
exit
auto@auto-vm:~$
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐