
Dockerfile 中如何修改 PATH 环境变量?
用 ENV 指令:ENV PATH="/新目录:${PATH}"——追加到现有 PATH 前面(优先级更高)或后面;ENV 对当前构建阶段后续步骤及继承该阶段的镜像运行期生效,与只在 RUN 里 export 有本质区别。
聚焦概念、架构、排障、价格与选型,一篇解决一个明确问题。

用 ENV 指令:ENV PATH="/新目录:${PATH}"——追加到现有 PATH 前面(优先级更高)或后面;ENV 对当前构建阶段后续步骤及继承该阶段的镜像运行期生效,与只在 RUN 里 export 有本质区别。

镜像更新不会自动作用到已建容器:先拉取新镜像,记录配置并备份,再停止旧容器、按原配置重建。

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

容器内用 SSH 密钥:仅挂载所需密钥与已核验 known_hosts,只读不防止密钥泄露;构建期可用 BuildKit 的 --mount=type=ssh;切忌 COPY 私钥进镜像。本文给出各方案与安全对比。

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

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

普通本地 COPY/ADD 源受构建上下文限制;COPY --from 与 ADD 远程源有各自支持范围。解法:docker build -f 路径/Dockerfile . 把上下文设为上层目录;或用 BuildKit 的额外上下文(--build-context)、多阶段构建。本文对比各方案。

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

docker run -v /宿主机/路径:/容器/路径 即绑定挂载,共享文件系统视图;加 :ro 只读。Dockerfile 不能声明部署时的宿主机绑定挂载,ADD/COPY 是构建期拷贝不是挂载。本文讲清区别与坑。

Docker run 中 -e 覆盖镜像 ENV;Compose 的 environment 覆盖 env_file,再覆盖镜像 ENV,compose run -e 可覆盖该次配置;ARG 只存在于构建期。

一次性调试用 docker compose run;运行中的服务用 docker compose exec 服务名 sh。

不会——-d 只是后台运行,容器会一直跑到主进程退出或被 docker stop;但主进程退出(如命令执行完)容器就停。本文解释容器生命周期与保活要点。