본문 바로가기
Network

[containerlab] AWS EC2(ubuntu)에 containerlab 설치하기 - 네트워크 실습 (1)

by chan10 2025. 9. 2.

ContainerLab은 리눅스 환경에서 컨테이너 기반의 네트워크 토폴로지를 손쉽게 구성하고 관리할 수 있는 툴로, 실제 장비와 유사한 환경을 제공합니다. 이번 포스팅에서는 EC2(ubuntu) 환경에 ContainerLab을 설치하고, 이를 활용해 네트워크 실습 환경을 준비하는 과정을 소개하려고 합니다.

 

[containerlab 공식 홈페이지] https://containerlab.dev/

 

containerlab을 사용하기에 앞서 실습에 사용할 cEOS-lab 이미지가 필요합니다. 이미지는 Arista 지원 포털에서 다운로드할 수 있습니다. (회원가입 후 무료 다운로드) https://www.arista.com/en/support/software-download

 

이미지는 구동 환경 아키텍쳐에 따라 다운로드 할 수 있습니다.

  • `cEOS-lab-4.34.2F.tar.xz`: Intel/AMD CPU 기반 환경 → 일반적인 Linux 환경
  • `cEOSarm-lab-4.34.2F.tar.xz`: Arm 기반 CPU 환경 → Arm 기반 Linux, Apple M 시리즈 VM

 

containerlab 설치하기

containerlab은 docker를 사용하여 컨테이너화된 네트워크 운영 체제를 실행합니다. containerlab을 구동하기 위해 VMware Workstation, VirtualBox 등과 같이 하이퍼바이저를 실행하는 PC의 VM 환경이나 클라우드 기반 VM이나 컨테이너를 사용할 수 있습니다.

VM에 할당되는 리소스는 랩을 실행하는 장비 유형과 컨테이너 수에 따라 달라질 수 있습니다. 8개 이상의 장비로 랩을 실습할 계획이라면 16GB 이상의 메모리를 갖춘 VM을 고려해야 합니다.

 

`containerlab`을 설치하기 전 실습에 필요한 관련 도구를 설치합니다.

sudo apt update && sudo apt upgrade -y

sudo apt install openssh-server curl wget git vim -y && sudo systemctl enable --now ssh

 

관련 도구 설치가 완료되었다면 자동화된 스크립트를 이용해 `containerlab`을 설치합니다.

curl -sL <https://containerlab.dev/setup> | sudo -E bash -s "all"

 

`containerlab version` 명령어를 이용해 정상 설치 여부를 확인합니다.

ubuntu@ip-172-31-7-238:~$ containerlab version
  ____ ___  _   _ _____  _    ___ _   _ _____ ____  _       _
 / ___/ _ \\| \\ | |_   _|/ \\  |_ _| \\ | | ____|  _ \\| | __ _| |__
| |  | | | |  \\| | | | / _ \\  | ||  \\| |  _| | |_) | |/ _` | '_ \\
| |__| |_| | |\\  | | |/ ___ \\ | || |\\  | |___|  _ <| | (_| | |_) |
 \\____\\___/|_| \\_| |_/_/   \\_\\___|_| \\_|_____|_| \\_\\_|\\__,_|_.__/

    version: 0.69.3
     commit: 49ee599b
       date: 2025-08-06T21:02:24Z
     source: <https://github.com/srl-labs/containerlab>
 rel. notes: <https://containerlab.dev/rn/0.69/#0693>

 

container 이미지 업로드

이미지 업로드를 위해 pc에서 ec2를 sftp로 접속합니다. MacOS 환경의 경우 터미널에서 sftp 명령어로 접속할 수 있습니다. `-i` 옵션을 사용하면 접속에 필요한 키를 지정할 수 있습니다.

sftp -i "aws-ec2-key.pem" ubuntu@ec2-1-1-1-1.ap-northeast-2.compute.amazonaws.com

 

sftp 접속 후 put 명령어로 pc에 있는 이미지 파일을 ec2로 업로드 할 수 있습니다.

`put [Local Path] [Remote Path]`

[EC2]
sftp> put /Users/chan/Downloads/cEOS-lab-4.34.2F.tar.xz /home/ubuntu/labs/
Uploading /Users/chan/Downloads/cEOS-lab-4.34.2F.tar.xz to /home/ubuntu/labs/cEOS-lab-4.34.2F.tar.xz
cEOS-lab-4.34.2F.tar.xz                                                100%  526MB  11.2MB/s   00:46

 

업로드 받은 이미지 파일을 사용하기 위해 `docker import`를 수행합니다.

`docker import [image file name] [new image file name]`

[EC2:/home/ubuntu/labs]
$ sudo docker import cEOS-lab-4.34.2F.tar.xz ceos:4.34.2F
sha256:8b56747ef2fe1b1d9bad4acecb76c03fd911a36c7172869da07639de5f57be92

$ sudo docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
ceos         4.34.2F   8b56747ef2fe   44 seconds ago   2.18GB

 

VSCode로 EC2 연결하기

vscode를 이용해 ec2에 접속 후 containerlab topology 코드를 작성하려고 합니다.

vscode 확장팩에서 Remote SSH를 설치합니다.

설치 후 vscode 좌측 하단의 `><` 모양 아이콘을 클릭합니다.

`Connect to Host` → `Add New SSH Host` → `접속 정보 입력` → `config 파일 선택`하여 ssh 접속 정보를 등록합니다.

 

다시 `Connect to Host` 메뉴 진입 시 등록한 host를 클릭하면 vscode를 통한 ec2 원격 접속을 수행하게 됩니다.

만약 ssh 연결 시 에러가 발생한다면 ssh key 경로가 제대로 설정되어 있는지 체크해 볼 필요가 있습니다. 특정 key 파일을 사용할 경우 `IdentityFile` 경로에 key 경로를 설정하면 됩니다.

[~/.ssh/config]
Host ec2-1-1-1-1.ap-northeast-2.compute.amazonaws.com
  HostName ec2-1-1-1-1.ap-northeast-2.compute.amazonaws.com
  IdentityFile ~/.ssh/aws-ec2-key.pem
  User ubuntu
[Host 정보] (참고용)
ssh -i "aws-ec2-key.pem" ubuntu@ec2-1-1-1-1.ap-northeast-2.compute.amazonaws.com

 

연결이 완료되면 vscode 하단에 있는 터미널 창에서 실습을 위한 폴더를 생성 후 오픈합니다.

`mkdir containerlab` → `Open Folder`