docker进入一个正在执行的镜像的命令(docker 镜像库)

Docker进入一个正在执行的镜像的命令

Docker 启动容器是仿真了一个虚拟的环境, 容器之间是相互隔离的, 然而我们有时需要与容器的shell进行交互,那么应该如何进入到一个正在执行的Docker 容器中呢?本文将对此进行介绍。

使用docker attach 命令

一个容器启动后,它的stdin,stdout和stderr三个标准流被修改成与当前终端挂钩, 这时我们想进入容器内部,可以使用docker attach命令,该命令能够将容器的stdin,stdout和stderr三个标准流与当前终端进行关联。

语法: docker attach ID或名称

例如:

docker run --name mycontainer -d ubuntu:14.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"

在一个名为mycontainer的ubuntu容器内部的bashshell 执行以下命令

docker attach mycontainer

注意:

在使用docker detach离开进程之后容器并没有停止运行, 还需要输入exit或Ctrl-D来退出容器的交互.

使用docker exec 命令

使用docker attach 命令可以使用正在执行的容器shell进行交互。但是当在shell中运行长期运行的命令时,该交互会被占用, 导致其他人员无法进入容器。同时,请注意,如果使用docker start重新启动容器,将无法再次在容器STDIN上进行attach操作(当您使用interactive停止容器时就会出现这种情况,比方通过CTRL+c).

为了解决这个问题,可以使用docker exec 命令进入运行中的容器运行命令。docker exec 命令通过使用一个新的进程来执行指定的命令,该命令不会占用STDIN。

语法: docker exec [OPTIONS]CONTAINER COMMAND [ARG...]

例如:

docker exec -it mycontainer bash

这个运行容器mycontainer中的bash shell并启用交互会话,因此您可以在容器内部输入任何命令。如果容器中没有bash,可以使用任何其他支持交互操作的shell,如sh或zsh。

总之,使用docker attach 命令可以与一个正在运行的容器shell进行交互,但是如果没有退出该容器,且容器中没有运行交互式命令,则其他人员将无法进入容器。因此使用docker exec命令更加可取,该命令会为每个命令启动一个完全不同的进程,因此可以通过多个shell并行访问同一个容器。

本文来自投稿,不代表亲测学习网立场,如若转载,请注明出处:https://www.qince.net/dockera3xtfj.html

郑重声明:

本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。

我们不承担任何技术及版权问题,且不对任何资源负法律责任。

如遇到资源无法下载,请点击这里失效报错。失效报错提交后记得查看你的留言信息,24小时之内反馈信息。

如有侵犯您的版权,请给我们私信,我们会尽快处理,并诚恳的向你道歉!

(0)
上一篇 2023年6月22日 下午4:34
下一篇 2023年6月22日 下午4:34

猜你喜欢