当前位置: 首页 > 知识库问答 >
问题:

如何从容器本身获取Docker Linux容器信息?

隆扬
2023-03-14

我想让我的docker容器知道它们的配置,就像您可以通过元数据获得EC2实例的信息一样。

我可以使用(提供docker正在监听端口4243

curl http://172.17.42.1:4243/containers/$HOSTNAME/json

获取它的一些数据,但想知道是否有更好的方法,至少是获取容器的完整ID,因为主机名实际上缩短为12个字符,docker似乎对其执行“最佳匹配”。

另外,如何获取docker主机的外部IP(除了访问特定于AWS的EC2元数据之外)

共有3个答案

柯琛
2023-03-14

在我看来,madeddie的一句评论非常优雅:

CID=$(basename $(cat /proc/1/cpuset))
茹元魁
2023-03-14

我发现容器id可以在/proc/self/cgroup中找到

因此,您可以通过以下方式获取id:

cat /proc/self/cgroup | grep -o  -e "docker-.*.scope" | head -n 1 | sed "s/docker-\(.*\).scope/\\1/"
万嘉石
2023-03-14

除非重写,否则主机名似乎是Docker 1.12中的短容器id

root@d2258e6dec11:/project# cat /etc/hostname
d2258e6dec11

外部

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED                 STATUS                      PORTS               NAMES
d2258e6dec11        300518d26271        "bash"              5 minutes ago       

$ docker -v
Docker version 1.12.0, build 8eab29e, experimental
 类似资料:
  • 问题内容: 我想了解它们的配置,就像通过元数据获取有关EC2实例的信息一样。 我可以使用(假设正在侦听port ) 来获取它的一些数据,但是想知道是否有更好的方法,至少获取容器的完整ID,因为实际上缩短到了12个字符,而docker似乎对其执行了“最佳匹配”。 另外,如何获取docker主机的外部IP(除了访问EC2元数据(特定于AWS)之外) 问题答案: 我发现可以在/ proc / self

  • 如何使用PHPDI加载数据库容器?这是我迄今为止尝试过的变体之一。 Settings.php init.php 系统用户详细信息。php 函数MyApp\Models\SystemUser\SystemUserDetails:的参数太少::\uu construct(),0传入/www/MyApp/Models/SystemUser。php位于第54行,正好是一个预期文件:/www/myapp/m

  • 问题内容: 从容器名称获取docker容器ID的命令是什么? 问题答案: 在Linux中: 或在OS X,Windows中: 您的容器名称在哪里。 如@llia Sidorenko所述,为避免产生误报,您可以使用正则表达式锚点,如下所示: 说明: 为了安静。仅输出ID 对所有人。即使您的容器未运行也能正常工作 用于过滤器。 容器名称必须以该字符串 开头 容器名称必须 结束 这个字符串

  • 从容器名称中获取Docker容器id的命令是什么?

  • 由于Docker从引擎版本20.10开始支持cgroup v2,因此它将自动在启用了cgroups v2的发行版上使用它。从容器中获取唯一容器ID的已知解决方案不再有效。 尝试与docker v20.10.8在Debian 11与阿尔卑斯山:最新。 cgroup v1的工作解决方案:如何从容器本身中获取DockerLinux容器信息? 正如docker参考中所述,对于cgroup v2,容器id在

  • 问题内容: 在大多数应用程序服务器上,J2EE Ejb规范禁止“手动”创建线程,因为这些资源应由服务器管理。 但是有什么方法可以从Tomcat,Glassfish,Jboss等获取线程;因此访问他们的ThreadPool? 问题答案: 您可以使用commonj WorkManager 。IBM和BEA提出了一项建议,以提供一种完成此任务的标准方法(访问容器管理的线程)。 尽管它没有包含在实际规范中