본문 바로가기
Linux 💻/docker 🐳

우분투에 도커 설치하기

by 우직한 사람 2024. 3. 12.
반응형

Ubuntu 20.04 Focal 버전을 사용합니다

 

 

주변 지인에게 물어보면 도커를 설치할 때는 공식 문서를 참고할 것을 적극적으로 권장하신다

ㄴ 이유 : 도커 공식문서 참 정리 잘해놔서

 

Docker Official Document

https://docs.docker.com/engine/install/ubuntu/

 

Install Docker Engine on Ubuntu

Jumpstart your client-side server applications with Docker Engine on Ubuntu. This guide details prerequisites and multiple methods to install Docker Engine on Ubuntu.

docs.docker.com

 

1. Set up Docker's apt repository.

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

 

2. Install the Docker packages.

 sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

 

3. Verify that the Docker Engine installation is successful by running the hello-world image.

sudo docker run hello-world

 

 

도커 설치가 완료되었다

마지막 단계의 $ sudo docker run hello-world는 이미지를 생성하는 코드이다

run 옵션을 이용하여 이미지를 생성한다

 

아래와 같이 

$ sudo docker images 명령어를 이용하면 설치된 도커 이미지를 확인할 수 있음

 

 

도커를 사용하기 전에 도커 이미지와 도커 컨테이너 개념에대해서 알아야한다

본 포스팅에서는 간단하게 설명하자면 다음과 같다

 

 

로컬에 설치한 우분투는 20.04이고 18.04, 16.04 버전의 우분투에서 테스트 해야할 상황이 있을 때

듀얼, 트리플 부팅이 아닌 도커를 활용하여 또다른 독립적인 OS 환경을 만드는 것이다

 

가상환경 단어만 보면 패키지를 독립적으로 관리해주는 Anaconda를 연상할 수 있는데

도커는 그 보다 더 Low 레벨에서 OS 자체를 가상으로 만들어 독립적으로 사용할 수 있도록 한다

 

이 때 사용되는 개념이 도커 이미지도커 컨테이너인데

로컬 우분투 버전은 20.04 이고 우분투 18.04를 사용하고자 한다면

우분투 18.04 도커 이미지를 설치하고

우분터 18.04 도커 이미지를 기반으로 도커 컨테이너를 설치한다 <- 처음 생성한 도커 컨테이너는 컨테이너 1이라고 해보자

 

지금 그러면 18.04 이미지와 도커컨테이너 1이 생성됐다 

18.04 이미지를 활용하여 도커컨테이너 1, 2, 3, 4 --- 계속해서 만들 수 있다 (메모리 가용 범위 내에서)

 

이번에는 우분투 16.04 환경이 필요하다고 가정해보자

그러면 또 16.06 도커 이미지를 설치하고

우분터 16.04 도커 이미지를 기반으로 도커 컨테이너를 설치하면 된다!

 

그러면 로컬 우분투 20.04 위에 도커를 활용하여 우분투 18.04, 16.04 모두 사용할 수 있게 되는 것이다

가상환경은 도커 이미지가 아닌 도커 컨테이너 안에서 실행된다!

 

다시 본론으로 돌아와서...

 

Ubuntu 도커 이미지 설치하기

필자는 ROS2 humble을 사용해야하기 때문에

Ubuntu + ROS2 humble이 설치된 도커 이미지를 설치하겠다

sudo docker pull osrf/ros:humble-desktop

 

 

도커 컨테이너 설치

필자는 --gpus all 옵션으로 컨테이너에 그래픽 드라이버를 할당할 계획이다 먼저 아래 단계를 진행하자

cf) 도커 컨테이너에 그래픽 드라이버 할당 방법

# 필요한 패키지 설치
sudo apt-get install -y nvidia-docker2

# Docker 재시작
sudo systemctl restart docker

 

도커 이미지 기반으로 도커 컨테이너 설치하기

sudo docker run -it --name <컨테이너 이름> --gpus all -d --privileged -e DISPLAY=:0 -v /tmp/.X11-unix:/tmp/.X11-unix -v=/dev:/dev <이미지 이름>

//예시
sudo docker run -it --name rdsim --gpus all -d --privileged -e DISPLAY=:0 -v /tmp/.X11-unix:/tmp/.X11-unix -v=/dev:/dev osrf/ros:humble-desktop

 

 

결과

 

정상적으로 컨테이너가 실행된 것을 알 수 있다

 

컨테이너 접속하기

# 도커 컨테이너 확인
docker ps -a

# 컨테이너 접속하기
docker exec -it <컨테이너이름> bash

 

결과

그래픽 카드도 잘 잡히는 것을 알 수 있다

 

 

docker 권한 설정하기

sudo를 계속해서 입력하고 싶지 않다면 아래 방법을 사용하여 docker 실행 권한을 부여해주면 된다

sudo usermod -aG docker $USER
newgrp docker

# 테스트 sudo docker ps -a 가 아닌 docker ps -a 입력
docker ps -a

 

 

간단한 도커 명령어 모음

  • docker ps
    : 실행중인 컨테이너 목록 확인
  • docker ps -a
    : 전체 컨테이너 목록 확인
  • docker container ls -a
    : 전체 컨테이너 목록 확인
  • docker start 컨테이너ID
    : 컨테이너 시작
  • docker attach 컨테이너ID
    : 컨테이너 접속
  • docker stop 컨테이너ID
    : 컨테이너 멈춤
  • docker run 컨테이너ID
    : 컨테이너 생성 및 시작
  • docker run -it 컨테이너ID
    : 컨테이너 생성 및 시작 및 접속
  • docker rm 컨테이너ID
    : 컨테이너 삭제
  • docker exec -it 컨테이너ID /bin/bash
    : 실행되고 있던 컨테이너 접속
  • exit
    : 컨테이너 빠져나오기


<Reference>

https://docs.ros.org/en/humble/How-To-Guides/Run-2-nodes-in-single-or-separate-docker-containers.html

https://ykarma1996.tistory.com/92

https://velog.io/@agzg/docker%EB%8F%84%EC%BB%A4-%EB%AA%85%EB%A0%B9%EC%96%B4-%EB%AA%A8%EC%9D%8C

 

 

읽어주셔서 감사합니다 :)

반응형

'Linux 💻 > docker 🐳' 카테고리의 다른 글

Docker 컨테이너로 파일 가져오기  (0) 2023.07.09