첫 번째 Docker 실습에 오신 것을 환영합니다! 이번 실습에서는 애플리케이션을 개발, 배포 및 실행하기 위한 강력한 플랫폼인 Docker 에 대해 배우며 컨테이너화의 세계에 첫발을 내딛게 됩니다.
Docker 를 사용하면 애플리케이션과 그에 필요한 모든 의존성을 '컨테이너'라고 불리는 표준화된 단위로 패키징할 수 있습니다. 이를 통해 서로 다른 환경에서도 애플리케이션을 일관되게 배포하고 실행하는 것이 훨씬 쉬워집니다.
Docker 를 배우는 가장 좋은 방법은 직접 해보는 것입니다. 단순히 눈으로 읽기만 하지 말고, LabEx 환경에서 각 명령어를 직접 실행해 보세요! 이곳은 마음껏 실험하고 배우기에 최적의 장소입니다.
이번 실습에서 배울 내용은 다음과 같습니다:
Docker 의 기본 개념 이해하기
첫 번째 Docker 컨테이너 실행하기
필수 Docker 명령어 사용하기
Docker Hub 살펴보기
팁: 이 실습은 체계적인 지식 시스템인 Docker 스킬 트리의 일부입니다. 각 단계를 마칠 때마다 시스템이 사용자의 작업을 확인하고, 올바르게 수행했을 경우 스킬 포인트를 부여합니다 💡. 실습을 마친 후 Docker 스킬 트리를 방문하여 쌓인 포인트를 확인해 보세요.
그럼 Docker 여정을 시작해 봅시다! 아래의 Continue 버튼을 클릭하거나 왼쪽의 VM 아이콘을 눌러 실습을 시작하세요.
이 실습은 단계별 안내를 제공하는 가이드형 실습입니다. 안내에 따라 각 단계를 완료하며 실무 경험을 쌓으세요. 통계에 따르면 이 실습은 중급 난이도이며, 수료율은 71%입니다. 학습자들로부터 99%의 긍정적인 평가를 받았습니다.
Docker 개념 이해하기
Docker 를 직접 사용해 보기 전에 몇 가지 핵심 개념을 익혀 봅시다. 처음에는 복잡해 보일 수 있지만, 곧 실제 작동 모습을 보게 될 테니 걱정하지 마세요!
컨테이너 (Container): 소프트웨어를 실행하는 데 필요한 모든 것을 포함하는 가볍고 독립적이며 실행 가능한 패키지입니다.
이미지 (Image): 컨테이너를 만들기 위한 템플릿이나 설계도라고 생각하면 됩니다. 컨테이너를 생성하는 데 필요한 모든 지침이 들어 있습니다.
Docker Hub: Docker 이미지를 위한 GitHub 와 같은 곳입니다. 여기서 컨테이너 이미지를 찾고 공유할 수 있습니다.
Docker Engine: 사용자의 컴퓨터에서 컨테이너를 실행하고 관리하는 핵심 기술입니다.
이 개념들이 어떻게 함께 작동하는지 시각적으로 보여주는 간단한 다이어그램입니다:
graph TD
A[Docker Engine] -->|runs| B(Containers)
C[Images] -->|create| B
D[Docker Hub] -->|stores| C
A -->|pulls| C
A -->|pushes| D
이 다이어그램은 다음을 나타냅니다:
Docker Engine 은 컨테이너를 실행합니다.
이미지는 컨테이너를 생성하는 데 사용됩니다.
Docker Hub 는 이미지를 저장합니다.
Docker Engine 은 Docker Hub 에서 이미지를 내려받거나 (pull), Docker Hub 로 이미지를 업로드 (push) 할 수 있습니다.
이러한 관계를 이해하면 앞으로 Docker 가 어떻게 작동하는지 파악하는 데 큰 도움이 됩니다. 아래의 Continue를 클릭하여 다음 단계로 넘어가세요!
첫 번째 컨테이너 실행하기
기본 개념을 이해했으니, 이제 hello-world 이미지를 사용하여 첫 번째 Docker 컨테이너를 실행해 봅시다. 이 간단한 이미지는 Docker 설치가 올바르게 되었는지 확인하고 Docker 의 기초를 소개하기 위해 설계되었습니다.
컨테이너를 실행하려면 터미널에 다음 명령어를 입력하세요:
docker run hello-world
팁: 코드 블록 오른쪽 하단의 "Explain Code"를 클릭하면 AI 비서 Labby 와 대화하며 설명을 들을 수 있습니다. 대화가 끝나면 "Continue"를 클릭하여 실습으로 돌아오세요.
이 명령어가 어떤 역할을 하는지 분석해 보겠습니다:
docker: Docker Engine 과 상호작용하기 위한 기본 명령어입니다.
run: 새로운 컨테이너를 생성하고 시작하라는 하위 명령어입니다.
hello-world: 실행하려는 이미지의 이름입니다.
이 명령어를 실행하면 보이지 않는 곳에서 다음과 같은 일들이 일어납니다:
Docker 가 로컬 환경에 hello-world 이미지가 있는지 확인합니다.
없다면 Docker Hub 에서 자동으로 이미지를 다운로드 (pull) 합니다.
Docker 가 이 이미지를 기반으로 새 컨테이너를 생성합니다.
컨테이너가 실행되어 메시지를 출력한 후 종료됩니다.
다음과 유사한 출력 결과가 나타날 것입니다:
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
이 출력 내용은 Docker 가 hello-world 컨테이너를 실행하기 위해 거친 과정을 설명합니다. 요약하자면 다음과 같습니다:
Docker 클라이언트 (방금 입력한 명령어) 가 Docker 데몬 (컴퓨터에서 Docker 를 관리하는 백그라운드 서비스) 에 접속했습니다.
데몬이 로컬에 이미지가 없음을 확인하고 Docker Hub 에서 "hello-world" 이미지를 가져왔습니다.
데몬이 해당 이미지로 새 컨테이너를 만들고 실행했습니다.
컨테이너의 출력 결과가 터미널로 다시 전달되었습니다.
아직 모든 내용을 완벽히 이해하지 못해도 괜찮습니다. 실습을 진행하면서 이러한 개념들은 점점 더 명확해질 것입니다.
Continue를 클릭하여 다음 단계로 진행하세요.
Docker 이미지 이해하기
첫 번째 컨테이너를 실행해 보았으니, 이제 Docker 이미지에 대해 더 자세히 알아보겠습니다. 이미지는 컨테이너를 만들기 위한 설계도나 템플릿과 같으며, 컨테이너 생성에 필요한 모든 지침을 담고 있습니다.
현재 로컬 시스템에 있는 이미지 목록을 확인하려면 다음 명령어를 사용하세요:
docker images
다음과 같은 출력이 나타날 것입니다:
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest feb5d9fea6a5 2 weeks ago 13.3kB
각 열이 의미하는 바는 다음과 같습니다:
REPOSITORY: 이미지의 이름입니다. 여기서는 "hello-world"입니다.
TAG: 이미지의 버전입니다. 별도로 지정하지 않으면 기본값으로 "latest"가 사용됩니다.
IMAGE ID: 이미지를 식별하는 고유 ID 입니다. 특정 이미지를 지칭할 때 유용합니다.
CREATED: 이미지가 생성된 시점입니다. 최신 버전인지 확인하는 데 도움이 됩니다.
SIZE: 디스크에서의 이미지 크기입니다. Docker 이미지는 매우 가볍게 설계되었기 때문에 hello-world 이미지는 13.3kB 에 불과합니다.
이제 hello-world 이미지가 로컬 시스템에 저장되었습니다. 즉, docker run hello-world를 다시 실행하면 Docker 는 Docker Hub 에서 이미지를 다운로드할 필요가 없습니다. 로컬 복사본을 사용하므로 실행 속도가 훨씬 빨라집니다.
만약 hello-world 이미지가 보이지 않더라도 걱정하지 마세요! 공간 절약을 위해 자동으로 삭제되었을 수도 있습니다. 언제든지 docker pull hello-world 명령어로 다시 가져올 수 있습니다.
참고: LabEx 무료 사용자는 가상 머신이 인터넷에 연결되지 않아 이미지를 직접 pull 할 수 없습니다. 이미지를 직접 pull 하려면 유료 플랜으로 업그레이드하세요.
Continue를 클릭하여 다음 단계로 진행하세요.
Docker Hub 살펴보기
Docker Hub 는 Docker 사용자와 조직이 Docker 이미지를 저장하고 배포할 수 있는 클라우드 기반 레지스트리 서비스입니다. Docker 이미지를 위한 GitHub 와 같으며, 이미지를 찾고 공유하고 관리하는 중앙 저장소 역할을 합니다.