소개
이번 챌린지에서는 Docker 이미지를 다루어 봅니다. Docker 컨테이너 이미지는 애플리케이션 실행에 필요한 코드, 런타임, 시스템 도구, 시스템 라이브러리 및 설정 등 모든 것을 포함하는 가볍고 독립적이며 실행 가능한 소프트웨어 패키지입니다.
Docker 이미지 변경
Docker 이미지는 이미지 이름과 이미지 태그로 구성되며, 이미지 이름은 저장소 주소와 이미지 식별자를 포함합니다. 이 섹션에서는 다른 사람이 만든 Docker 이미지를 가져와 자신의 저장소에 푸시하는 방법을 실습합니다.
목표
dockerhub에 있는 공개 ubuntu 이미지를 자신의 개인 저장소로 푸시하는 것이 목표입니다.
결과 예시
챌린지를 완료하면 다음과 같은 작업을 수행할 수 있어야 합니다:
dockerhub에 가입하고 로그인합니다.
docker hub에서ubuntu:22.10이미지를 로컬 서버로 다운로드합니다.
ubuntu:22.10이미지의 태그를 자신의 저장소 주소로 변경합니다.
docker hub에 로그인합니다.
이미지를 원격 저장소로 푸시합니다.

요구 사항
이 챌린지를 완료하려면 다음이 필요합니다:
- Docker 엔진 설치
- Docker 명령줄 인터페이스에 대한 기본 지식
- 업데이트가 필요한 기존 Docker 이미지
웹 이미지 빌드
일반적으로 웹사이트와 같은 정적 애플리케이션을 실행할 때는 nginx를 사용합니다. 이 섹션에서는 나만의 웹 이미지를 빌드해 봅니다.
목표
Docker 컨테이너 이미지를 생성하고 간단한 웹 애플리케이션을 패키징한 다음, 해당 이미지를 사용하여 컨테이너를 시작하고 정상적으로 접속할 수 있도록 만드는 것이 목표입니다.
결과 예시
챌린지를 완료하면 다음과 같은 작업을 수행할 수 있어야 합니다:
/home/labex/Code디렉토리에hello labex라는 내용이 담긴index.html파일을 생성합니다.
다음 내용으로
Dockerfile을 생성합니다.
your_dockerhub_id/web:1.1.0형식으로 웹 이미지를 빌드합니다.
생성된 웹 이미지를
dockerhub에 푸시합니다.
your_dockerhub_id/web:1.1.0이미지를 사용하여web이라는 이름의 컨테이너를 시작하고, 호스트의 포트80을 매핑합니다.
curl명령어를 사용하여http://127.0.0.1에 접속하고 결과가hello labex인지 확인합니다.
요구 사항
이 챌린지를 완료하려면 다음이 필요합니다:
Dockerfile을 사용한 빌드- 베이스 이미지를
Nginx:latest로 지정 Dockerfile에서 EXPOSE 명령어를 사용하여 포트80노출- 빌드 완료 후 컨테이너가 정상적으로 실행되고 HTTP 요청에 응답하는지 확인
멀티 스테이지 이미지 빌드
컨테이너 이미지를 생성하는 과정은 보통 두 단계로 나뉩니다:
- 애플리케이션 빌드 컴파일.
- 애플리케이션 이미지 생성.
이 섹션에서는 이 두 단계를 하나의 Dockerfile 로 결합하여 멀티 스테이지 빌드를 수행합니다.
이 챌린지를 완료하기 위해 https://github.com/joker-bai/go-hello-world.git에 Hello World 프로젝트를 준비해 두었습니다.
목표
멀티 스테이지 빌드를 사용하여 컨테이너 이미지를 만들고, 해당 이미지를 사용하여 컨테이너를 시작하고 정상적으로 접속할 수 있도록 만드는 것이 목표입니다.
결과 예시
챌린지를 완료하면 다음과 같은 작업을 수행할 수 있어야 합니다:
/home/labex/Code디렉토리에hello-world디렉토리를 생성합니다.
이 디렉토리에 다음 내용으로
Dockerfile을 생성합니다.
your_dockerhub_id/go-hello-world:1.1.0형식으로 Docker 이미지를 빌드합니다.
이미지를 docker hub 에 푸시합니다.

go-hello-world라는 이름의 컨테이너를 시작하고 포트8080을 노출합니다.
http://127.0.0.1:8080에 접속하여 정상 작동하는지 확인합니다.
요구 사항
이 챌린지를 완료하려면 다음이 필요합니다:
Dockerfile을 사용한 빌드- 빌드 완료 후 컨테이너가 정상적으로 실행되고 HTTP 요청에 응답하는지 확인
요약
이번 챌린지의 모든 과정을 완료하신 것을 축하드립니다! 이제 애플리케이션 이미지를 자유롭게 생성하고 관리할 수 있게 되었습니다.



