前言
因为上一篇文章吃了没文化的亏,所以专门抽时间学了下docker的网络通信。由于我这里没啥练习项目,所以只能来个nginx套娃了
Host to Container
CLI
使用“-p”选项来指定端口,语法如下
-p <host-port>:<container-port>
示例
$ docker run --name main-nginx -p 8080:80 nginx:1.19
docker-compose.yml
使用“ports”字段来指定端口,语法如下
ports:
- <host-port>:<container-port>
Container to Host
首先需要查看一下ip配置信息,win系统用 ipconfig
,linux用ifconfig
,至于macos嘛,因为没用过所以不知道
回车之后找到一个叫“docker0”的虚拟网卡
$ ifconfig
...
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:2e:8d:3f:e8 txqueuelen 0 (Ethernet)
然后在Container中使用这个网卡的ip地址就行了
Container to Container
CLI
首先要创建一个网络
$ docker network create my-net
然后在启动容器时指定一下网络即可
$ docker run --name main-nginx -p 8080:80 --network my-net nginx:1.19
$ docker run --name sub-nginx --network my-net nginx:1.19
之后就可以在main-nginx容器内部直接访问sub-nginx了,例如:
http://sub-nginx/
docker-compose.yml
在docker-compose中不需要做什么操作,因为他本身就会自动创建一个网络,并且把yml配置文件里所有的服务都加入进去
所以直接访问就行了
yml文件示例如下:
version: "3.3"
services:
main-nginx:
image: nginx:1.19
ports:
- 8080:80
sub-nginx:
image: nginx:1.19
访问示例:
http://sub-nginx/