可观测学堂

可观测问答

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

如何在 Docker 容器中运行 Nginx 并保持不退出? cover
概念指南

如何在 Docker 容器中运行 Nginx 并保持不退出?

官方 nginx 镜像默认以前台模式运行(daemon off),直接 docker run -d -p 80:80 nginx 即可;自建镜像需保证 CMD 为 nginx -g daemon off;,主进程前台是容器不退出的关键。

Dockerfile 里能指定(设置)镜像的名称吗? cover
概念指南

Dockerfile 里能指定(设置)镜像的名称吗?

不能。Dockerfile 里没有给产物镜像命名的指令,FROM 指定的是基础镜像;镜像名在构建时用 docker build -t 名称:标签 指定,也可事后 docker tag 改名。本文澄清常见误解。

如何让 Docker 容器在机器重启后自动启动? cover
概念指南

如何让 Docker 容器在机器重启后自动启动?

用重启策略:docker run --restart always(或 unless-stopped),已有容器用 docker update --restart 修改;Docker 官方推荐用重启策略而非 systemd 等进程管…

Dockerfile 中如何修改 PATH 环境变量? cover
概念指南

Dockerfile 中如何修改 PATH 环境变量?

用 ENV 指令:ENV PATH="/新目录:${PATH}"——追加到现有 PATH 前面(优先级更高)或后面;ENV 对构建期 RUN 与运行期容器都生效,与只在 RUN 里 export 有本质区别。

镜像更新后,如何升级正在运行的 Docker 容器? cover
概念指南

镜像更新后,如何升级正在运行的 Docker 容器?

镜像更新不会自动作用到已建容器:docker pull 拉新镜像 → docker stop + rm 旧容器 → 按原参数重建(数据在卷里不丢)。

Minikube 中如何使用本地的 Docker 镜像? cover
概念指南

Minikube 中如何使用本地的 Docker 镜像?

三种方式让 Minikube 用上本地镜像:minikube image load 载入、eval $(minikube docker-env) 直接用其守护进程构建、minikube image build。

如何在 Docker 容器内使用 SSH 密钥? cover
概念指南

如何在 Docker 容器内使用 SSH 密钥?

容器内用 SSH 密钥的安全做法:挂载密钥目录为只读卷(-v ~/.ssh:/root/.ssh:ro)或构建期用 BuildKit 的 --mount=type=ssh;切忌 COPY 私钥进镜像。本文给出各方案与安全对比。

如何在 Docker 容器内使用 sudo? cover
概念指南

如何在 Docker 容器内使用 sudo?

容器默认以 root 运行时根本不需要 sudo;非 root 用户需要提权时,镜像里先 apt install sudo 并配置 sudoers,或直接用 docker exec -u root 以 root 进入。

如何查看 Docker 镜像里包含什么内容? cover
概念指南

如何查看 Docker 镜像里包含什么内容?

查看镜像内容四种方法:起容器 exec 进去看、docker create+export 导出文件系统不启动容器、docker history 看分层构建历史、用 dive 工具逐层可视化。本文给出命令与场景选择。

Docker 构建时如何引用构建上下文之外的文件? cover
概念指南

Docker 构建时如何引用构建上下文之外的文件?

COPY/ADD 只能访问构建上下文内的文件。解法:docker build -f 路径/Dockerfile . 把上下文设为上层目录;或用 BuildKit 的额外上下文(--build-context)、多阶段构建。本文对比各方案。

如何查看 Docker 容器列表? cover
概念指南

如何查看 Docker 容器列表?

docker ps 看运行中的容器,docker ps -a 看全部(含已停止),-q 只出 ID,--filter 按条件过滤,--format 自定义输出。本文汇总常用组合与脚本用法。

如何把宿主机目录挂载进 Docker 容器? cover
概念指南

如何把宿主机目录挂载进 Docker 容器?

docker run -v /宿主机/路径:/容器/路径 即绑定挂载,实时双向同步;加 :ro 只读。Dockerfile 里不能做主机挂载(不可移植),ADD/COPY 是构建期拷贝不是挂载。本文讲清区别与坑。