How to assign static public IP to the docker container
In this post, we will create a docker container and configure the static public IP so it will be reachable from outside. Here we will use the Linux MAC VLANs and Virtual Ethernets.
Prerequisites:
- Ubuntu host up and running.
- Public IP should be configured.
- Docker should be installed.
PULL UBUNTU DOCKER IMAGE
$ docker pull ubuntu:14.04.5 |
---|
It will download the Ubuntu docker image.
Create a container
$ docker run -ti --name container-1 --net=none --privileged=true ubuntu:14.04.5 bash |
---|
This will create a docker container, now we will configure the static public ip to the container.
ASSIGNING AN IP FOR A CONTAINER
Here I am assuming that host machine is having interface "eth0" with public IP configured. Name of the container is container-1. The below steps needs to be performed on the docker host.
Create a virtual interface
$ ip link add name veth0 link eth0 type macvlan mode bridge New virtual interface "veth0" will be created.Get the process id for the salt master container
$ docker inspect -f '{{.State.Pid}}' container-1 Create Link
$ mkdir -p /var/run/netns $ ln -s /proc/<processid>/ns/net /var/run/netns/<processid>
Assign the virtual interface to container-1
$ ip link set veth0 netns <processid> name eth0
Here a new interface eth0 will be created inside the container.
Note: If your ubuntu host machine is running in the EXS then verify the below network setting in the ESX.
- Promiscuous Mode , MAC Address Changes and Forged Transmits should be accepted mode.
If any one of them is not set to accept then change it in the ESX network setting (Host -> Configuration ->Networking->Properties->Edit)
Here I will use the dhclient to get the public static IP. If you are not having DHCP server configured then you can manually assign the IP to the interface.
$ docker exec -it container-1 dhclient -v eth0
Now you have successfully configured the static public IP to the docker container.
Here we have used the concept of MAC VLANs and Virtual Ethernets so whenever you will shutdown/stop the container that IP will be lost. It means whenever you will start the container you have to configure the IP again.
Comments
Post a Comment