在 docker 中创建几个微服务,一个名 web1,另外 web1 还要引用 svr1、svr2,也就是需要创建三个镜像,运行三个容器。所以在启用的时候,需要同时运行三个容器,如果能将这三个应用组成一个局域网,web1 访问 svr1、svr2 的时候,只需要知道容器的名字就好。这样我就可以在 docker 中运行几组这样的应用,只有 web1 需要开放对外的端口。这个不知道如何在 docker 中设置,求教
在 docker 中创建几个微服务,一个名 web1,另外 web1 还要引用 svr1、svr2,也就是需要创建三个镜像,运行三个容器。所以在启用的时候,需要同时运行三个容器,如果能将这三个应用组成一个局域网,web1 访问 svr1、svr2 的时候,只需要知道容器的名字就好。这样我就可以在 docker 中运行几组这样的应用,只有 web1 需要开放对外的端口。这个不知道如何在 docker 中设置,求教
|
shylockhgFeb 14, 2019
1
docker-compose
-p 做端口映射 |
|
2
@shylockhg 只有 web1 需要端口映射,这个到时没有问题。其他几个 svr1、svr2 只需要被 web1 调用就好,没有必要开放外网。其实我的思路就是在 docker 中创建一个局域网,只有 web1 需要被外部访问。
|
|
webfrogsFeb 14, 2019
3
docker network 了解一下
|
|
4
使用 docker network 即可,
1. 创建 docker network: docker network create [网络名称] 如: docker network create net-xxx 2. 定义容器在 network 内的别名 docker network connect --alias [别名] [网络名] [容器名] 如: docker network connect --alias svr1 net-xxx svr1 docker network connect --alias svr2 net-xxx svr2 3. 在需要调用 svr1 或者 svr2 的端口时,直接使用别名即可 |
|
whatsmyipFeb 14, 2019
5
用 docker swarm 或者 k8s,可以满足
|
|
walkonthemarzFeb 14, 2019 via iPhone
6
docker-compose 就可以,建议看 docker-compose 的官方文档
|
|
cxbigFeb 14, 2019
7
1. 使用 docker-compose 可以緩解配置的複雜度,默認創建一個 network 供 container 之間通信,還能自定義各自的 hostname
2. 手動跑的話,讓這 3 個 container 加入同一個 network 也可以實現 |
|
midasplusFeb 14, 2019
9
可以用 docker-compose
|
|
kanegFeb 14, 2019 via iPhone
11
docker-compose 就是为这样的需求量身定做的
|
|
ik0rFeb 14, 2019
12
docker-compose
|
|
yujincheng08Feb 14, 2019
13
docker-compose
|
|
anguiaoFeb 14, 2019
14
用 network 是可以的,不过用 Docker Compose 更方便。同一组里面的几个容器,默认就是在一个 network 里的,没什么需求的话就用 Docker Compose 吧。
|
|
Trim21Feb 14, 2019 via Android
15
docker compose 可以选择不把某个端口暴露到宿主机
|
|
AlphaTrFeb 14, 2019
16
docker 可以创建自己的局域网
docker network create --subnet=172.20.0.0/16 arpa-net 然后指定容器的 IP 地址就行 docker run -d -p 80:80 -p 443:443 --network arpa-net --ip 172.20.20.22 nginx 不愿意暴露端口到宿主机,及不带前面 -p 参数就行 同一个网络下,端口默认都是开放的,所以容器之间可以直接用 172.20.20.22:80 这种 IP 端口的方式访问 |
|
yuiknsFeb 15, 2019 via iPhone
17
当然是 docker-compose
自己写是展示自己高超的技巧么 |
|
KickAssTonightFeb 15, 2019
18
用 docker-compose:
> Expose ports without publishing them to the host machine - they ’ ll only be accessible to linked services. Only the internal port can be specified ```yml expose: - "3000" - "8000" ``` |
|
saberloveFeb 16, 2019
19
links
|