Tech Blog
[MLOps] 2. Docker 실습 환경 셋팅 (VirtualBox, Ubuntu) 본문
2023. 02. 21 패스트캠퍼스 강의 정리
1️⃣ Why Docker ?
도커에서 제공하는 패키징 방식을 통해서 하나의 어플리케이션이 dependent 한 모든 것들을 하나로 묶은 도커 이미지로 빌드함으로써, 어떤 환경에서든지 동일하게 실행시킬 수 있게 됩니다. 예를 들어, 머신러닝 코드가 도커라이즈 되어있다면, 어떤 환경에서 개발했든지 간에 그 정보와 관련된 것들이 도커 이미지에 저장 되어있기 때문에 어디서든지 동일하게 실행시킬 수 있고, 동일한 결과를 얻을 수 있습니다. 본인이 로컬에서 작성한 머신러닝 코드를 다른 환경의 로컬에서 실행시킨다면, 버전 충돌이 일어나는 것은 흔한 일입니다. 도커를 사용함으로써, 더이상 환경에 구애받지 않고 버전을 새로 맞출 필요 없이 코드 실행이 가능해진다는 장점이 있습니다.
2️⃣ Virtual Box & Ubuntu
도커는 리눅스 컨테이너 기반의 기술이기 때문에 윈도우나, 맥 환경에서는 가상머신 위에서 구동이 되어야합니다. 가상 머신을 포함한 도커 데스크탑 설치를 os 별로 다르게 설치할 수 있지만, 운영체제와 상관 없이 동일한 환경에서 실습할 수 있도록 Virtual Box와 Ubuntu 를 사용하여 도커 실습을 진행합니다. 따라서 이 두가지를 다운로드 받아야 하며, 다운로드 링크는 다음과 같습니다.
3️⃣ 가상머신에서 우분투 환경 셋팅 하기
먼저 다운받은 Virtual Box를 실행합니다.
1. 가상 머신 생성
1) [새로만들기] 클릭 - 종류: Linux, 버전: Ubuntu 로 설정하기
2) 가상 머신 메모리 크기 설정
메모리 크기는 강의에서 노트북 상황에 맞게 조절하라고 했지만 그냥 강사님 따라서 위 사진 처럼 최대로 했는데, 괜히 그랬다가 크롬 다운되고 컴퓨터가 멈춰버려서 정신차리고 추천 메모리 크기 2048MB로 다시 생성했습니다. 이 점을 참고하여 생성하시길 바랍니다.
저는 여기 부터는 기본적으로 체크되어있는 대로 넘어갔고, 필요한 가상 머신에 맞게 설정하면 좋을 것 같습니다.
3) 하드디스크
4) 하드 디스크 파일 종류
5) 가상 하드 디스크 동적할당, 정적할당
6) 하드 디스크 크기
여기까지 가상 머신을 생성하였습니다. 이제 상단의 [시작] 버튼을 눌러 가상 머신을 실행해보겠습니다.
2. 가상 머신 실행
1) [시작] 버튼 눌러 실행하기
2) 파일 모양 클릭해서 다운 받은 우분투 iso 파일 찾기
3) 넣은 iso 파일을 선택
그럼 준비 완 ! 이후에 아래와 같은 우분투 설치가 자동으로 진행됩니다.
3. 우분투 설치
1) [한국어] 클릭 - [Ubuntu] 설치 클릭
이하 생략하고, 모두 기본 설정되어있는 것으로 선택해주었습니다.
2) 지역 설정
설치 후에, 타임을 맞추기 위해 지역 선택하는 화면이 나옵니다. Seoul 그대로 계속 진행합니다.
3) 당신은 누구십니까? 설정
사용할 이름과 암호를 설정해줍니다.
4) [지금 다시 시작]: 설치 완료의 의미
오랜시간 동안 설치가 진행되고, 완료되면 재부팅 하라는 팝업창이 뜹니다. [지금 다시 시작] 버튼을 클릭하여 가상머신을 재부팅해줍니다.
5) 재부팅 후 root password 설정
Ctrl + Alt + T 을 사용하여 터미널을 열어줍니다. 그 다음 sudo passwd 명령어를 작성하여 root password를 설정해줍니다.
이제 Docker를 사용하기 위한 모든 가상머신과 우분투 셋팅이 완료되었습니다. 이어서 생성한 가상머신 우분투 환경에서 Docker 설치까지 진행하도록 하겠습니다.
4️⃣ Docker 설치하기
여러가지 install 방법 중에 Install using the repository 방법으로 설치를 진행합니다.
⭐공식 문서 링크 : 강의와 공식문서의 명령어가 달라서 공식문서에 나와있는대로 작성하였습니다. 항상 공식문서를 참고하여 설치하는 것이 안전할 것 같습니다.
1) 패키지 매니저 (apt) 업데이트
sudo apt-get update
2) docker의 prerequisite package 설치
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
3) Docker의 GPG key를 추가
sudo mkdir -m 0755 -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
4) stable 버전의 repository를 바라보도록 설정
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
5) Install Docker Engine
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Docker 엔진의 가장 최신 버전을 설치하는 명령어입니다.
6) 정상 설치 확인
sudo docker run hello-world
docker container를 실행시키는 명령어이고, 정상적으로 설치되었는지 확인할 수 있습니다.
위와 같이 "해당 컴퓨터에는 hello-world 라는 도커 이미지가 없다" 라는 오류가 나면 정상적으로 설치가 완료된 것입니다.
5️⃣ Docker 권한 설정
이제 막 설치된 Docker에서는 모든 도커 관련된 작업이 root 사용자에게만 권한이 존재합니다. 따라서 docker 관련 명령을 수행하기 위해서는 sudo를 앞에 붙여주어야만 가능합니다.
이렇게 root 계정이 아닌 사용자가 docker 관련 명령어를 실행하면 permission denined 오류가 뜨게됩니다.
▪️ root 계정이 아닌 host의 기본 유저에게 권한 주기
이 작업은 새로 띄운 터미널에서 수행하도록 합니다.
sudo usermod -a -G docker $USER
sudo service docker restart
위와 같은 명령어를 치고, vm을 다시 시작합니다.
그러면, 전과 같은 명령어를 실행했을 때 sudo를 붙이지 않아도 정상적으로 작동하는 것을 확인할 수 있습니다.
이상으로 Docker 실습을 위한 가상머신 우분투 환경에서의 도커 셋팅을 마쳤습니다. 다음 글에서는 본격적으로 Docker를 실습해보는 시간을 가지도록 하겠습니다.
* 본 포스트는 패스트캠퍼스의 강의를 정리한 글 입니다.
'MLOps > 개념 정리' 카테고리의 다른 글
[MLOps] 6. VM에서 minikube 사용하기 (0) | 2023.02.25 |
---|---|
[MLOps] 5. 쿠버네티스의 기본 개념과 YAML (0) | 2023.02.25 |
[MLOps] 4. Docker Image와 Dockerfile (0) | 2023.02.23 |
[MLOps] 3. Docker의 기본적인 명령어 정리 (0) | 2023.02.22 |
[MLOps] 1. MLOps와 컨테이너의 개념 (feat, 도커/쿠버네티스) (0) | 2023.02.20 |