
Docker 环境变量传递进阶:优先级、覆盖与排错
Docker 环境变量的优先级:docker run -e > compose environment > env_file > Dockerfile ENV;ARG 只存在于构建期。
聚焦概念、架构、排障、价格与选型,一篇解决一个明确问题。

Docker 环境变量的优先级:docker run -e > compose environment > env_file > Dockerfile ENV;ARG 只存在于构建期。

两种方式:yml 里配 tty: true + stdin_open: true + command: sh 然后 docker compose up;或对运行中的服务用 docker compose exec 服务名 sh。

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

docker container prune 一键清理所有停止的容器;docker system prune 连未用镜像网络一起清;按条件清理用 docker rm $(docker ps -aq --filter ...)。

docker image prune 清悬空(<none>)镜像;docker image prune -a 清所有没被容器使用的镜像;docker system prune -a 连容器网络一起清。

docker run 镜像名:标签 即从镜像创建并启动容器;常用参数:-it 交互、-d 后台、--name 命名、-p 端口、-v 挂载、-e 环境变量。本文给出入门到常用的完整说明。

values.yaml 是静态文件,不支持模板语法,不能直接用 .Release.Name;替代方案:模板里直接引用 .Release.Name、用 required/默认函数组合、或 --set 从命令行注入。本文给出可行做法。

要完整虚拟机(独立内核、异构 OS)选 Vagrant;要轻量、秒级、可移植的应用运行环境选 Docker。本文按隔离层级、启动速度、资源占用、适用场景全面对比。

Compose 管单机上的多容器应用(简单 YAML、单机网络);K8s 管跨主机集群的容器编排(扩缩容、自愈、滚动发布、服务发现)。小项目/单机用 Compose,生产集群用 K8s。本文全面对比。

links 是已废弃的网络连接指令(建立别名通信),depends_on 控制启动顺序(可配 service_healthy 等就绪)。现代 compose 同网络服务天然互通,只需 depends_on;别再写 links。

卷权限问题源于容器内 UID 与宿主机文件属主不匹配。最佳实践:明确容器运行 UID、宿主机预先 chown 对齐、优先命名卷(Docker 自动初始化权限)、避免宽限 777。本文给出完整方案。

Dockerfile 定义单个镜像怎么构建(装什么、拷什么、怎么启动);docker-compose.yml 定义多个容器怎么协同运行(用哪些镜像、网络、卷、端口)。一个管"造",一个管"跑"。本文讲清分工与配合。