gpt4 book ai didi

linux - 探索 Docker 容器的文件系统

转载 作者:bug小助手 更新时间:2023-10-28 01:28:32 30 4
gpt4 key购买 nike

我注意到 docker 我需要了解容器内发生了什么或其中存在哪些文件。一个示例是从 docker 索引下载图像 - 您不知道图像包含什么,因此无法启动应用程序。

理想的情况是能够通过 ssh 访问它们或等效的。有没有工具可以做到这一点,或者我对 docker 的概念化认为我应该能够做到这一点是错误的。

最佳答案

这里有几种不同的方法...

A) 使用 docker exec (最简单)

Docker 1.3 或更新版本支持 exec 命令,其行为类似于 nsenter。此命令可以在已经运行的容器中运行新进程(容器必须已经运行 PID 1 进程)。您可以运行 /bin/bash 来探索容器状态:

docker exec -t -i mycontainer /bin/bash

Docker command line documentation

B) 使用快照

您可以通过这种方式评估容器文件系统:

# find ID of your running container:
docker ps

# create image (snapshot) from container filesystem
docker commit 12345678904b5 mysnapshot

# explore this filesystem using bash (for example)
docker run -t -i mysnapshot /bin/bash

这样,您可以在精确的时刻评估正在运行的容器的文件系统。容器仍在运行,未包含任何 future 更改。

您可以稍后使用(正在运行的容器的文件系统不受影响!)删除快照:

docker rmi mysnapshot

C) 使用 ssh

如果您需要持续访问,您可以将 sshd 安装到您的容器并运行 sshd 守护进程:

 docker run -d -p 22 mysnapshot /usr/sbin/sshd -D

# you need to find out which port to connect:
docker ps

这样,您可以使用 ssh 运行您的应用程序(连接并执行您想要的操作)。

D) 使用 nsenter

使用nsenter,见Why you don't need to run SSHd in your Docker containers

The short version is: with nsenter, you can get a shell into anexisting container, even if that container doesn’t run SSH or any kindof special-purpose daemon

关于linux - 探索 Docker 容器的文件系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20813486/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com