<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://training-course-material.com/index.php?action=history&amp;feed=atom&amp;title=Container_management_with_Docker</id>
	<title>Container management with Docker - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://training-course-material.com/index.php?action=history&amp;feed=atom&amp;title=Container_management_with_Docker"/>
	<link rel="alternate" type="text/html" href="https://training-course-material.com/index.php?title=Container_management_with_Docker&amp;action=history"/>
	<updated>2026-05-13T19:53:31Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://training-course-material.com/index.php?title=Container_management_with_Docker&amp;diff=77016&amp;oldid=prev</id>
		<title>Kbaran: /* Custom user networks (bridge) */</title>
		<link rel="alternate" type="text/html" href="https://training-course-material.com/index.php?title=Container_management_with_Docker&amp;diff=77016&amp;oldid=prev"/>
		<updated>2020-04-06T13:27:31Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Custom user networks (bridge)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Category:Docker]]&lt;br /&gt;
[[Category:course_code_dockcm]]&lt;br /&gt;
&lt;br /&gt;
{{Copyright Notice}}&lt;br /&gt;
&lt;br /&gt;
== Author ==&lt;br /&gt;
* Kamil Baran - http://www.kamilbaran.pl&lt;br /&gt;
&lt;br /&gt;
== What is Docker? ==&lt;br /&gt;
* World before Docker&lt;br /&gt;
** no virtualization&lt;br /&gt;
** hypervisor-based virtualization&lt;br /&gt;
** container-based virtualization&lt;br /&gt;
&lt;br /&gt;
=== Architecture ===&lt;br /&gt;
* Docker uses a client-server architecture&lt;br /&gt;
[[File:architecture.svg|x400px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Main Docker elements ===&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;deamon&amp;#039;&amp;#039;&amp;#039;: process that runs on a host machine (server)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;client&amp;#039;&amp;#039;&amp;#039;: primary Docker interface&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;image&amp;#039;&amp;#039;&amp;#039;: read-only template (build component)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;registry&amp;#039;&amp;#039;&amp;#039;: public or private image repositories (distribution, ship component)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;container&amp;#039;&amp;#039;&amp;#039;: created form image, holds everything that is needed for an application to run (run component)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Benefits of Docker ===&lt;br /&gt;
* separation of roles and concerns&lt;br /&gt;
** developers focuses on building applications&lt;br /&gt;
** system administrators focuses on deployment&lt;br /&gt;
* portability: build in one environment, distributed and run on many others&lt;br /&gt;
* faster development, testing, deployment&lt;br /&gt;
* scalability: easy to spin up new containers or migrate to more powerful hosts&lt;br /&gt;
* better resource utilization: more apps on one host&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The underlying technology ===&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;namespaces&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;pid&amp;#039;&amp;#039;&amp;#039; namespace: used for process isolation (Process ID)&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;net&amp;#039;&amp;#039;&amp;#039; namespace: used for managing network interfaces&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;mnt&amp;#039;&amp;#039;&amp;#039; namespace: used for managing mount-points&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;ipc&amp;#039;&amp;#039;&amp;#039; namespace: used for managing access to IPC resources (InterProcess Communication)&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;uts&amp;#039;&amp;#039;&amp;#039; namespace: used for isolating kernel and version identifiers (Unix Timesharing System)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;control groups&amp;#039;&amp;#039;&amp;#039; (cgroups)&lt;br /&gt;
** used for sharing available hardware resources&lt;br /&gt;
** and setting up limits and constraints&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;union file system&amp;#039;&amp;#039;&amp;#039; (UnionFS)&lt;br /&gt;
** file system that operate by creating layers&lt;br /&gt;
** many layers are merged and visible as one consistent file system&lt;br /&gt;
** many available file systems: &amp;#039;&amp;#039;&amp;#039;AUFS&amp;#039;&amp;#039;&amp;#039;, btrfs, vfs, DeviceMapper&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;container format&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** two supported container formats: &amp;#039;&amp;#039;&amp;#039;libcontainer&amp;#039;&amp;#039;&amp;#039;, LXC&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
&lt;br /&gt;
=== Installation of Docker engine and client ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
# easiest way to install Docker&lt;br /&gt;
$ wget -qO- https://get.docker.com/ | sh&lt;br /&gt;
# to use docker as ubuntu user without using sudo (optional)&lt;br /&gt;
$ sudo usermod -aG docker student&lt;br /&gt;
# to check the installation&lt;br /&gt;
$ docker version&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* [https://docs.docker.com/engine/installation/ubuntulinux/ Manual installation steps, more details and installation instructions for other operating systems]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hello world example ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
$ docker run hello-world&lt;br /&gt;
$ docker images&lt;br /&gt;
$ docker ps -a&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dockerized bash terminal ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
$ docker run -it ubuntu&lt;br /&gt;
$ docker run -it ubuntu:latest&lt;br /&gt;
$ docker run -it ubuntu:14.04 bash&lt;br /&gt;
$ docker run -it ubuntu ps -aux&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* docker run &amp;#039;&amp;#039;&amp;#039;-t&amp;#039;&amp;#039;&amp;#039;: allocate a pseudo-tty&lt;br /&gt;
* docker run &amp;#039;&amp;#039;&amp;#039;-i&amp;#039;&amp;#039;&amp;#039; (--interactive): keep STDIN open even if not attached&lt;br /&gt;
* use &amp;#039;&amp;#039;&amp;#039;CTRL + p + q&amp;#039;&amp;#039;&amp;#039; to detach from running container&lt;br /&gt;
* use &amp;#039;&amp;#039;&amp;#039;attach&amp;#039;&amp;#039;&amp;#039; command to reattach to a detached container&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;$ docker attach container_name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* the importance of PID 1&lt;br /&gt;
* PID in the container and Docker host:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;$ ps -fe | grep $(pidof docker)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* installing packages: mc, vim&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Investigating containers and images ===&lt;br /&gt;
* docker &amp;#039;&amp;#039;&amp;#039;inspect&amp;#039;&amp;#039;&amp;#039; displays low-level information on a container or image&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
$ docker inspect webapp&lt;br /&gt;
$ docker inspect --format=&amp;#039;{{.NetworkSettings.IPAddress}}&amp;#039; webapp&lt;br /&gt;
$ docker inspect --format=&amp;#039;{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}&amp;#039; webapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* docker &amp;#039;&amp;#039;&amp;#039;diff&amp;#039;&amp;#039;&amp;#039; displays changes on a container&amp;#039;s filesystem&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
$ docker diff webapp&lt;br /&gt;
$ docker diff webapp | grep ^A&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* docker &amp;#039;&amp;#039;&amp;#039;history&amp;#039;&amp;#039;&amp;#039; shows the history of an image (layers)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
$ docker history ubuntu&lt;br /&gt;
$ docker history --no-trunc ubuntu&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* docker &amp;#039;&amp;#039;&amp;#039;logs&amp;#039;&amp;#039;&amp;#039; fetches the logs of a container&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
$ docker logs webapp&lt;br /&gt;
$ docker logs --tail 15 webapp&lt;br /&gt;
$ docker logs -f webapp&lt;br /&gt;
$ docker logs -t webapp&lt;br /&gt;
$ docker logs --since 1h webapp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* docker &amp;#039;&amp;#039;&amp;#039;top&amp;#039;&amp;#039;&amp;#039; displays all running processes of a container&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
$ docker top webapp&lt;br /&gt;
$ docker exec webapp ps aux&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cleaning up and keeping clean ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
$ docker image ls&lt;br /&gt;
$ docker ps -a&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* docker run &amp;#039;&amp;#039;&amp;#039;--rm&amp;#039;&amp;#039;&amp;#039; automatically removes the container when it exits&lt;br /&gt;
* docker run &amp;#039;&amp;#039;&amp;#039;--name&amp;#039;&amp;#039;&amp;#039; assigns your own, meaningful name of the container&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;$ docker run --rm -it --name=test ubuntu bash&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* container name must be unique and you can change it whenever you like&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;$ docker rename test meaningful_name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* docker &amp;#039;&amp;#039;&amp;#039;rm&amp;#039;&amp;#039;&amp;#039; removes a container&lt;br /&gt;
* docker &amp;#039;&amp;#039;&amp;#039;image rm&amp;#039;&amp;#039;&amp;#039; removes an image&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;$ docker rm meaningful_name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# removes all not running containers&lt;br /&gt;
$ docker rm $(docker ps -aqf &amp;quot;status=exited&amp;quot;)&lt;br /&gt;
$ docker rm $(docker ps -a | grep &amp;#039;Exited&amp;#039; | awk &amp;#039;{print $1}&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
# removes all images without a tag (dangling)&lt;br /&gt;
$ docker image prune&lt;br /&gt;
$ docker image rm $(docker image ls -qf &amp;quot;dangling=true&amp;quot;)&lt;br /&gt;
$ docker rmi $(docker images | grep &amp;#039;^&amp;lt;none&amp;gt;&amp;#039; | awk &amp;#039;{print $3}&amp;#039;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Exercises&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Storage and data persistence ==&lt;br /&gt;
&lt;br /&gt;
=== Within the container ===&lt;br /&gt;
* data is only visible inside the container&lt;br /&gt;
* data is not persisted outside of the container&lt;br /&gt;
* data is lost if the container is removed&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Directly on Docker host ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
$ docker run -v /host/dir:/container/dir:rw ...&lt;br /&gt;
$ docker run -v /home/ubuntu/docker/training_httpd1/html:/var/www/html/ -d --name www --net host training:httpd1&lt;br /&gt;
$ docker run -v $PWD/html:/var/www/html/ -d --name www --net host training:httpd1&lt;br /&gt;
$ docker run -v $PWD/html:/var/www/html/:ro -d --name www --net host training:httpd1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* data is visible inside the container, Docker host and can be shared between containers&lt;br /&gt;
* data is persisted outside of the container even if the container is removed&lt;br /&gt;
* this provides near bare metal performance&lt;br /&gt;
* host directory can be an existing NFS share, formatted block device or anything that can be mounted on Docker host&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Docker Volumes ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
$ docker run -itd -v /data --name data1 ubuntu&lt;br /&gt;
$ docker inspect data1&lt;br /&gt;
$ docker exec data1 touch /data/file1&lt;br /&gt;
$ docker exec data1 ls -l /data/&lt;br /&gt;
$ docker run -itd --volumes-from data1 --name data2 ubuntu&lt;br /&gt;
$ docker inspect data2&lt;br /&gt;
$ docker rm -fv data1 data2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
$ docker volume create --name kb_volume&lt;br /&gt;
$ docker run --rm -it -v kb_volume:/data ubuntu touch /data/kb&lt;br /&gt;
$ docker run --rm -it -v kb_volume:/data ubuntu ls -l /data&lt;br /&gt;
$ docker volume rm kb_volume&lt;br /&gt;
$ docker volume ls&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* data is visible inside the container and can be shared between containers&lt;br /&gt;
* data is persisted outside of the container even if the container is removed&lt;br /&gt;
** use docker run &amp;#039;&amp;#039;&amp;#039;rm -v&amp;#039;&amp;#039;&amp;#039; to remove a container with its volumes (unless the other container uses them)&lt;br /&gt;
* this provides near bare metal performance&lt;br /&gt;
* it solves the problem with privileges (users and groups with different IDs on host and in the container)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; Creating groups and users with custom ID &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
$ groupadd -r -g 27017  mongodb&lt;br /&gt;
$ useradd -r -u 27017 -g mongodb mongodb&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Backup and restore data from volumes ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
# backup data from one container&lt;br /&gt;
$ docker run -itd -v /data --name data1 ubuntu&lt;br /&gt;
$ docker exec data1 touch /data/file1&lt;br /&gt;
$ docker exec data1 chown www-data:www-data /data/file1&lt;br /&gt;
$ docker run --rm --volumes-from data1 ubuntu ls -l /data&lt;br /&gt;
$ docker run --rm --volumes-from data1 -v $PWD:/backup ubuntu tar -cvpf /backup/backup.tar /data&lt;br /&gt;
$ docker rm -fv data1&lt;br /&gt;
# restore data into brand new container&lt;br /&gt;
$ docker run -itd -v /data --name data1 ubuntu&lt;br /&gt;
$ docker run --rm --volumes-from data1 -v $PWD:/backup ubuntu tar -xvpf /backup/backup.tar&lt;br /&gt;
$ docker run --rm --volumes-from data1 -v $PWD:/backup ubuntu bash -c &amp;quot;cd /data &amp;amp;&amp;amp; tar -xvf /backup/backup.tar --strip 1&amp;quot;&lt;br /&gt;
$ docker run --rm --volumes-from data1 ubuntu ls -l /data&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Outside Docker Host ===&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Networking ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
$ docker network --help&lt;br /&gt;
$ docker network ls&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Docker host network ===&lt;br /&gt;
* the &amp;#039;&amp;#039;&amp;#039;host network&amp;#039;&amp;#039;&amp;#039; adds a container on the hosts network stack&lt;br /&gt;
* the network configuration inside the container is identical to the host&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
$ docker run --name db1  -d --net host training:mongod&lt;br /&gt;
$ docker run --name www -d --net host training:httpd1&lt;br /&gt;
$ docker inspect www&lt;br /&gt;
$ docker network inspect host&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Without network interface ===&lt;br /&gt;
* the &amp;#039;&amp;#039;&amp;#039;none network&amp;#039;&amp;#039;&amp;#039; adds a container to a container-specific network stack&lt;br /&gt;
* use &amp;#039;&amp;#039;docker exec&amp;#039;&amp;#039; command to connect to the container&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
$ docker run --name networkless --net none -it --rm ubuntu bash&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Default network (bridge) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
$ docker run --name db2 -d --volumes-from db1 training:mongod&lt;br /&gt;
$ docker run --name www -d training:httpd1&lt;br /&gt;
$ docker run --name www -d -P training:httpd1&lt;br /&gt;
$ docker run --name www -d -p 80:80 training:httpd1&lt;br /&gt;
$ docker run --name www -d -p 127.0.0.1:88:80 training:httpd1&lt;br /&gt;
$ docker run --name www -d -p 80:80 --link db2 training:httpd1&lt;br /&gt;
$ docker run --name www -d -p 80:80 --link db2:db training:httpd1&lt;br /&gt;
$ docker inspect www&lt;br /&gt;
$ docker network inspect host&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* this is a default network for all containers&lt;br /&gt;
* containers are able to communicate with each other using IP addresses&lt;br /&gt;
* Docker does not support automatic service discovery on the default bridge network&lt;br /&gt;
* to communicate by using names in this network, you must connect the containers via the legacy docker &amp;#039;&amp;#039;&amp;#039;run --link&amp;#039;&amp;#039;&amp;#039; option&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Custom user networks (bridge) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
$ docker network create --driver bridge --subnet 10.1.2.0/24 net1&lt;br /&gt;
$ docker network create --subnet 10.1.2.0/24 --gateway=10.1.2.1 net1&lt;br /&gt;
$ docker run -d --network net1 --name mongo --network-alias db training:mongod&lt;br /&gt;
$ docker run -d --network net1 --name apache --network-alias www --hostname httpd -p 80:80 -e MONGO_CS=&amp;quot;mongodb://mongo:27017&amp;quot; training:httpd&lt;br /&gt;
$ docker network ls&lt;br /&gt;
$ docker network inspect net1&lt;br /&gt;
$ docker network disconnect net1 www&lt;br /&gt;
$ docker network connect net1 www&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kbaran</name></author>
	</entry>
</feed>