通常,需要将外壳附加到已经运行的Docker容器上。 这非常有用,尤其是对于调试。 该博客将说明如何将Shell附加到已经运行的Docker容器。
因此,假设您以分离模式运行Couchbase Docker容器:
> docker run -d couchbase/server
02061ddf0a3d1b2806a1ee6e354f4064d9d2ff4d84d8c96c0273c8883917a92f
在这种情况下,运行容器将为您提供完整的容器ID,即02061ddf0a3d1b2806a1ee6e354f4064d9d2ff4d84d8c96c0273c8883917a92f
。
可以验证为:
> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
02061ddf0a3d couchbase/server "/entrypoint.sh couch" 38 seconds ago Up 37 seconds 8091-8093/tcp, 11207/tcp, 11210-11211/tcp, 18091-18092/tcp clever_hypatia
或完整的容器ID可以验证为:
> docker ps --no-trunc
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
02061ddf0a3d1b2806a1ee6e354f4064d9d2ff4d84d8c96c0273c8883917a92f couchbase/server "/entrypoint.sh couchbase-server" About a minute ago Up 59 seconds 8091-8093/tcp, 11207/tcp, 11210-11211/tcp, 18091-18092/tcp clever_hypatia
将Shell附加到Docker容器
Bash shell可以使用docker exec -it {CID} bash
附加到已经运行的容器。 {CID}
可以是完整的容器ID,截断的容器ID,甚至可以是所有当前运行的容器中容器ID的前几位。
因此,以下三个命令在我们的情况下是等效的:
使用完整的容器ID附加
> docker exec -it 02061ddf0a3d1b2806a1ee6e354f4064d9d2ff4d84d8c96c0273c8883917a92f bash
root@02061ddf0a3d:/#
使用截断的容器ID附加
> docker exec -it 02061ddf0a3d bash
root@02061ddf0a3d:/#
在这种情况下,仅指定0
,因为这是唯一正在运行的容器。 如果正在运行的多个容器的起始编号为0
,则需要使容器ID唯一的前几位数字。
请享用!
翻译自: https://www.javacodegeeks.com/2015/11/attach-shell-docker-container.html