Docker specifies the method of container ip for network bridge mode
- 2020-05-24 06:34:01
- OfStack
preface
It is well known that bridge mode is the default network setting of Docker. This mode allocates Network Namespace for each container, sets IP, etc., and connects Docker containers on one host to a virtual bridge. Let's take a look at how Docker specifies container ip for network bridge mode.
Implementation method
You cannot specify ip to the container by simply creating an bridge mode network
[root@vultrvpn conf.d]# docker network create --driver bridge wordpress_net
ad1ff3d972e8bfe6d992a8403a98f46784aa75d5514adbf35ee6ae4528513be7
[root@vultrvpn conf.d]# docker network ls
NETWORK ID NAME DRIVER SCOPE
38fab5c74b87 bridge bridge local
f0cf94dd0c5e host host local
465a31c55aa1 none null local
ad1ff3d972e8 wordpress_net bridge local
A network of wordpress_net has been created. Create a container on this network module and specify ip
[root@vultrvpn conf.d]# docker run -d --name db_mysql -m 220m --memory-swap 220m -v /data/docker_project/db_mysql/data:/var/lib/mysql -v /data/docker_project/db_mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=qwe123 --network=wordpress_net --ip=172.18.0.2 mysql:5.7
da497e56bd4b0f3434dd4f81534096574d167354dc508b657ceb390ba8e63771
docker: Error response from daemon: User specified IP address is supported only when connecting to networks with user configured subnets.
An error was prompted. To configure ip, you need to specify an subnet for this network. So let's redo a network.
docker network create --driver bridge --subnet 172.25.0.0/16 wordpress_net
[root@vultrvpn conf.d]# docker network inspect wordpress_net
[
{
"Name": "wordpress_net",
"Id": "925e64493df9b674ef9bdadaae380c8a335aa6353e48b447cb5d910df19c3a3e",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "172.25.0.0/16"
}
]
},
"Internal": false,
"Containers": {},
"Options": {},
"Labels": {}
}
]
Specify 1 ip for the container
[root@vultrvpn conf.d]# docker run -d --name my_vpn -m 100m --memory-swap 100m -e WORDPRESS_DB_HOST=172.25.0.2 -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD=qwe123 -e WORDPRESS_DB_NAME=myvpn -p 8001:80 --network=wordpress_net wordpress:4.6
096518d84419476f71647a8c70c91c3f336ef8772af50672b88a9c1fd7b3a719
[root@vultrvpn conf.d]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
096518d84419 wordpress:4.6 "/entrypoint.sh apach" 47 seconds ago Up 47 seconds 0.0.0.0:8001->80/tcp my_vpn
6d23ed99db20 wordpress:4.6 "/entrypoint.sh apach" About a minute ago Up About a minute 0.0.0.0:8000->80/tcp my_wordpress
ade42edf5a93 mysql:5.7 "docker-entrypoint.sh" 3 minutes ago Up 3 minutes 3306/tcp db_mysql
The normal to create
View network card information
[root@vultrvpn conf.d]# docker network inspect wordpress_net
[
{
"Name": "wordpress_net",
"Id": "925e64493df9b674ef9bdadaae380c8a335aa6353e48b447cb5d910df19c3a3e",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "172.25.0.0/16"
}
]
},
"Internal": false,
"Containers": {
"096518d84419476f71647a8c70c91c3f336ef8772af50672b88a9c1fd7b3a719": {
"Name": "my_vpn",
"EndpointID": "e44636c2b3a49d4aedaad68cd6ca17aea3a9fe4f71afecb27219a6412701536a",
"MacAddress": "02:42:ac:19:00:04",
"IPv4Address": "172.25.0.4/16",
"IPv6Address": ""
},
"6d23ed99db20f17d99dd5dcf6cc65f5ced8cb936917dee044914cf278179150c": {
"Name": "my_wordpress",
"EndpointID": "3c765d5953428c1d66be584eb0d34b58f6eee3f598e3a37263d54d77e2b87263",
"MacAddress": "02:42:ac:19:00:03",
"IPv4Address": "172.25.0.3/16",
"IPv6Address": ""
},
"ade42edf5a934b02f7bb741bd5a45a282a50d3a49e9f1866579e8f93fef22a0e": {
"Name": "db_mysql",
"EndpointID": "2322bfb9da72b3b6db68d59cea97172e66b960ca5b782bd2fa7d09f9c93f0288",
"MacAddress": "02:42:ac:19:00:02",
"IPv4Address": "172.25.0.2/16",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {}
}
]
conclusion
The above is the entire content of this article, I hope the content of this article can be helpful to you, if you have any questions, you can leave a message to communicate.