当前位置: 首页 > 面试题库 >

docker-compose:网络与链接之间的区别

暨嘉
2023-03-14
问题内容

我正在学习docker。我看到这两个词使我感到困惑。例如,这是一个docker-compose,它定义了两个服务redisweb-app

services:
  redis:
    container_name: redis
    image: redis:latest
    ports:
      - "6379:6379"
    networks:
      - lognet

  app:
    container_name: web-app
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "3000:3000"
    volumes:
      - ".:/webapp"
    links:
      - redis
    networks:
      - lognet

networks:
  lognet:
    driver: bridge

docker- compose文件定义了一个名为lognet的桥接网络,所有服务都将连接到该网络。据我了解,此操作使那些服务可以看到其他服务。那么在上述情况下,为什么应用程序服务仍需要链接到Redis服务。

谢谢


问题答案:

链接已被网络取代。Docker将它们描述为您应避免使用的旧功能。您可以安全地删除链接,并且两个容器将能够通过它们的服务名称(或container_name)相互引用。

使用compose时,链接确实会产生隐式依赖关系。您应该将其替换为更明确的depends_on部分,以使应用程序不会在未启动redis或启动redis之前尝试运行。

顺便说一句,除非您确定这是主机上唯一使用该名称的容器,并且您需要从docker
cli中按名称引用它,否则我不喜欢硬编码container_name。如果没有容器名称,则docker-
compose会给它一个不太直观的名称,但也会为它提供网络上redis的别名,这正是容器到容器联网所需要的。因此,这些建议的最终结果是:

version: '2'
# do not forget the version line, this file syntax is invalid without it

services:
  redis:
    image: redis:latest
    ports:
      - "6379:6379"
    networks:
      - lognet

  app:
    container_name: web-app
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "3000:3000"
    volumes:
      - ".:/webapp"
    depends_on:
      - redis
    networks:
      - lognet

networks:
  lognet:
    driver: bridge


 类似资料:
  • 我正在尝试使用docker-compose来设置气流实例,如官方文档中所述,我被困在气流初始化部分。看起来容器之间没有连接,但我不知道如何解决它。 我使用与文档中描述的相同的。可以在这里下载:https://airflow.apache.org/docs/apache-airflow/stable/docker-compose.yaml 目前,我在我的外壳中看到了这一点: 医生说我应该看到这样的东

  • 本文向大家介绍浅谈docker-compose网络设置之networks,包括了浅谈docker-compose网络设置之networks的使用技巧和注意事项,需要的朋友参考一下 networks使用方式之官网教程 官网的docker-compose.yml参考文档:Compose file version 3 reference 较为准确的中文翻译版:Compose file version 3

  • 问题内容: 请帮助我了解docker compose中“映像”和“构建”之间的区别 问题答案: 意味着将基于该图像运行容器 构建装置将首先建立基于所述Dockerfile的图像中与构建相关联的路径发现(然后运行基于该图像上的容器)。 PR 2458 最终合并为允许两者(并在构建时用作映像名称,如果存在)。 在评论中提到: 作为下面的子语句,可用于指定Dockerfile的文件名/路径。

  • 本文向大家介绍深色网络和深色网络之间的区别,包括了深色网络和深色网络之间的区别的使用技巧和注意事项,需要的朋友参考一下 深网 深度网络是搜索引擎无法访问的网络内容。例如,银行信息,政府机密数据,云中存在的数据。只有经过正确的身份验证,才能访问深度Web上的数据。 暗网 Dark Web是网站所有者匿名的网站。Dark Web通常用于非法活动。暗网无法通过常规浏览器/搜索引擎访问。需要专用软件才能访

  • 我一直想做实时聊天。 多年前,我在PHP Ajax Mysql中就这样做了,并破坏了我的服务器。 然后我用Flash试了一个文本文件。我放弃了,已经10年没有尝试过了。但是最近我听说了webhooks和websockets。 它们似乎都是做到这一点的一种方式,但我并没有真正理解其中的区别。 任何人都可以解释吗? 谢谢!