docker中网络

本文详细介绍了Docker中的网络模式,包括默认的bridge网络和自定义网络,并展示了如何创建自定义网络以及配置容器间的连接。通过实例演示了如何启动PHP-FPM和Nginx服务,以及如何通过自定义网络链接Redis服务,确保容器间能够通过IP和名称互相访问。同时提到了link容器的方法及其限制,以及如何在容器中开启多个PHP-FPM服务。
摘要由CSDN通过智能技术生成

之前的关联都是通过link实现的,但是

1.当我们新建容器时,如果没有显示指定其使用的网络,那么默认会使用bridge网络
2.当一个容器link到另一个容器时,该容器可以通过IP或容器名称访问被link的容器,而被link容器可以通过IP访问该容器,但是无法通过容器名称访问
3.当被link的容器被删除时,创建link的容器也无法正常使用
4.如果两个容器被加入到我们手动创建的网络时,那么该网络内的容器相互直接可以通过IP和名称同时访问。

自定义网络

查看本地所有网络

[root@VM-8-9-centos /]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
dce0d45c8f69   bridge    bridge    local
dba1a8a840cf   host      host      local
f40050a9b449   none      null      local
网络模式配置说明
bridge–net=bridge默认值,在docker网桥docker0上为容器创建新的网络栈
none模式–net=none不配置网络,用户可以稍后进入容器,自行配置
container模式–net=container:name/id容器和另外一个容器共享Network namespace。kubernetes中的pod就是多个容器共享一个Network namespace
host模式–net=host容器和宿主机共享Network namespace
用户自定义–net=自定义网络用户自己使用network相关命令定义网络,创建容器的时候指定

查询容器的网络命令 docker network inspect [name/id]

自定义网卡

 默认我们不配置网络,也就相当于默认值 --net bridge 使用的docker0
docker run -d -P --name tiramisu-php --net bridge tomcat
docker0网络的特点
1.它是默认的
2.域名访问不通
3.--link 域名通了,但是删了又不行

自定义网卡

docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 tiramisunet
[root@VM-8-9-centos ~]# docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 tiramisunet
e6b99e3a1e54da4fa38c78418828ca98d57a3b799b9475bb035e94a88a3cda03
#查看创建后的网卡
[root@VM-8-9-centos ~]# docker network ls
NETWORK ID     NAME          DRIVER    SCOPE
dce0d45c8f69   bridge        bridge    local
dba1a8a840cf   host          host      local
f40050a9b449   none          null      local
e6b99e3a1e54   tiramisunet   bridge    local
[root@VM-8-9-centos ~]#  docker network inspect tiramisunet
[
    {
        "Name": "tiramisunet",
        "Id": "e6b99e3a1e54da4fa38c78418828ca98d57a3b799b9475bb035e94a88a3cda03",
        "Created": "2021-01-15T14:36:20.293602421+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "192.168.0.0/16",
                    "Gateway": "192.168.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]

重新启动环境

[root@VM-8-9-centos /]# docker run --name tiramisu-php5.6 --network tiramisunet -d -v /var/tiramisu/www:/var/tiramisu/www -v /var/tiramisu/php/conf:/usr/local/etc/php/conf.d php:5.6-fpm
2863cf65c440bbcc906d5b2c9fefdb0f24a65fa3197156e41d6febfb2792cd0f
[root@VM-8-9-centos /]# docker run --name tiramisu-nginx-php-one --network tiramisunet -p 8081:80 -d -v /var/tiramisu/www:/var/tiramisu/www -v /var/tiramisu/nginx/conf:/etc/nginx/conf.d  nginx
107d29f97e247dac7444482f7152ec432cab37494c24ed781e4292b9cfa4f0e3
[root@VM-8-9-centos /]# docker ps
CONTAINER ID   IMAGE         COMMAND                  CREATED          STATUS          PORTS                  NAMES
107d29f97e24   nginx         "/docker-entrypoint.…"   3 seconds ago    Up 3 seconds    0.0.0.0:8081->80/tcp   tiramisu-nginx-php-one
a79cf1020672   php:5.6-fpm   "docker-php-entrypoi…"   13 minutes ago   Up 13 minutes   9000/tcp               tiramisu-php5.6
[root@VM-8-9-centos /]# docker inspect tiramisunet
[
    {
        "Name": "tiramisunet",
        "Id": "e6b99e3a1e54da4fa38c78418828ca98d57a3b799b9475bb035e94a88a3cda03",
        "Created": "2021-01-15T14:36:20.293602421+08:00",
        .........
        "Containers": {
            "107d29f97e247dac7444482f7152ec432cab37494c24ed781e4292b9cfa4f0e3": {
                "Name": "tiramisu-nginx-php-one",
                "EndpointID": "cb9af0e3c037466009da150bb294aad3c83fc2f4a439b72ad23b6fe71bcfed1f",
                "MacAddress": "02:42:c0:a8:00:03",
                "IPv4Address": "192.168.0.3/16",
                "IPv6Address": ""
            },
            "a79cf1020672acf0f7c3f5fbce84588ea03ff648ba9af9743ceee58db7556aa5": {
                "Name": "tiramisu-php5.6",
                "EndpointID": "71b96f35d51650a8d294c5ca9a556082cddc3b56d39787d8a37927402bf8c592",
                "MacAddress": "02:42:c0:a8:00:02",
                "IPv4Address": "192.168.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]

没有启动成功看下nginx.conf配置文件中将php:9000改成192.168.0.2:9000  (php服务ip)

启动redis服务

docker run --name tiramisu-redis --network tiramisunet -p 6379:6379 -itd   redis:2.6

可以看到

[root@VM-8-9-centos /]# docker inspect tiramisunet
[
    {
        "Name": "tiramisunet",
        "Id": "e6b99e3a1e54da4fa38c78418828ca98d57a3b799b9475bb035e94a88a3cda03",
        "Created": "2021-01-15T14:36:20.293602421+08:00",
		......
        "Containers": {
            "107d29f97e247dac7444482f7152ec432cab37494c24ed781e4292b9cfa4f0e3": {
                "Name": "tiramisu-nginx-php-one",
                "EndpointID": "cb9af0e3c037466009da150bb294aad3c83fc2f4a439b72ad23b6fe71bcfed1f",
                "MacAddress": "02:42:c0:a8:00:03",
                "IPv4Address": "192.168.0.3/16",
                "IPv6Address": ""
            },
            "a79cf1020672acf0f7c3f5fbce84588ea03ff648ba9af9743ceee58db7556aa5": {
                "Name": "tiramisu-php5.6",
                "EndpointID": "71b96f35d51650a8d294c5ca9a556082cddc3b56d39787d8a37927402bf8c592",
                "MacAddress": "02:42:c0:a8:00:02",
                "IPv4Address": "192.168.0.2/16",
                "IPv6Address": ""
            },
            "d9ef9e113bd989a38a7b5b35c69c278964a3eaf6cce815e7049471f41a1b5656": {
                "Name": "tiramisu-redis",
                "EndpointID": "45a424ea873513975fefd178a47e6b9e6c85598fb0f8d4fe8391f97e90d84970",
                "MacAddress": "02:42:c0:a8:00:04",
                "IPv4Address": "192.168.0.4/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]

link容器

[root@VM-8-9-centos /]# docker exec -it tiramisu-nginx-php-one cat /etc/hosts
127.0.0.1	localhost
::1	localhost ip6-localhost ip6-loopback
fe00::0	ip6-localnet
ff00::0	ip6-mcastprefix
ff02::1	ip6-allnodes
ff02::2	ip6-allrouters
192.168.0.3	107d29f97e24  #本容器  [ip] [容器id]
#如果需要关联  [ip] [容器名称] [容器id]
192.168.0.2 tiramisu-php5.6  a79cf1020672
[root@VM-8-9-centos /]# 

容器中开多个php-fpm

在/var/tiramisu/php/php7-one/docker-php/zz-docker.conf文件中添加

[global]
daemonize = no
[www]
listen = 9001
docker run --network tiramisunet --ip 192.168.0.6 --name tiramisu-php7 -d \
-v /var/tiramisu/www:/var/tiramisu/www \
-v /var/tiramisu/php/php7-one/conf:/usr/local/etc/php/conf.d \
-v /var/tiramisu/php/php7-one/docker-php/zz-docker.conf:/usr/local/etc/php-fpm.d/zz-docker.conf  \
 php:7.2-fpm

最后修改nginx的conf的配置文件

location ~ \.php$ {
        fastcgi_pass   192.168.0.6:9001; #修改php的ip和端口号
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/tiramisu/www/tp5/public/$fastcgi_script_name;
        include        fastcgi_params;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值