Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?


Installing cRPD on Docker

This section outlines the steps to install the cRPD container in a Linux server environment that is running Ubuntu or Red Hat Enterprise Linux (RHEL). The cRPD container is packaged in a Docker image and runs in the Docker Engine on the Linux host.

This section includes the following topics:

Before You Install

Before you install cRPD as routing service to achieve routing functionality in a Linux container environment, ensure to:

Install and Verify Docker

Install and configure Docker on Linux host platform to implement the Linux container environment, see Install Docker for installation instructions on the supported Linux host operating systems.

Verify the Docker installation. See Debugging cRPD Application.

To install the latest Docker:

Log in and download the software.

root@ubuntu-vm18:~# curl -fsSL | sudo apt-key add -

root@ubuntu-vm18:~# add-apt-repository "deb [arch=amd64] $(lsb_release -cs) stable"

root@ubuntu-vm18:~# apt update

root@ubuntu-vm18:~# apt install docker-ce

Download the cRPD Software

The cRPD software is available as a cRPD Docker file from the Juniper Internal Docker registry.

There are two ways to download the software:

  • Juniper Docker Registry

  • Juniper software download page

  • Before you import the cRPD software, ensure that Docker is installed on the Linux host and that the Docker Engine is running.

  • Ensure to register with Juniper Support before you download the cRPD software.

Once the Docker Engine has been installed on the host, perform the following to download and start using the cRPD image:

To download the cRPD software using the Juniper Docker Registry:

  1. Log in to the Juniper Internal Docker registry using the following steps:
    1. Create the file -passwd.txt and copy the access token excluding the quotes provided by Juniper customer care team.
    2. Login to enterprise hub using the following command:
      root@ubuntu-vm18$ cat passwd.txt | docker login -u"<registered-email-id>" --password-stdin

      For example, root@ubuntu-vm18$ cat passwd.txt | docker login -u --password-stdin

  2. Pull the docker image from the download site using the following command:

    root@ubuntu-vm18:~# docker pull<release tag>

    root@ubuntu-vm18:~# docker pull

  3. Verify images in docker image repository.

    root@ubuntu-vm18:~# docker images

Download cRPD Software from Juniper URL

To download the cRPD software from the Juniper download URL:
  1. Download the cRPD software image from the Juniper Networks website.root@ubuntu-vm18:~# docker load -i junos-routing-crpd-docker-19.2R1.8.tgz
  2. Verify the downloaded images in docker image repository.root@ubuntu-vm18:~# docker images

Creating Data Volumes and Running cRPD using Docker

To create data volumes:

  1. Create data volume for configuration and var logs.

    root@ubuntu-vm18:~# docker volume create crpd01-config

    root@ubuntu-vm18:~# docker volume create crpd01-varlog

    Data volumes remain even after containers are destroyed and can be attached to newer containers. Data volumes are not shared between multiple containers at the same time unless they are ready-only volumes.

  2. Download and load the cRPD software.
  3. Attach the data volumes to create and launch the container to the cRPD instance.

    In the bridge mode, containers are connected to host network stack through bridge(s). Multiple containers can connect to the same bridge and communicate with each other. External devices communication is possible, if the bridge is connected to the host OS network interfaces.

    For routing purposes, it is also possible to assign exclsuively assign all or a subset of physical interfaces for exclusive use by a docker container.


    You must include the --privileged flag in the docker run command to enable the cRPD container to run in privileged mode.

    root@ubuntu-vm18:~# docker run --rm --detach --name crpd01 -h crpd01 --net=bridge --privileged -v crpd01-config:/config -v crpd01-varlog:/var/log -it

    Bridge mode is the default working mode of docker. This allows to run multiple containers to run on same host without any assignment of dynamic port. Each container runs its own private network namespace.

To launch cRPD in host networking mode:

  1. In the host mode, the network namespace is shared. For example, if an interface is defined inside a pod, the same interface is visible on the host as well. Docker containers uses the host network namespace. Run the command to launch cRPD in host networking mode:

    root@ubuntu-vm18:~# docker run --rm --detach --name crpd01 -h crpd01 --privileged --net=host -v crpd01-config:/config -v crpd01-varlog:/var/log -it crpd:19.2R1.8

Configuring Memory

To limit the amount of memory allocated to the cRPD:

You can specify the memory size using the following command:

root@ubuntu-vm18:~# docker run --rm --detach --name crpd01 -h crpd01 --privileged -v crpd01-config:/config -v crpd01-varlog:/var/log -m 2048MB --memory-swap=2048MB -it crpd:19.2R1.8

Configuring cRPD using the CLI

cRPD provides Junos command line configuration and operational commands for routing service. It provides subset of routing protocols configuration that enable node participates in topology and routing.

You can configure interfaces from Linux shell. Interface configuration is available only for the ISO addresses.

To configure the cRPD container using the CLI:

  1. Log in to the cRPD container.

    root@ubuntu-vm18:~/# docker exec -it crpd01 cli

  2. Enter configuration mode.

    root@crpd01> configure

  3. Set the root authentication password by entering a cleartext password, an encrypted password, or an SSH public key string (DSA or RSA).

    root@crpd01# set system root-authentication plain-text-password

  4. Commit the configuration to activate it on the cRPD instance.

    root@crpd01# commit

  5. (Optional) Use the show command to display the configuration to verify that it is correct.

    root@crpd01# show