Difference between links and depends_on in docker_compose.yml
根据Docker Compose的撰写文件文档:
depends_on 表示服务之间的依赖关系。links —链接到另一个服务中的容器,并以依赖于的方式表示服务之间的依赖关系。
我不明白链接到其他容器的目的,所以两个选项之间的区别对我来说仍然很困难。
如果有一个例子的话会容易得多,但是我找不到任何例子。
我注意到,当我将容器B与容器A链接时,容器B将在容器A的外壳内"可Ping"起来。
我在容器A的
这个回答是码头工人组成2版和信息版,所以在3
你仍然可以访问数据,当你使用_ depends on。
如果你看看搬运工搬运工和Django提供的文档,你可以访问数据库这样的安静。
1 2 3 4 5 6 7 8 9 10 11 12 13 | version: '2' services: db: image: postgres web: build: . command: python manage.py runserver 0.0.0.0:8000 volumes: - .:/code ports: -"8000:8000" depends_on: - db |
什么是左和_取决于之间的差异?
左:
当你创建一个容器,一个数据库,例如:
1 2 3 | docker run -d --name=test-mysql --env="MYSQL_ROOT_PASSWORD=mypassword" -P mysql docker inspect d54cf8a0fb98 |grep HostPort |
你可以找到
1 | "HostPort":"32777" |
这意味着你可以从你的本地主机端口连接的数据库(在容器32777 3306端口),但这要改变每次你重启或清除容器。这样你可以确保你的链接连接到数据库和我不知道它是端口。
1 2 3 | web: links: - db |
_ depends on:
我发现了一个很好的博客:从乔治docker-compose.yml V1到V2的法拉利
When docker-compose executes V2 files, it will automatically build a network between all of the containers defined in the file, and every container will be immediately able to refer to the others just using the names defined in the docker-compose.yml file.
和
So we don’t need links anymore; links were used to start a network communication between our db container and our web-server container, but this is already done by docker-compose
更新_ depends on
安切洛蒂表示依赖之间的服务,这两个效果:
- 码头启动要启动服务的组成依赖的命令。在下面的例子中,将开始发生在DB和Web。
- 码头工人组成化妆服务会自动包含服务的依赖关系。在下面的例子,码头组成上要创建Web和DB和再发射。
简单的例子:
1 2 3 4 5 6 7 8 9 10 11 | version: '2' services: web: build: . depends_on: - db - redis redis: image: redis db: image: postgres |
Note: depends_on will not wait for db and redis to be"ready" before starting web - only until they have been started. If you need to wait for a service to be ready, see Controlling startup order for more on this problem and strategies for solving it.
[答案]:2016年9月更新这个文件是用于码头包括V1(AS显示下面提供的样本文件)。其他答案为V2,由windsooon湖"。
回答:[原创]
它是很清晰的文档。
Containers for the linked service will be reachable at a hostname identical to the alias, or the service name if no alias was specified.
例如,如果
1 2 3 4 5 6 7 8 9 10 11 | web: image: example/my_web_app:latest links: - db - cache db: image: postgres:latest cache: image: redis:latest |
一个内部
更新后的需求后,
基本上,
为
1 2 3 | docker network create mynet docker run -d --net mynet --name container1 my_image docker run -it --net mynet --name container1 another_image |