Joe*_*oel 4 docker docker-compose
我试图在docker 1.9中使用compose运行docker网络.我知道这在1.9中仍然是实验性的,但我想知道我的用例是否可行.
基本上和简化,我有两个服务器,每个服务器都在一个容器中.我们称他们为S1和S2.S1全局暴露,必须可从S2访问.我想通过docker-compose运行S2并使用--x-networking标志(我之所以想要的是S2实际上比这里假设的更复杂,有几个容器,我希望它们运行在一个子网络).S1可以在有或没有撰写的情况下运行.
我从docker网络中了解到,任何容器都可以从同一网络到达其他容器,或者可以通过主机端口映射到达"全局"暴露的任何容器,对吧?
所以我的方案是:
Run Code Online (Sandbox Code Playgroud)S2: build: . ports: - "8080:80"
结果:
我希望能够在172.17.0.1下达到它,因为S1使用了docker0,据我所知.
此外,如果我在没有编写的情况下启动S2但是使用"docker run"手动启动,那么我可以使用172.17.0.1访问S1
那么为什么它不能用于撰写?由于网络功能仍处于试验阶段,这是一个限制吗?
注意:
这是旧内容.在docker-compose 1.6中删除了--x-networking.另外Docker compose有一个新的文件格式.
该文档指出网络功能在Docker组合中是实验性的.
注意:Compose的网络支持是实验性的,必须使用docker-compose --x-networking标志显式启用.
Docker 1.9实际上实现了新功能:
https://docs.docker.com/engine/userguide/networking/dockernetworks/
也许一个例子会有所帮助.
??? demo
??? docker-compose.yml
Run Code Online (Sandbox Code Playgroud)
我正在使用docker 1.9.0和docker-compose 1.5.0
声明两个称为"web1"和"web2"的容器.在这种情况下,无论什么图像我都在运行tomcat.
web1:
image: tomcat:8.0
ports:
- 8080
web2:
image: tomcat:8.0
ports:
- 8080
Run Code Online (Sandbox Code Playgroud)
使用docker compose启动它
$ cd demo
$ docker-compose --x-networking up -d
Creating network "demo" with driver "None"
Creating demo_web2_1
Creating demo_web1_1
Run Code Online (Sandbox Code Playgroud)
请注意在指定新的--x-networking参数时如何创建名为"demo" 的网络.
每个容器都在创建的"演示"网络上运行,每个容器都作为其他主机文件中的条目放置.
$ docker-compose ps
Name Command State Ports
---------------------------------------------------------------
demo_web1_1 catalina.sh run Up 0.0.0.0:32773->8080/tcp
demo_web2_1 catalina.sh run Up 0.0.0.0:32772->8080/tcp
$ docker exec -it demo_web1_1 cat /etc/hosts
..
172.18.0.2 demo_web2_1
$ docker exec -it demo_web2_1 cat /etc/hosts
..
172.18.0.3 demo_web1_1
Run Code Online (Sandbox Code Playgroud)
启动另一个容器,并指定您希望将其附加到"演示"网络:
$ docker run --net demo --name helloworld -d tomcat:8.0
Run Code Online (Sandbox Code Playgroud)
并查看其他容器中的hosts文件如何自动更新
$ docker exec -it demo_web1_1 cat /etc/hosts
..
172.18.0.2 demo_web2_1
172.18.0.4 helloworld
$ docker exec -it demo_web2_1 cat /etc/hosts
172.18.0.3 demo_web1_1
172.18.0.4 helloworld
$ docker exec -it helloworld cat /etc/hosts
172.18.0.2 demo_web2_1
172.18.0.3 demo_web1_1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7731 次 |
| 最近记录: |