133 lines
4.6 KiB
Markdown
133 lines
4.6 KiB
Markdown
## Table of Contents
|
||
|
||
1. [Installing ContainerLab](#installing-containerlab)
|
||
2. [Installing vrnetlab](#installing-vrnetlab)
|
||
3. [Installing Docker](#installing-docker)
|
||
|
||
## Installing ContainerLab
|
||
|
||
ContainerLab can be installed using the installation script that detects the operating system type and installs the appropriate package:
|
||
|
||
```bash
|
||
# download and install the latest version (may require sudo)
|
||
bash -c "$(curl -sL https://get.containerlab.dev)"
|
||
|
||
# with wget
|
||
bash -c "$(wget -qO - https://get.containerlab.dev)"
|
||
```
|
||
|
||
## Installing vrnetlab
|
||
|
||
Vrnetlab places a VM inside a container and makes it executable as if it were a container image.
|
||
To do this, vrnetlab provides a set of scripts that build the container image from a VM disk provided by the user.
|
||
|
||
```bash
|
||
# update and install dependencies
|
||
sudo apt update
|
||
sudo apt -y install python3-bs4 sshpass make
|
||
sudo apt -y install git
|
||
|
||
# move to /opt and clone the project
|
||
cd /opt && sudo git clone https://github.com/hellt/vrnetlab
|
||
|
||
# optional: change the directory permissions
|
||
sudo chown -R $USER:$USER vrnetlab
|
||
```
|
||
|
||
## Installing Docker
|
||
|
||
This is the containerization engine used by ContainerLab.
|
||
|
||
```bash
|
||
# Update and install dependencies
|
||
sudo apt-get update
|
||
sudo apt-get install ca-certificates curl gnupg
|
||
|
||
# Add Docker's official GPG key:
|
||
sudo apt-get update
|
||
sudo apt-get install ca-certificates curl gnupg
|
||
sudo install -m 0755 -d /etc/apt/keyrings
|
||
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
|
||
sudo chmod a+r /etc/apt/keyrings/docker.gpg
|
||
|
||
# Add the repository to Apt sources:
|
||
echo \
|
||
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
|
||
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
|
||
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
||
sudo apt-get update
|
||
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
||
|
||
# To be able to execute docker with the current user
|
||
sudo usermod -aG docker $USER
|
||
```
|
||
|
||
## Images installation
|
||
|
||
### Arista cEOS
|
||
|
||
To download and install the arista cEOS image, you need to be registered to [arista.com](https://www.arista.com/en/support/software-download).
|
||
Once you created an account, please logged in and down the cEOS docker images.
|
||
|
||
To add this new image to docker, please use the docker CLI command :
|
||
```bash
|
||
docker import cEOS-lab-4.30.3M.tar ceos:4.30.3M
|
||
```
|
||
|
||
### Cisco N9Kv
|
||
|
||
Cisco’s N9Kv is also available for free (again, locked behind an account registration).
|
||
Please, download the qcow2 image and move it to the vrnetlab/n9kv folder :
|
||
|
||
```bash
|
||
➜ n9kv git:(master) pwd
|
||
/opt/vrnetlab/n9kv
|
||
➜ n9kv git:(master) ls -l
|
||
total 1931856
|
||
drwxr-xr-x 2 root root 4096 8 oct. 13:44 docker
|
||
-rw-r--r-- 1 root root 508 8 oct. 13:44 Makefile
|
||
-rwxr--r-- 1 root root 1978204160 14 mai 2022 nxosv.10.2.3.qcow2
|
||
-rw-r--r-- 1 root root 585 8 oct. 13:44 README.md
|
||
```
|
||
|
||
Be sure to use the "n9kv" folder and not the "nxos" folder - the "nxos" folder is for the older titanium images. Once the image is copied here, trigger "make" to build the docker image for this
|
||
|
||
```bash
|
||
➜ n9kv git:(master) sudo make
|
||
for IMAGE in nxosv.10.2.3.qcow2; do \
|
||
echo "Making $IMAGE"; \
|
||
make IMAGE=$IMAGE docker-build; \
|
||
done
|
||
Making nxosv.10.2.3.qcow2
|
||
make[1] : on entre dans le répertoire « /opt/vrnetlab/n9kv »
|
||
rm -f docker/*.qcow2* docker/*.tgz* docker/*.vmdk* docker/*.iso
|
||
Building docker image using nxosv.10.2.3.qcow2 as vrnetlab/vr-n9kv:10.2.3
|
||
cp ../common/* docker/
|
||
make IMAGE=$IMAGE docker-build-image-copy
|
||
make[2] : on entre dans le répertoire « /opt/vrnetlab/n9kv »
|
||
cp nxosv.10.2.3.qcow2* docker/
|
||
make[2] : on quitte le répertoire « /opt/vrnetlab/n9kv »
|
||
(cd docker; docker build --build-arg http_proxy= --build-arg https_proxy= --build-arg IMAGE=nxosv.10.2.3.qcow2 -t vrnetlab/vr-n9kv:10.2.3 .)
|
||
[+] Building 96.9s (10/10)
|
||
FINISHED
|
||
docker:default
|
||
|
||
[...]
|
||
|
||
=> [internal] load build definition from Dockerfile
|
||
make[1] : on quitte le répertoire « /opt/vrnetlab/n9kv »
|
||
```
|
||
|
||
Now you should see images available to use :
|
||
```bash
|
||
➜ n9kv git:(master) sudo docker images
|
||
REPOSITORY TAG IMAGE ID CREATED SIZE
|
||
vrnetlab/vr-n9kv 9.3.9 75c3c348b49f 48 seconds ago 2.43GB
|
||
ceos 4.30.3M 63870e68ff8d 2 hours ago 1.95GB
|
||
```
|
||
|
||
## Sources
|
||
- [ContainerLab](https://containerlab.dev/install/)
|
||
- [vrnetlab](https://containerlab.dev/manual/vrnetlab/#vrnetlab)
|
||
- [BrianLinkLetter](https://www.brianlinkletter.com/2019/03/vrnetlab-emulate-networks-using-kvm-and-docker/)
|
||
- [Docker Engine for Debian](https://docs.docker.com/engine/install/debian/) |