임베디드 관련 카테고리/Ubuntu

WSL(Ubuntu)에서 Docker 이미지 생성 및 패키지 관리 가이드

CBJH 2024. 10. 21. 09:49
728x90
반응형

 

1단계: 도커(Docker) 설치 및 이미지 생성

1.1 도커 설치 여부 확인

우선 도커가 이미 설치되어 있는지 확인합니다.

docker --version
  • 위 명령어를 실행했을 때 버전이 출력되면 도커가 설치된 상태입니다.
  • 만약 command not found가 출력된다면 도커를 설치해야 합니다.

1.2 도커 설치하기

아래 명령어로 도커를 설치합니다.

sudo apt update && sudo apt install docker.io
  • apt는 Advanced Packaging Tool의 약자이며 패키지 관리 도구입니다.
  • update는 패키지 목록을 갱신하고, install은 지정한 패키지를 설치합니다.

1.3 Dockerfile 생성

1. WSL의 원하는 경로로 이동합니다.

cd ~/mydockerapp

 

2. vi 편집기를 이용해 Dockerfile을 생성합니다.

vi Dockerfile

 

3. 아래와 같은 내용을 Dockerfile에 입력합니다.

FROM ubuntu:20.04
RUN apt update && apt install -y python3 python3-pip sudo git vim
WORKDIR /app
  • FROM ubuntu:20.04: 도커의 기본 이미지로 Ubuntu 20.04 버전을 사용합니다.
  • RUN apt update && apt install -y ...: 필요한 패키지를 설치합니다.
  • WORKDIR /app: 컨테이너의 작업 디렉토리를 /app으로 설정합니다.

1.4 현재 사용자(user_id)를 docker 그룹에 추가합니다.

sudo usermod -aG docker $USER
  • sudo 명령어 없이 docker 명령어를 실행할 수 있다.

 

1.5 도커 이미지 생성

이제 작성한 Dockerfile을 기반으로 이미지를 생성합니다.

docker build -t myapp:latest .
  • -t myapp:latest: 이미지에 이름을 부여합니다. (myapp이라는 이름과 latest 태그)
  • .: 현재 디렉토리를 Dockerfile의 빌드 소스로 사용합니다.

 

2단계: 도커 설정 및 배포

 

2.1 도커 서비스 실행 확인

WSL에서 도커가 실행 중인지 확인합니다. 만약 실행 중이 아니라면 아래 명령어로 시작합니다.

sudo systemctl start docker
  • systemctl은 시스템 서비스의 상태를 제어하는 도구입니다.

2.2 생성된 도커 이미지 확인

이미지 목록을 확인해 방금 생성한 이미지가 있는지 확인합니다.

docker images

3단계: 도커 컨테이너 실행

3.1 컨테이너 실행

아래 명령어로 생성한 이미지를 사용해 컨테이너를 실행합니다.

docker run -d -p 5000:5000 myapp:latest
  • -d: 백그라운드에서 실행합니다.
  • -p 5000:5000: 호스트와 컨테이너의 5000번 포트를 연결합니다.
  • 백그라운드 모드로 실행한다. 인터렉티브 모드로 실행하기 위해선 4단계 1번의 exec 명령어를 사용해서 접속한다.

 

3.2 인터렉티브 모드로 컨테이너 실행

아래 명령어로 생성한 이미지를 사용해 컨테이너를 실행합니다.

docker run -it myapp:lasted /bin/bash
  • 인터렉티브 모드로 실행한다.

 

3.2 컨테이너 목록 확인

현재 실행 중인 컨테이너 목록을 확인합니다.

docker ps
  • ps는 process status의 약자입니다. 현재 실행 중인 프로세스를 확인합니다.
  • Container ID를 확인 후 복사합니다.

 

4단계: 깃허브(GitHub)에서 코드 다운로드

 

1. 컨테이너에 접속하여 명령을 실행합니다.

docker exec -it 컨테이너ID /bin/bash
  • exec: 컨테이너 내에서 명령어를 실행합니다.
  • -it: 인터랙티브 모드로 셸에 접속합니다.
    • 인터렉티브 모드로 셸에 접속하지 않고 Dockfile에서 깃허브 코드를 다운받고 실행하는 스크립트를 짤수도 있다.
    • 이번 예제는 Dockfile을 간단히 작성하고 인터렉티브 모드로 가상환경에서 종속성 관련 테스트를 진행하므로 인터렉티브 모드를 실행한다.

2. 인터렉티브 모드 내에서 깃허브에 저장된 프로젝트를 클론합니다.

git clone https://github.com/username/repository.git
cd repository
  • git clone: 깃허브 저장소를 복제합니다.
  • cd: 저장소 디렉토리로 이동합니다.

5단계: 코드 정상 작동 확인 및 로그 확인

5.1 코드 실행

컨테이너 내에서 Python 코드를 실행합니다.

python3 app.py
  • python3 app.py: app.py 파일을 실행합니다.
  • 깃허브 repositery에 app.py 파이썬 코드가 있다는 설정이다.

5.2 컨테이너 로그 확인

컨테이너 실행 로그를 확인합니다.

docker logs 컨테이너ID
  • logs: 컨테이너의 로그를 출력합니다.

마무리 및 추가 팁

  • 컨테이너 안에서 밖으로 나가려면 exit 명령어를 입력하면 된다.
    • 'docker exec -it 컨테이너ID /bin/bash' 명령어로 다시 컨테이너로 들어갈 수 있다.
  • 만약 컨테이너의 실행을 중지하거나 삭제하고 싶다면 아래 명령어를 사용합니다.
    • 컨테이너 중지: docker stop 컨테이너ID
    • 컨테이너 삭제: docker rm 컨테이너ID
  • 도커 환경을 재설정하고 이미지를 삭제하려면 다음 명령어를 사용할 수 있습니다.
    • 이미지 삭제: docker rmi 이미지ID
    • 모든 컨테이너 삭제: docker container prune

이제 이 가이드를 통해 WSL(Ubuntu) 환경에서 Docker를 활용해 이미지를 생성하고 패키지를 관리하는 방법을 익히실 수 있습니다. 모든 과정이 순서대로 정리되어 있으니, 차근차근 따라 하면서 개발 환경을 구축해 보세요. 😊