docker attach 和 docker exec
docker attach
docker attach -- Attach to a running container.
常用选项:
--sig-proxy=true:Proxy all received signals to the process. 当指定--sig-proxy=false时,ctrl+c和ctrl+d 不会传递信号给docker进程而关闭容器。
用法:
docker attach [OPTIONS] CONTAINER
docker attach可以attach到一个已经在运行的容器的stdin,然后进行命令执行的动作。
但是需要注意的是,如果直接从这个stdin中exit(ctrl+d),会导致容器的停止。非常不建议使用此命令操作容器。
如果不小心退出了,再次启动容器,进入容器启动服务即可。
正确的退出姿势 --> 组合键:Ctrl+P+Q
另外,docker attach 有类似 screen 可以共享屏幕的作用。同时attach到同一个container可以看到同步操作。
docker exec
docker exec -- Run a command in a running container.
用法:
docker exec [OPTIONS] CONTAINER COMMAND
常用选项:
-d, --detach=false:Detached mode: run command in the background. 分离模式,在后台执行COMMAND。
-i, --interactive=false:Keep STDIN open even if not attached. 保持标准输出。如果不加该选项,执行命令会没有输出。
-t, --tty=false:Allocate a pseudo-TTY. 分配一个虚拟终端。
同时使用 -it 选项时,会打开一个跟我们平时使用的TTY一样的终端。也不会像attach方式因为退出终端,导致整个容器退出。