玖叶教程网

前端编程开发入门

docker attach 和 exec 区别(docker exec-it)

我们经常会使用 exec 很少使用 attach,他们都可以进入容器,之前有啥区别呢?我们先看attach,他会直接接管进程的IO,你可以直接看到nginx 的标准输出日志,如下:

当然你可以通过stdin 给进程输出数据。比如下面的例子:

mkdir x
# 启动容器挂载本地x 目录,将标准输入导入到 /x/y 文件中
docker run -itd --rm -v $PWD/x:/x --name cattainer busybox sh -c 'cat >/x/y'

# attach 容器后,输入一个hi
echo 'hi' | socat EXEC:"docker attach cattainer",pty STDIN

# 停止容器
docker stop cattainer

# 查看本地y 文件的内容
cat x/y

可以发现文件的内容就是上面输入的”hi“。

而 exec 是在容器里面单独启动了进程,如果从namespace的角度看,甚至可以说单独启动了一个容器,只不过和业务容器共享了namespace,所以当我们exec 进入的时候,仍然可以看到之前容器里面的进程。

所以,exec 的退出并不会给业务容器造成任何影响,和之前启动的业务进程没有一毛钱关系。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言