跳到主要内容

32 篇博文 含有标签「Docker」

查看所有标签

排查容器里的环境问题时,docker exec 比重启更有价值

· 阅读需 3 分钟
一介布衣
全栈开发者

有些容器问题并不是“起不来”,而是明明已经在运行,表现却和预期不一样。比如环境变量没生效、工作目录不对、配置文件路径错了、依赖包实际没有安装完整。这个时候如果只会不停重启容器,排查会非常低效。对这类问题来说,docker exec 往往比“再试一次”更有价值,因为它让你直接进入现场。

本地开发用 Docker 时,volume 和 bind mount 该怎么选

· 阅读需 3 分钟
一介布衣
全栈开发者

Docker 用到一定阶段后,几乎都会碰到一个问题:容器里的数据到底是保存在 volume,还是直接绑定宿主机目录。这个选择看起来像是命令层面的细节,实际上很影响本地开发效率。因为它决定了你改代码是否能实时生效、数据库数据是否好迁移、环境重建时会不会把重要内容一起清掉。

Docker 日志排查时,先把 follow、tail、since 这几个选项用顺手

· 阅读需 3 分钟
一介布衣
全栈开发者

本地容器一旦启动失败或者接口突然异常,很多人的第一反应都是先 docker exec 进去看看,或者直接把容器删掉重启。这样做当然有时候也能解决问题,但从排查效率看,并不总是最优。很多容器问题,其实靠 docker logs 就能先把大方向判断出来,尤其是把 followtailsince 这些选项用顺手以后,定位速度会快不少。

Docker 构建速度总是上不来?先看看镜像层和上下文

· 阅读需 3 分钟
一介布衣
全栈开发者

很多人第一次写 Dockerfile 时,只关心“能不能构建成功”。等到项目稍微变大一点,就会开始抱怨镜像构建太慢。这个时候常见的反应是去找加速源、换基础镜像、甚至怀疑 Docker 本身不稳定。但经验告诉我,真正拖慢本地构建速度的,很多时候不是网络,而是你自己把缓存层次和构建上下文写得太随意了。

Docker Compose 入门里最实用的一点:服务名就是网络地址

· 阅读需 3 分钟
一介布衣
全栈开发者

刚开始用 Docker Compose 做本地联调时,最容易犯的错误就是还在用宿主机思维理解容器之间的访问关系。比如 API 容器去连数据库时,配置里还写 127.0.0.1,结果明明数据库已经启动了,应用还是一直报连接失败。这个问题其实不是 Compose 配错了,而是没有建立起一个很关键的认知:同一个 Compose 网络里,服务名本身就是彼此访问时最方便的地址。

Mac 上用 Docker Desktop,本地开发前先看资源限制

· 阅读需 3 分钟
一介布衣
全栈开发者

很多人刚在 Mac 上装好 Docker Desktop,第一反应都是先拉镜像、起容器、跑服务。等到容器越来越多,才开始发现编译慢、数据库启动慢、桌面风扇狂转、系统内存被吃掉一大块。这个时候再怀疑镜像源、怀疑命令写法,往往已经偏题了。对 Mac 环境来说,资源限制配置本身就是本地开发体验的一部分。

Docker Compose 网络别名,能把本地联调变得更像线上

· 阅读需 2 分钟
一介布衣
全栈开发者

容器化本地开发有一个很常见的问题:服务虽然都起来了,但互相调用时用的地址特别随意。今天写死一个容器名,明天改成宿主机端口,后天又因为换了 compose 文件把连接地址全部推倒重来。结果是,本地联调环境虽然能跑,却总和线上长得不太一样。