You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在运行Python应用的Docker容器内获取容器名称?

获取Docker容器名称的几种方法

方法1:启动容器时手动传入容器名称作为环境变量

这是最直接的方案,不需要依赖Docker内部API或额外工具。启动容器时,通过-e参数把容器名称直接传递进去:

docker run -d --name myfancyname -e CONTAINER_NAME=myfancyname python:3.11.2-alpine your-app.py

然后在Python代码里直接读取这个环境变量:

import os

container_name = os.getenv("CONTAINER_NAME")
print(f"当前容器名称:{container_name}")

方法2:挂载Docker套接字,通过Docker API查询

如果不想手动传参,可以挂载Docker主机的套接字到容器内,利用Docker API根据容器ID(即HOSTNAME)反向查询名称:

步骤1:启动容器时挂载套接字

docker run -d --name myfancyname -v /var/run/docker.sock:/var/run/docker.sock python:3.11.2-alpine your-app.py

步骤2:两种实现方式

方式A:使用Python Docker SDK

先在容器内安装docker库:

pip install docker

然后编写Python代码:

import os
import docker

client = docker.DockerClient(base_url='unix://var/run/docker.sock')
container_id = os.getenv("HOSTNAME")
container = client.containers.get(container_id)
container_name = container.name
print(f"当前容器名称:{container_name}")

方式B:直接调用docker inspect命令

如果不想装Python SDK,可以在alpine容器内先安装docker-cli:

apk add --no-cache docker-cli

然后用Python执行命令解析结果:

import os
import subprocess
import json

container_id = os.getenv("HOSTNAME")
result = subprocess.run(
    ["docker", "inspect", "--format", "{{.Name}}", container_id],
    capture_output=True,
    text=True
)
# 解析结果,去掉开头的/
container_name = result.stdout.strip().lstrip("/")
print(f"当前容器名称:{container_name}")

注意事项

  • 挂载Docker套接字会让容器拥有主机上的Docker权限,生产环境要谨慎使用,确保容器的信任度。
  • 用alpine镜像时,若安装docker-cli遇到找不到包的情况,可先执行apk update更新源。

内容的提问来源于stack exchange,提问作者kwisi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 03:10:13