测验:把多个容器编在一起
在 Compose 中,我将与服务名称通信良好的堆栈移至docker run,但无法解释该名称。原因是什么?
- 这是因为有一个单独的、特殊的 DNS 实现仅使用 Compose。
- 服务名称规则不同
- 端口映射缺失
- Compose 会自动为每个项目创建一个自定义网络,但我手动移动时并没有创建它。
如果你只是挂depends_on,什么不能保证?
- 依赖服务已准备好接收请求
- 容器出现的顺序
- 服务之间的网络连接
- 挂载声明的卷
expose和ports有什么区别?
- 两者都在主机上打开端口,只是语法不同。
expose仅用于文档,不会在主机上开放端口,只有ports用于实际发布。expose是比ports更安全的发布方式。expose仅适用于 UDP
声明文件和实际运行容器之间的错位(漂移)造成危险的最大原因是什么?
- 设置未对齐且性能下降。
- 这是因为不在声明中的资源会保留并浪费磁盘空间。
- 服务名称和日志不同。
- 由于该文件不再描述现实,下一版本将恢复手动修复,恕不另行通知。
配置不将DB放置在前端网络的3层堆栈有什么影响?
- 网络路径缩短,数据库响应速度更快。
- 在代理端,没有数据库名称解析或路由,因此本身没有访问路径。
- 节省需要打开的端口数量
- DB分离,备份更轻松