为了实现将MySQL数据库和Drupal网站分开的能力(MySQL一个容器,Drupal一个容器,通过Docker的network将他们桥接起来)
1.创建一个自定义网络:docker network create my_network
[masiyi@Nuts-Login ~]$ docker network create msy_network
a31b02a31834293307b83c2590fb476917f9d96c0293d0e628fe7242241efbe8
[masiyi@Nuts-Login ~]$ docker network ls
NETWORK ID NAME DRIVER SCOPE
5443b10973ad bridge bridge local
55a1c111a6e4 host host local
a31b02a31834 msy_network bridge local
c2e728e30564 none null local
可以看到我们创建的msy_network的ID等信息,我们也可以通过下面的命令查看我们创建的network详细的创建时间、Ip等
[masiyi@Nuts-Login ~]$ docker network inspect msy_network
[
{
"Name": "msy_network",
"Id": "a31b02a31834293307b83c2590fb476917f9d96c0293d0e628fe7242241efbe8",
"Created": "2024-03-11T20:12:47.655246491+08:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "172.18.0.0/16",
"Gateway": "172.18.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {},
"Options": {},
"Labels": {}
}
]
如果想查看特定的容器连接到了哪个网络,可以使用:docker network inspect bridge(network的名字) --format='{{range $key, $value := .Containers}}{{$key}} {{end}}'
[masiyi@Nuts-Login ~]$ docker network inspect bridge(network的名字) --format='{{range $key, $value := .Containers}}{{$key}} {{end}}'
01ae3f6dcf841f183a37482eea9f3ca2cc122e0cac13f36d5b21c70052a31688 18a7de0350e4100aadd577e4088089e5481372ed3abd5fb0b163e8dc0b47e102 20b9d80ba2285533adacf03ebfde1e32962514237152c420480d81ec642ac019 9fa74ddef7a5439ed49e127048546820fe96f931c986ca2992f2134048c12ded b09d1f5e1d441951435e46978d010f8e987f4d2361668b2309ee9f765a6cab9c b3cfc2fd084c39a60dc42aaa83e30329fb40d114fc6dbea3dc177fc0fdfa20c2 b8c6f00da4d94109a14ed6669c7b52e9885bfae094a97bb43ff6d19ce19e1a8b bb28305ebc4c2554f1c919be2a405e734001d3fee442b15ddd790ea9a921ec44 d788f5832d54e7355f4ea4800c0233c828c98283fbade7678989a0c147223d4d dcf59c8aae23d993ceab1fe192d6c461be524eb9b7eb5f6ed17df290e91c7b63 e1e718c4e57cc7a69c9db40974be9123e40bdbcf26fee9443ef60ebe0291e9a6 ef709f287233865ebc5a8bb6a8227f68330530b70fb49e9c883807567e120797 f6f5e8d1a851231272781c08866e96ab85e8af46b7b67ca9f862a10a06d51aa5 f75c04f6f661a5a674ac12e5fe0cab02338cf6b41f8e56716c89766dc42d4724 f845b400013bebb11aab5a473b1d50a59f5b4403c72b6b509dd756a99ad1aa3c
如果只是想筛选特定容器的IP可以使用:docker inspect pagd_test(容器名字) --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}'
[masiyi@Nuts-Login ~]$ docker inspect drupal10 --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}'
172.18.0.3
2.然后就可以启动容器并且将其连接到自定义网络,这里以MySQL为例
[masiyi@Nuts-Login ~]$ docker run --network=msy_network --name drupal_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=zhanglab2014 -d mysql:latest
0df2979ada29aac80918ae2ba8219f172d07126f1b16f747204a8ae164c85261
然后将网站(以Drupal10为例)与MySQL连接起来
[masiyi@Nuts-Login ~]$ docker run -it -p 6044:80 --name drupal10 -d --network msy_network drupal /bin/bash
cbb8b6ef03ac7be219ee946ac249ad02adb78464d0722c7cd4aceecf6f314326
[masiyi@Nuts-Login ~]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cbb8b6ef03ac drupal "docker-php-entrypoi…" 4 seconds ago Up 3 seconds 0.0.0.0:6044->80/tcp, :::6044->80/tcp drupal10
现在再查看我们自己创建的network,里面就出现了我们新连接进去的MySQL与Drupal10
[masiyi@Nuts-Login ~]$ docker network inspect msy_network
[
{
"Name": "msy_network",
"Id": "a31b02a31834293307b83c2590fb476917f9d96c0293d0e628fe7242241efbe8",
"Created": "2024-03-11T20:12:47.655246491+08:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "172.18.0.0/16",
"Gateway": "172.18.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"0df2979ada29aac80918ae2ba8219f172d07126f1b16f747204a8ae164c85261": {
"Name": "drupal_mysql",
"EndpointID": "2db8097423feacd7d6a97ab168c333bcaee2e24451cf6b55d4069967ea83c074",
"MacAddress": "02:42:ac:12:00:02",
"IPv4Address": "172.18.0.2/16",
"IPv6Address": ""
},
"cbb8b6ef03ac7be219ee946ac249ad02adb78464d0722c7cd4aceecf6f314326": {
"Name": "drupal10",
"EndpointID": "6c6f4b35537e85ac25a42dda8970cc66213ddf30ab57a6c33157e3694d922fe9",
"MacAddress": "02:42:ac:12:00:03",
"IPv4Address": "172.18.0.3/16",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {}
}
]