在 docker 中创建几个微服务,一个名 web1,另外 web1 还要引用 svr1、svr2,也就是需要创建三个镜像,运行三个容器。所以在启用的时候,需要同时运行三个容器,如果能将这三个应用组成一个局域网,web1 访问 svr1、svr2 的时候,只需要知道容器的名字就好。这样我就可以在 docker 中运行几组这样的应用,只有 web1 需要开放对外的端口。这个不知道如何在 docker 中设置,求教
1
shylockhg 2019-02-14 14:38:16 +08:00
docker-compose
-p 做端口映射 |
2
daijinming OP @shylockhg 只有 web1 需要端口映射,这个到时没有问题。其他几个 svr1、svr2 只需要被 web1 调用就好,没有必要开放外网。其实我的思路就是在 docker 中创建一个局域网,只有 web1 需要被外部访问。
|
3
webfrogs 2019-02-14 14:46:19 +08:00
docker network 了解一下
|
4
GuryYu 2019-02-14 14:46:56 +08:00 2
使用 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 的端口时,直接使用别名即可 |
5
whatsmyip 2019-02-14 14:47:12 +08:00
用 docker swarm 或者 k8s,可以满足
|
6
walkonthemarz 2019-02-14 14:47:29 +08:00 via iPhone
docker-compose 就可以,建议看 docker-compose 的官方文档
|
7
cxbig 2019-02-14 17:21:40 +08:00
1. 使用 docker-compose 可以緩解配置的複雜度,默認創建一個 network 供 container 之間通信,還能自定義各自的 hostname
2. 手動跑的話,讓這 3 個 container 加入同一個 network 也可以實現 |
9
111qqz 2019-02-14 17:47:15 +08:00
可以用 docker-compose
|
11
kaneg 2019-02-14 19:25:09 +08:00 via iPhone
docker-compose 就是为这样的需求量身定做的
|
12
Jeremial 2019-02-14 19:42:03 +08:00
docker-compose
|
13
yujincheng08 2019-02-14 20:22:26 +08:00
docker-compose
|
14
anguiao 2019-02-14 20:53:17 +08:00
用 network 是可以的,不过用 Docker Compose 更方便。同一组里面的几个容器,默认就是在一个 network 里的,没什么需求的话就用 Docker Compose 吧。
|
15
Trim21 2019-02-14 20:56:12 +08:00 via Android
docker compose 可以选择不把某个端口暴露到宿主机
|
16
AlphaTr 2019-02-14 22:24:47 +08:00
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 端口的方式访问 |
17
yuikns 2019-02-15 03:22:01 +08:00 via iPhone
当然是 docker-compose
自己写是展示自己高超的技巧么 |
18
KickAssTonight 2019-02-15 14:18:12 +08:00
用 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" ``` |
19
saberlove 2019-02-16 10:34:04 +08:00
links
|