임베디드 관련 카테고리/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를 활용해 이미지를 생성하고 패키지를 관리하는 방법을 익히실 수 있습니다. 모든 과정이 순서대로 정리되어 있으니, 차근차근 따라 하면서 개발 환경을 구축해 보세요. 😊