Synology running docker & Portainer MacVlan Setup - docker

I recently started Using Docker&Portainer on my Synology. However all containers I Create use my Synology ipadres just a different port.
I want to setup a MacVlan through Portainer I am able to create the network only containers that use it have no acces to the Ethernet
Here are the steps I take;
First I ssh in to my Synology and enter the following comand
ifconfig | grep eth
ifconfig | grep eth
Than I create the config using ovs_eth0 (I am able to use eth0 but when trying to create a container using the macvlan it does not work and I get a error 500 message)
macvlanconfig
Than I create the actually network using the config network above.
creating the network
This all works but when I assign the network to a container it has nog Ethernet acces.
What am I missing?
I can Hardly find any documentation so there might be a simpler solution.
I just want to be able to assign a ip address to my container that show up in my network instead of being on the same ip adres that my nas is on.
Used both eth0 and ovs_eth0.
When Trying to create a ipvlan it says operation not supported
Trying to create ipvlan
Probably missing something but I can't figure it out myself

First you have to create a macvlan-template:
Looks like you're using the wrong network-driver. If you want to create a macvlan, you have to use the macvlan-driver.
Insert your prefered Subnet - /16 or /24 - depending on your needs.
Set your gateway - and set the IP-Range.
Use the Confighuration Field - click and that's all.
In the next step create the vlan - give it a name - again chosse the macvlan-driver an click Creation - there you go.

Related

Docker Networking with two interfaces

I am trying to setup my docker server which has two network interfaces eth0 going to my lan and eth1 going to a internal network for my vpn tunnel. And now all my containers are available through both interfaces. But I want to decide which containers are available through each interface.
I'm using docker-compose to start my containers and I have tried to create some docker networks and assign those, but I couldn't solve it that way. I also found something about macvlan networks but that seemed a bit to much for me. So I am wondering if there is another way or did I maybe misconfigure something? Or is macvlan still the easiest way to fix this?(if possible this way)
After doing some more digging i found another way which is easier to setup. I totally forgot this worked but you can just specify a which interface a port needs to bind to by giving the IP address of the interface when binding the port.
Like this when using docker run:
-p 192.168.1.100:8080:80/tcp
Or like this in docker compose:
ports:
- "192.168.1.100:8080:80/tcp"

Connecting Docker Container to Home Network

I am running some frr (free range routing) and ceos (Arista) containers on an "Ubuntu Docker Host" which is running on Virtual Box on Windows 10.
I created a macvlan network (net3) and tied it to enp interface of Ubuntu and connected my containers to it. However I cannot access my containers using their interfaces connected to the macvlan network.
I read about some limitations about network spaces between host and containers and saw macvlan network type as the solution to overcome those limitations. However it did not work.
Since my container is a router with multiple interfaces, I was expecting I can connect my new net3 network to my container. It would appear as a new new interface (it did) and when I assign an IP address from my home network to this interface, my router would be able to communicate to the outside directly using this interface`s IP address and bypass any sort of firewalling, NAT etc.
I know that we can use bridge networks connected to default docker0 network and which will then NAT outgoing connections from container and accept incoming connections if we publish a port etc. However what I want is to have a container with 2 interfaces, where one interface is in docker0 bridge and the other one is connected to the home network with an IP address from home network, which will expose it to the outside completely like a physical machine or my docket host Ubuntu VM.
I think i found a way to make this work.
added a new bridged network
added an iptables rule permitting traffic destined to this new bridged network at "Forward Chain".
What I do not understand now is that although the routing is disabled on the host, this "forward" rule has an impact on the traffic and it is actually working. I also did not need to add a rule traffic for return traffic. Default rules added by Docker during creation of the container seem to take care of this direction.

How to change the IP address of a docker after creating it?

I have a docker linked to a bridge with IP address 192.168.150.1/24.
Once I create the docker instance from a docker image it gets an IP address, 192.168.150.2, but according to my requirement, this IP address, 192.168.150.2, must be reserved since I want to use it for some other thing.
Now, I want to change the IP address of this docker instance as 192.168.150.3. Is it possible to do? if so how? Please, help.
You will have to first detach the container from the custom network and the connect it back by providing the ip.
You can follow the following steps :
docker network disconnect [OPTIONS] NETWORK CONTAINER
docker network connect --ip 192.168.150.3 NETWORK CONTAINER
You can specify a particular IP address when you define the port mapping, for example
-p 192.168.150.3:6379:6379
here is another option, try to use -b bridge option to use a certain ip range, like for instance -b br0=192.168.150.3/24
here is more complete example configure docker bridge network

How to connect containers on two different hosts connected by LAN

I would like to know how to make one container discoverable to another container running on different host but connected by LAN. Basically, I want to run two containers on different hosts and I want them to communicate, in this way I suppose I can implemented distributed training on tensorflow.
Is there any possible way to accomplish this?
There are multiple options to do that:
You can use weave.
You can set up a docker overlay network
You can use Docker Swarm
You can create macvlan docker network
You may also use a special script called pipework, which will automatically do the job:
Assign static macvlan ip
Assign dynamic ip, using DHCP client

In Docker, "Error response from daemon: could not choose an IP address to advertise since this system has multiple addresses on different interfaces"

My question is similar to docker swarm init could not choose an IP address error, but I found the accepted answer somewhat vague so I'll ask again. Upon trying
docker swarm init
I'm geting an error message
Error response from daemon: could not choose an IP address to advertise since this system has multiple addresses on different interfaces (192.168.130.117 on enp1s0 and 192.168.130.89 on wlp2s0) - specify one with --advertise-addr
What could be the root cause of this? I'm currently running a VPN (OneClickVPN); is that a problem?
Also, in order to specify one address with --advertise-addr, I'd like to find out more about the addresses given in the message. How could I do that?
It looks like you have two active network interfaces, one on enp1s0 and another on wlp2s0. I'd guess enp1s0 is an Ethernet connection and wlp2s0 is a WiFi connection.
As mentioned in the question you linked to, if you have multiple addresses on different interfaces, you have to specify one with --advertise-addr. In your case, you're essentially choosing between your Ethernet and WiFi interfaces.
I used the following command:
docker swarm init --advertise-addr 127.0.0.1
It worked just fine.
Most probably you were doing the following excercise (chapter 2):
https://github.com/docker/labs/blob/master/beginner/chapters/alpine.md
and then you moved to the chapter 3.
In addition to King's answer, you should check your default IP.
docker-machine ip default
I only wanted to have a small swarm with 1 master node on my work laptop so I can run some tests.
So I did this:
docker swarm init --advertise-addr 127.0.0.1
And it worked just fine for what I needed
That error looks two interface IP are running thats way your interface getting ambiguity, And its very simply to execute take your docker-machine's ip then hit,
Ex: docker swarm init --advertise-addr 111.111.11.111

Resources