Tuesday, 21 November 2023

docker, docker compose , network bridge, subnets, no bridge error

docker comes with default network bridge 

// Quick commands

// show docker default docker 0 ip addr

ip address list

 ip address show docker0


// show docker bridge

docker network ls

docker netowork inspect bridge


// check global configs such as bridge subnet etc

sudo cat /etc/docker/daemon.json

{
  "default-address-pools":
  [
    {"base":"10.10.0.0/16","size":24}
  ]
}
//  reload restart daemon

 sudo systemctl daemon-reload
sudo systemctl restart docker


// https://www.aquasec.com/cloud-native-academy/docker-container/docker-networking/#:~:text=When%20Docker%20is%20installed%2C%20a,a%20custom%20network%20is%20specified.

with docker0

//

Docker Default Networking (docker0)

When Docker is installed, a default bridge network named  docker0 is created. Each new Docker container is automatically attached to this network, unless a custom network is specified.


Besides  docker0  , two other networks get created automatically by Docker:  host  (no isolation between host and containers on this network, to the outside world they are on the same network) and  none  (attached containers run on container-specific network stack).


// 

ip addr show docker0

docker network inspect bridge


// 

// check amount of network

docker network ls

// inspect

docker network inspect <name>


!!!!!!!!!!!!!!!!!! if no docker0, default bridge

https://docs.docker.com/config/daemon/

Removing the existing configuration file (/etc/docker/daemon.json) solved my issue. After restarting the docker service, docker0 network interface was created automatically again.

 sudo systemctl daemon-reload
sudo systemctl restart docker

// create bridge

https://docs.docker.com/engine/reference/commandline/network_create/

docker network create --driver=bridge --subnet=192.168.0.0/16 br0


// Join user defined bridge in docker-compose :

https://www.geeksforgeeks.org/how-to-use-docker-default-bridge-networking/

services:
  serviceName:
    networks:
      - myNetwork
// Join using docker
https://docs.docker.com/config/daemon/
docker network create -d bridge my_bridge_network

You can then start a container using this network by specifying the --network option and providing the name of the bridge network, like so:

docker run -it --network my_bridge_network my_image

You can inspect the network using the following command to verify that the network was created correctly:

docker network inspect my_bridge_network

// If you dont speicfy default bridge will be joined
// Create bridge network
// https://docs.docker.com/engine/reference/commandline/network_create/
docker network create -d bridge my-bridge-network
docker network create -d bridge prometheus-network

/// Change docker network
https://docs.docker.com/config/daemon/
https://stackoverflow.com/questions/43689271/wheres-dockers-daemon-json-missing
/etc/docker/daemon.json
for example to change IP address for subnet
{
  "default-address-pools":
  [
    {"base":"10.10.0.0/16","size":24}
  ]
}
 sudo systemctl daemon-reload
sudo systemctl restart docker




No comments:

Post a Comment