可观测学堂

可观测问答

聚焦概念、架构、排障、价格与选型,一篇解决一个明确问题。

如何从宿主机获取 Docker 容器的 IP 地址? cover
概念指南

如何从宿主机获取 Docker 容器的 IP 地址?

docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 容器名 即可拿到容器 IP;容器在哪个网络就有哪个网段的 IP。

Dockerfile 里怎么写注释? cover
概念指南

Dockerfile 里怎么写注释?

Dockerfile 用 # 开头写注释,独占一行,不支持行尾注释;指令参数里的 # 不算注释。另可用 parser directive 指定语法版本。本文说明规则与常见坑。

如何在 cron 任务中访问 Docker 容器的环境变量? cover
概念指南

如何在 cron 任务中访问 Docker 容器的环境变量?

cron 守护进程不读取容器启动时的环境变量,常见解法:启动脚本把 env 导出到文件(env > /etc/environment)让 cron 源它,或用 docker run -e 显式传入。本文给出可靠做法。

如何从 Docker 容器内部访问宿主机上的端口? cover
概念指南

如何从 Docker 容器内部访问宿主机上的端口?

容器内访问宿主机服务,用特殊域名 host.docker.internal:端口(Linux 需 --add-host host.docker.internal:host-gateway),或宿主机内网 IP;宿主机服务要监听 0.…

如何给已经在运行的 Docker 容器添加数据卷? cover
概念指南

如何给已经在运行的 Docker 容器添加数据卷?

Docker 不支持给运行中的容器直接加卷,只能基于原配置重建容器并加 -v 挂载。本文给出 docker commit 保留改动、compose 改文件重建等平滑迁移方法。

如何给已存在的 Docker 容器添加端口映射? cover
概念指南

如何给已存在的 Docker 容器添加端口映射?

端口映射只能在创建容器时指定,运行中的容器无法直接添加 -p 映射;标准做法是停掉原容器、用相同配置加新端口重建。本文给出完整迁移步骤与替代方案。

如何 attach(接入)和 detach(脱离)Docker 容器的进程? cover
概念指南

如何 attach(接入)和 detach(脱离)Docker 容器的进程?

docker attach 容器名 把终端接到容器主进程的 stdin/stdout;退出而不停止容器按 Ctrl+P Ctrl+Q;按 Ctrl+C 会发 SIGINT 可能停掉进程。本文讲清与 exec 的区别。

Docker 中如何修改镜像名(仓库名)或容器名? cover
概念指南

Docker 中如何修改镜像名(仓库名)或容器名?

镜像改名用 docker tag 旧名 新名(加别名,再 docker rmi 旧名删除别名);容器改名用 docker rename。本文说明名称与 ID 的关系及常见操作。

从容器内连接宿主机服务:几种方式详解与排错 cover
概念指南

从容器内连接宿主机服务:几种方式详解与排错

容器访问宿主机服务的三种方式:host.docker.internal 域名、docker0 网桥 IP(Linux)、host 网络模式;连接不通时按监听地址、防火墙、DNS 解析三步排查。

如何从容器外部连接 Docker 里运行的 PostgreSQL? cover
概念指南

如何从容器外部连接 Docker 里运行的 PostgreSQL?

启动容器时用 -p 5432:5432 映射端口并设 POSTGRES_PASSWORD,外部用 psql -h 宿主机 -p 5432 -U 用户 连接;注意认证配置与数据卷持久化。本文给出完整步骤。

Docker 构建(docker build)失败时如何调试? cover
概念指南

Docker 构建(docker build)失败时如何调试?

调试构建失败五步走:读报错定位失败层、用 --progress=plain 看完整输出、--no-cache 排除缓存干扰、复用最后成功的层起临时容器手动执行、检查 .dockerignore 与上下文。本文详解每一步。

如何从 Docker 容器脱离(detach)而不停止它? cover
概念指南

如何从 Docker 容器脱离(detach)而不停止它?

attached 模式下按 Ctrl+P 然后 Ctrl+Q 即可脱离容器且保持运行;Ctrl+C 会把信号发给主进程导致容器停止。日常建议用 -d 后台运行 + docker logs/exec 查看。