Docker 组成和主机名

2024-02-24

我有一个包含 2 个名为“web”和“db”的服务(容器)的撰写文件。

{
    "version": "2",
    "services": {
        "web": {
            "image": "nodejs:latest",
            "ports": ["80"]
        },
        "db": {
            "image": "mysql:latest",
            "ports": ["3306"]
        }
    }
}    

我可以使用“db”作为数据库的 IP 从 Web 容器访问 db 容器。在撰写文件中使用“主机名”有什么好处,如下所示?

{
    "version": "2",
    "services": {
        "web": {
            "image": "nodejs:latest",
            "hostname": "web",
            "ports": ["80"]
        },
        "db": {
            "image": "mysql:latest",
            "hostname": "db",
            "ports": ["3306"]
        }
    }
}

容器之间的私网主机自动发现功能已在docker-compose 语法的版本“2” https://docs.docker.com/compose/compose-file/compose-versioning/#version-2。之前您只能通过链接别名来引用容器。还有其他解决方案可以创造发现 - 例如。添加代理或“大使”容器。

话虽如此,我认为使用主机名有 3 个原因:

  • 发现基于服务名称,并不总是需要是主机名。
  • 一项服务中可以有多个主机名(例如 Web 服务器)
  • 如果您想在不同环境之间保持一致的配置,您可以使用主机名来描述应用程序正在使用的其他端点,而不是依赖于服务名称
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker 组成和主机名 的相关文章

  • 如何扁平化 Docker 镜像?

    我做了一个相当大的 Docker 容器 当我提交容器来创建映像时 映像大约有 7 8 GB 大 但当我export容器 不是save图像 到 tarball 并重新导入 图像只有 3 GB 大 当然 历史记录丢失了 但这对我来说没问题 因为
  • Docker、maven 和 settings.xml

    给出以下简单的 Dockerfile FROM maven 3 6 3 ibmjava 8 alpine Copy maven settings COPY settings xml usr share maven ref COPY pom
  • 使用前端 Dockerfile 无法解决

    我对 Docker 还很陌生 正在尝试使用纯 HTML 构建 Docker 映像 但我收到此错误消息 无法使用前端 dockerfile v0 解决 无法读取 dockerfile 打开 var lib docker tmp buildki
  • ASP.NET Core - 在 Visual Studio 2015 中通过 Docker 调试时出现问题

    我在 Visual Studio 中使用 Docker 运行基于 ASP NET Core 构建的应用程序时遇到问题 我的应用程序仅使用dnxcore50框架 我的project json 文件是 version 1 0 0 compila
  • Docker 不遵循构建目录中的符号链接

    我正在对一个应用程序进行 Docker 化 其中涉及通过 Clang 将二进制文件与其他 C 文件链接 我们维护二进制文件的符号链接版本 因为它们在整个代码库中使用 我的 Docker 构建目录包含整个代码库 包括源文件以及这些源文件的符号
  • docker中的GitLab CI docker无法创建卷

    我在 docker 中使用 docker 来托管我的容器 因为它们通过管道工作 我根据代码创建的容器设置为具有一个卷 用于将 gcloud 密钥传递到容器 这在我的本地计算机上完美运行 但在 gitlab runner 上它无法正确链接 从
  • pq:无法调整共享内存段的大小。设备上没有剩余空间

    我在仪表板上有许多面板 数量约为 6 个 用于显示数据点图表 对 PostgreSQL 数据库的 Dockerized 实例进行查询 直到最近 面板都工作正常 有些面板停止工作并报告如下错误 pq 无法将共享内存段 PostgreSQL 2
  • 导入错误:没有名为 google.auth 的模块

    当我尝试导入时firebase admin in python 2 7我收到错误 导入错误 没有名为 google auth 的模块 这是Docker文件 https github com ammaratef45 Attendance bl
  • Docker 运行与创建

    有什么区别docker run and docker create命令 我通常使用run但有时在文档中我看到create 码头工人的 help tells create Create a new container run Run a co
  • 您可以将标志传递给 docker 运行的命令吗?

    的文档run命令遵循以下语法 docker run OPTIONS IMAGE TAG DIGEST COMMAND ARG 然而我有时发现我想传递一个标志 COMMAND 例如 我一直在与这个图片 https github com mak
  • 集群负载均衡是否应该在其节点上执行运行状况检查?

    The 负载均衡 https docs docker com engine swarm key concepts load balancingswarm 文档中的部分没有明确说明内部负载均衡器是否也进行健康检查 以及是否删除不再运行该服务的
  • 网络插件未准备好:cni 配置未初始化

    Kubelet未就绪 runtime network not ready NetworkReady false reason NetworkPluginNotReady message docker network plugin is no
  • 我应该在 Kubernetes 前面添加 DMZ 吗?

    Kubernetes Ingress 是否足够安全 可以避免在 Kubernetes 前面添加 DMZ 来暴露 Pod 和服务 如果有人 黑进 Pod 会发生什么 Thanks 这是一个意见问题 所以我会用一个选项来回答 如果您遵循 这是非
  • nslookup 无法在最新的 busybox 上获取服务 ip

    重现步骤 kubectl run busybox1 generator run pod v1 image busybox 1 28 sleep 3600 kubectl run busybox2 generator run pod v1 i
  • udevadm 不显示 docker 容器内的所有属性

    当我运行 docker 容器并列出某些设备的属性时udevadm容器内部只有设备的基本信息 当我在主机上做同样的事情时 我可以看到更多 我该如何获取容器内的所有信息 host udevadm info query property dev
  • docker 中带有参数的 jar 文件

    Helo 我有一个 java jar 文件 当我从终端运行它时 它会接受一堆参数作为输入 我想制作一个 docker 映像并运行它 其中包含 jar 文件 我仍然可以在其中传递 jar 文件的参数 将 jar 文件设置为您的入口点 http
  • PostgreSQL docker:“无法绑定 IPv6 套接字:无法分配请求的地址”

    编辑2 经过很长一段时间 解决了 请参阅下面的答案 编辑 我很遗憾地说 从昨天到今天 问题 自行 消失了 而我没有做任何事情 在这里学习很棒的非确定性课程 额外的乐趣 无法绑定 IPv6 套接字 错误仍然出现在错误日志中 因此这可能根本不是
  • `docker-compose up` 与使用环境变量的 `docker compose up`

    我正在尝试使用 Docker Compose 将三节点 Elasticsearch 集群部署到 Azure 容器实例 我松松地跟随这个例子 https www elastic co guide en elasticsearch refere
  • Docker 进程被神秘的“Killed”消息杀死

    在 docker 容器中运行 python 脚本 一切似乎都运行顺利 看到一些 STDOUT 消息 大约 5 分钟后我得到了Killed消息 没有进一步的解释 并且该过程停止 查询数据库可能是磁盘空间问题 也可能是 OOM 问题 我不确定
  • 来自不安全注册表的 Dockerfile

    有没有办法从 Dockerfile 构建 docker 映像 该 Dockerfile 使用来自 Gitlab 托管的本地不安全注册表的基础映像 例如 如果我的 Dockerfile 是 FROM insecure registry loc

随机推荐