Ubuntu 20.04 Focal 버전을 사용합니다
주변 지인에게 물어보면 도커를 설치할 때는 공식 문서를 참고할 것을 적극적으로 권장하신다
ㄴ 이유 : 도커 공식문서 참 정리 잘해놔서
Docker Official Document
https://docs.docker.com/engine/install/ubuntu/
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://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 |
---|