Docker镜像推送后无法查看及MariaDB容器IP查询技术问题
问题解决:获取MariaDB容器IP及镜像可见性说明
获取MariaDB容器IP的方法
方法1:通过docker inspect提取IP
如果已经启动了容器,可通过容器ID或名称直接查询内部IP:
# 获取最新启动容器的IP(适合刚执行完docker run的场景) docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -q --latest)
如果启动容器时指定了名称(推荐):
# 启动时添加--name参数指定容器名 docker run --name mariadb-dump --publish 3306:3306 <some_repo_name>.azurecr.io/databasedump:7578 # 通过容器名查询IP docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mariadb-dump
方法2:无需IP,直接用容器名/localhost连接
- 若Python代码和容器在同一Docker网络,可直接用容器名作为数据库主机地址(Docker内置DNS支持解析容器名),示例Python代码:
import mysql.connector db_conn = mysql.connector.connect( host="mariadb-dump", user="your_username", password="your_password", database="your_database", port=3306 ) - 若Python代码运行在流水线主机环境,因为已经做了端口映射
3306:3306,直接用localhost或流水线主机IP即可连接,无需容器内部IP。
镜像可见性问题的原因
- 流水线的不同任务/不同流水线通常运行在隔离的环境(独立代理节点或临时容器),前一个任务推送的镜像仅存在于该任务的运行环境中,后续任务或其他流水线的环境是全新的,因此
docker image ls无法看到之前的镜像。 - 同一条流水线中
docker pull和docker run无报错,是因为命令从Azure容器注册表(ACR)拉取了镜像,而非使用本地已存在的镜像,任务结束后环境可能被自动清理,导致后续无法查到镜像。
内容的提问来源于stack exchange,提问作者Ivajlo Iliev
相关产品推荐
相关产品推荐

