From ad57b2940aa20bc9ea7d64b7277441ba65e42e2a Mon Sep 17 00:00:00 2001 From: Jeff Loughridge Date: Mon, 6 Dec 2021 16:07:28 -0500 Subject: Add docker.rst --- docs/installation/virtual/docker.rst | 74 ++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 docs/installation/virtual/docker.rst (limited to 'docs/installation/virtual') diff --git a/docs/installation/virtual/docker.rst b/docs/installation/virtual/docker.rst new file mode 100644 index 00000000..e2bc0198 --- /dev/null +++ b/docs/installation/virtual/docker.rst @@ -0,0 +1,74 @@ +.. _docker: + +*************************** +Running in Docker Container +*************************** + +Docker is an open-source project for deploying applications as standardized +units called containers. Deploying VyOS in a container provides a simple and +lightweight mechanism for both testing and packet routing for container +workloads. + +IPv6 Support for docker +======================= + +VyOS requires an IPv6-enabled docker network. Currently linux distributions +do not enable docker IPv6 support by default. You can enable IPv6 support in +two ways. + +Method 1: Create a docker network with IPv6 support +--------------------------------------------------- + +Here is a example using the macvlan driver. + +.. code-block:: none + + docker network create --ipv6 -d macvlan -o parent=eth0 --subnet 2001:db8::/64 --subnet 192.0.2.0/24 mynet + +Method 2: Add IPv6 support to the docker daemon +----------------------------------------------- + +Edit /etc/docker/daemon.json to set the ``ipv6`` key to ``true`` and to specify +the ``fixed-cidr-v6`` to your desired IPv6 subnet. + +.. code-block:: none + + { + "ipv6": true, + "fixed-cidr-v6": "2001:db8::/64" + } + +Reload the docker configuration. + +.. code-block:: none + + $ sudo systemctl reload docker + + +Deploy container from ISO +========================= + +Download the ISO on which you want to base the container. In this example, +the name of the ISO is ``vyos-1.4-rolling-202111281249-amd64.iso``. If you +created a custom IPv6-enabled network, the ``docker run`` command below +will require that this network be included as the ``--net`` parameter to +``docker run``. + +.. code-block:: none + + $ mkdir vyos && cd vyos + $ cp ~/vyos-1.4-rolling-202111281249-amd64.iso . + $ mkdir rootfs + $ sudo mount -o loop vyos-1.4-rolling-202111281249-amd64.iso rootfs + $ sudo apt-get install -y squashfs-tools + $ mkdir unsquashfs + $ sudo unsquashfs -f -d unsquashfs/ rootfs/live/filesystem.squashfs + $ sudo tar -C unsquashfs -c . | docker import - vyos:1.4-rolling-202111281249 + $ sudo umount rootfs + $ cd .. + $ sudo rm -rf vyos + $ docker run -d --rm --name vyos --privileged -v /lib/modules:/lib/modules \ + > vyos:1.4-rolling-202111281249 /sbin/init + $ docker exec -ti vyos su - vyos + +You can execute ``docker stop vyos`` when you are finished with the container. -- cgit v1.2.3