Docker 学习笔记之---网络通信

Posted on By 李继龙

前言

因为上一篇文章吃了没文化的亏,所以专门抽时间学了下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/