-
[Docker] 0. Docker 설치 (Ubuntu)지식저장소 2024. 6. 6. 00:29728x90
0. 이전 Docker 버전 삭제(Docker가 완전 처음이라면 Skip)
sudo apt remove docker docker-engine docker.io containerd runc
1. apt에 Docker 추가(apt install로 설치 가능)
sudo apt-get update sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg \ lsb-release curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo \ "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) 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
1.1) Docker 설치확인
sudo docker run hello-world
아래 이미지처럼 출력된다면 설치 완료
2) Image 파일 불러오기
<방법1> Clean Ubuntu 설치(Image 파일)
*완전 깨끗한 초기상태 우분투이며, ROS가 설치된 버전은 아래에서 확인
sudo docker run -dit ubuntu:latest #우분투 최신버전 설치 sudo docker run -dit ubuntu:20.04 #20.04 설치 sudo docker run -dit ubuntu:18.04 #18.04 설치
<방법2> 사용자 용도에 맞게 Image 불러오기
*작성자는 ROS2 Foxy 버전을 설치
아래 링크에서 사용자 용도에 맞게 찾아서 쓰면 된다.
https://hub.docker.com/r/althack/ros2/tags?name=foxy&ordering=&page=&page_size=
hub.docker.com
#foxy-cuda-gazebo-nvidia-2023-02-01 버전을 불러오기(작성자 사용 파일) sudo docker pull althack/ros2:foxy-cuda-gazebo-nvidia-2023-02-01
2-1) Image 파일 목록 확인
sudo docker images
이미지 파일 확인 2-2) 컨테이너 생성
sudo docker run --name <컨테이너 이름> <이미지 파일>
2-3)컨테이너 목록 확인
sudo docker ps -a
컨테이너 전체 목록 3) CONTAINER 생성
#GUI 연동을 사용할 경우 xhost +local:docker sudo docker run -it --gpus all -d -e DISPLAY=:0 -v /tmp/.X11-unix:/tmp/.X11-unix <이미지 파일 ID>
xhost 명령어 실행시 <Xhost란?>
X서버에 대한 접근을 실행되는 컨테이너에 부여하는 명령어이다.
X서버는 UNIX 및 UNIX-like 운영 체제에서 사용되는 그래픽 시스템의 핵심 요소이며,
이때문에 사용자가 그래픽 인터페이스를 활용 할 수 있는 것이다.<컴퓨터 재부팅시>
컴퓨터를 재부팅하고나면 xhost 권한 부여가 풀리기 때문에 재부팅시 매번 실행해야한다.
(귀찮다면 /.bashrc에 등록해서 사용해도 좋다!!)<해당 명령어 예시>
"sudo docker run -it --gpus all -d -e DISPLAY=:0 -v /tmp/.X11-unix:/tmp/.X11-unix bf3dc08bfed0"<명령어 옵션>
- -i : 컨테이너와 상호작용 할 수 있도록 표준입력(stdin)을 설정
- -t : 가상 터미널을 할당 (-i 옵션과 같이 사용하여 -it로 사용)
- -d : 컨테이너를 백그라운드로 실행(터미널을 점유하지 않고 컨테이너 실행 가능)
- -e : 컨테이너 내에 사용할 환경변수 설정(ex. -e DISPLAY=:0)
*DISPLAY를 환경변수를 설정하여 X11서버와 연결해 GUI 사용 활성 - -v : 호스트와 컨테이너 간의 디렉토리를 마운트
*로컬과 컨테이너 간 파일을 옮길 수 있으며, X11 서버 소켓을 공유하여 그래픽 애플리케이션 실행가능 - --name : 컨테이너 이름을 지정
- --rm : 컨테이너가 종료되면 해당 컨테이너 삭제
- --cpus : 컨테이너에 할당하는 cpu의 갯수 제한
- --gpus all : 모든 GPU 가동(all 대신 특정 갯수 입력 가)
- --memory : 컨테이너에 할당하는 메모리 제한
3-1) 컨테이너 실행
sudo docker exec -it <Container ID or Name> /bin/bash #오랜만에 접속하거나 exited 상태라면 sudo docker start <컨테이너 NAMES>
매번 실행할 때 "-it" 옵션은 고정!!
4) 컨테이너 접속 직후
#도커의 경우 이미 권한이 부여했기에 sudo 필요X sudo apt update #GUI설정 확인 sudo apt-get install x11-apps #실행 xeyes
xeyes를 실행하면 위 사진처럼 창이 하나 나온다.
여기서 만약 아래 오류 문구가 뜬다면,No protocol specified Error: Can't open display: :0 #해결방법 export DISPLAY=:1
여기서 기본적인 세팅과 GUI 연동까지 확인하였습니다.
728x90'지식저장소' 카테고리의 다른 글
[Ubuntu 오류] 우분투 설치 시 오류 (0) 2024.06.10 [Docker] 1. Docker GPU 인식 (Ubuntu) (0) 2024.06.07 [Ubuntu 세팅] Ubuntu 20.04 CUDA12.2 최신 세팅(24.05 기준 ) (1) 2024.05.23 [세팅 기록소] Casadi 빌드 (0) 2024.03.06 [C++] 코딩테스트 사용하는 STL (0) 2024.02.13