Hello,
I figured out how to create containers on a shared network among my MacBook, VMs, and containers in a simple way, without using an additional tool.
I know the pipework works great, but here’s another option you may want to try. The follows is an example of making a bridge on eth1. (* Before trying it, please make sure you log in to the machine via another network interface such as eth0 because you need to once delete the IP address from eth1.)
# Delete the IP address from eth1
$ sudo ip addr del 192.168.33.10/24 dev eth1
# Create "shared_nw" with a bridge name "docker1"
$ sudo docker network create \
--driver bridge \
--subnet=192.168.33.0/24 \
--gateway=192.168.33.10 \
--opt "com.docker.network.bridge.name"="docker1" \
shared_nw
# Add docker1 to eth1
$ sudo brctl addif docker1 eth1
After making the bridge, you should be able to create a container from your MacBook, and you can reach the container’s IP address like this.
$ eval $(docker-machine env <your_env>) # Setup the environment
$ docker run --name container1 --net shared_nw --ip 192.168.33.11 -dt ubuntu
$ ping -c 3 192.168.33.11
For more detailed explanation, please visit my github repo.
https://github.com/kjtanaka/docker-example-shared-nw
If this approach has already widely been known, sorry…, please ignore this.