How to change the network of a running docker container?
Solution 1
When you start a container, such as:
docker run -d --name alpine1 alpine
It is by default connected to the bridge
network, check it with:
docker container inspect alpine1
If you try to connect it to host
network with:
docker network connect host alpine1
you obtain an error:
Error response from daemon: container cannot be disconnected from host network or connected to host network
you have to delete the container and run it again on the host network:
docker stop alpine1
docker rm alpine1
docker run -d --network host --name alpine1 alpine
This limitation is not present on bridge networks. You can start a container:
docker run -d --name alpine2 alpine
disconnect it from the bridge network and reconnect it to another bridge network.
docker network disconnect bridge alpine2
docker network create --driver bridge alpine-net
docker network connect alpine-net alpine2
Note also that according to the documentation:
The host networking driver only works on Linux hosts, and is not supported on Docker Desktop for Mac, Docker Desktop for Windows, or Docker EE for Windows Server.
Solution 2
If you want to circumvent the command line and change the network of your docker container via portainer, you can do so. I'm not sure exactly which is the best way of doing this, but the steps below worked for me (changing a container that was running on the bridge network by default into the host network):
- In the Container list, click on the container name (emby, in my case)
- Stop the container
- Click on Duplicate/Edit
- Scroll down to Advanced container settings and select the Network tab
- Change the Network to
host
(or whatever you want to set it to) - Click on Deploy the container right above.
- Confirm that you want to replace the old container (or deploy it under a new name if you want to be on the save side and keep the old one).
- Done!
Related videos on Youtube

sudhir tataraju
Updated on February 25, 2022Comments
-
sudhir tataraju 10 months
I'm trying to update the network of a running docker container.
Note: I didn't attach any network while running the container.
[[email protected] ~]# docker network connect host cdf8d6e3013d Error response from daemon: container sharing network namespace with another container or host cannot be connected to any other network [[email protected] ~]# docker network connect docker_gwbridge cdf8d6e3013d error during connect: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.39/networks/docker_gwbridge/connect: EOF [[email protected] ~]# docker network create -d host my-host-network Error response from daemon: only one instance of "host" network is allowed [[email protected] ~]# docker network ls NETWORK ID NAME DRIVER SCOPE 495080cf93e3 bridge bridge local cf0408d6f13f docker_gwbridge bridge local 2c5461835eaf host host local 87e9cohcbogh ingress overlay swarm 84dbd78101e3 none null local 774882ac9b09 sudhirnetwork bridge local
-
Mattias Wadman almost 4 yearsHi, can you give more details what you want to accomplish? what is the setup your trying to get? based on the error messages it sounds like docker does not support it
-
sudhir tataraju almost 4 yearsHow to change network of running docker container?
-
Mattias Wadman almost 4 yearsSorry maybe unclear question. What meant was that i don't think you're using the commands to change the networking of running container in the wrong way. It's more that you're trying to change it in way that is not supported.
-
-
sudhir tataraju almost 4 yearsbut if am attaching to bridge network, my running docker container all ports not exposing, also below error I was getting because my swarm was up after docker swarm leave command running again same command worked. [[email protected] ~]# docker network connect docker_gwbridge cdf8d6e3013d error during connect: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.39/networks/docker_gwbridge/connect: EOF
-
Admin 10 monthsYour answer could be improved with additional supporting information. Please edit to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers in the help center.
-
mouchin777 8 monthslifesaver, worked like a charm
-
eco 7 monthsAlthough valuable the OP is on a linux system so a command line answer is necessary. i.e. See answer from Ortomala Lokni. All you are doing is creating a NEW container on a different network, that doesn't answer the question of the op: "I'm trying to update the network of a running docker container.". Running container.
-
eco 7 monthsThis should be marked as answer.