第 4 章 容器 - 023 - 两种进入容器的方法

两种进入容器的方法

docker attach

通过 docker attach 可以 attach 到容器启动命令的终端,例如:

1 root@ubuntu:~# docker run -d ubuntu /bin/bash -c "while true ;do sleep 1;echo I_am_in_container;done"
2 d7534aebaf5488f112d9d7d3558fc04b18a9c2ae6a8a6ffd735f0923a7e0bdf5
3 root@ubuntu:~# 
4 root@ubuntu:~# docker attach d7534aebaf5488f112d9d7d3558fc04b18a9c2ae6a8a6ffd735f0923a7e0bdf5
5 I_am_in_container
6 I_am_in_container
7 I_am_in_container
8 I_am_in_container

通过 “长ID” attach 到了容器的启动命令终端,看到的是echo 每隔一秒打印的信息。

!!!注:可通过 Ctrl+p 然后 Ctrl+q 组合键退出 attach 终端。N多资料都是这样讲的,实际操作中没有退出终端。

docker exec

通过 docker exec 进入相同的容器:

 1 root@ubuntu:~# docker exec -it d7534aebaf54 bash
 2 root@d7534aebaf54:/# 
 3 root@d7534aebaf54:/# ps -elf
 4 F S UID        PID  PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
 5 4 S root         1     0  0  80   0 -  4594 wait   08:41 ?        00:00:00 /bin/bash -c while true ;do sleep 1;echo I_am_in_container;done
 6 4 S root       303     0  0  80   0 -  4627 wait   08:46 pts/0    00:00:00 bash
 7 0 S root       319     1  0  80   0 -     0 ?      08:46 ?        00:00:00 [sleep]
 8 0 R root       320   303  0  80   0 -  8600 -      08:46 pts/0    00:00:00 ps -elf
 9 root@d7534aebaf54:/# 
10 root@d7534aebaf54:/# exit
11 exit
12 root@ubuntu:~#

说明:

  • -it 以交互模式打开 pseudo-TTY,执行 bash,其结果就是打开了一个 bash 终端。
  • 进入到容器中,容器的 hostname 就是其 “短ID”。
  • 可以像在普通 Linux 中一样执行命令。ps -elf 显示了容器启动进程while 以及当前的 bash 进程。
  • 执行 exit 退出容器,回到 docker host。

docker exec -it <container> bash|sh 是执行 exec 最常用的方式。

attach VS exec

attach 与 exec 主要区别如下:

  1. attach 直接进入容器 启动命令 的终端,不会启动新的进程。
  2. exec 则是在容器中打开新的终端,并且可以启动新的进程。
  3. 如果想直接在终端中查看启动命令的输出,用 attach;其他情况使用 exec。

查看启动命令的输出,可以使用 docker logs 命令:

1 root@ubuntu:~# docker logs -f  d7534aebaf54
2 I_am_in_container
3 I_am_in_container
4 I_am_in_container
5 I_am_in_container
6 I_am_in_container
  • -f 的作用与 tail -f 类似,能够持续打印输出。

--------------------------引用来自--------------------------------

https://mp.weixin.qq.com/s?__biz=MzIwMTM5MjUwMg==&mid=2653587641&idx=1&sn=ac54f44b34834dfd5ed0d0accaf705d1&chksm=8d3080a0ba4709b6d66e55e0b7154b402687298f75f7232306670daba3a9f4b7181b8bc35482&scene=21#wechat_redirect

猜你喜欢

转载自www.cnblogs.com/gsophy/p/10278883.html