之前的关联都是通过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;
}