Docker: 컨테이너 기반 애플리케이션의 혁신
안녕하세요! 저는 mj입니다. 오늘은 Docker에 대해 알아보겠습니다. Docker는 애플리케이션을 컨테이너라는 독립적인 환경에서 실행할 수 있게 해주는 플랫폼으로, 소프트웨어 개발 및 배포를 혁신적으로 변화시켰습니다. 이 포스팅에서는 Docker의 기본 개념과 설치 방법, 주요 명령어, 실습 예제를 통해 Docker의 강력한 기능을 살펴보겠습니다.
1. Docker란?
Docker는 오픈 소스 컨테이너화 플랫폼으로, 개발자가 애플리케이션을 효율적으로 빌드, 배포 및 실행할 수 있도록 도와줍니다. 컨테이너는 애플리케이션과 그 의존성을 패키징하여, 어떤 환경에서도 동일하게 실행될 수 있게 해줍니다. Docker는 개발자에게 일관된 환경을 제공하여, "내 컴퓨터에서는 잘 돌아가는데"라는 문제를 해결합니다.
2. Docker의 주요 구성 요소
Docker는 다음과 같은 주요 구성 요소로 이루어져 있습니다:
- 이미지(Image): 애플리케이션과 그 의존성을 포함하는 읽기 전용 템플릿입니다.
- 컨테이너(Container): 이미지를 실행한 인스턴스로, 애플리케이션이 실행되는 환경입니다.
- Dockerfile: 이미지를 생성하기 위한 스크립트로, 필요한 패키지와 설정을 정의합니다.
- 레지스트리(Registry): 이미지를 저장하고 배포하는 장소로, Docker Hub가 대표적인 예입니다.
3. Docker 설치하기
리눅스에서 Docker를 설치하는 방법은 다음과 같습니다:
sudo apt-get update
sudo apt-get install docker.io
sudo systemctl start docker
sudo systemctl enable docker
이 과정이 완료되면 Docker가 정상적으로 설치되었는지 확인하기 위해 다음 명령어를 사용할 수 있습니다:
docker --version
실행 결과는 다음과 같습니다:
Docker version 20.10.7, build f0df350
4. Docker 사용하기
Docker를 사용하여 간단한 명령어를 실행해보겠습니다. 먼저, Docker Hub에서 이미지를 다운로드합니다:
docker pull ubuntu
다운로드한 이미지를 사용하여 컨테이너를 실행하려면:
docker run -it ubuntu
이 명령어를 실행하면 Ubuntu 컨테이너의 쉘로 들어갑니다. 컨테이너에서 ls
명령어를 사용하여 파일 목록을 확인할 수 있습니다:
ls
실행 결과는 다음과 같습니다:
bin dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
5. 실습 예제: Nginx 웹 서버 실행하기
Nginx 웹 서버를 Docker를 사용하여 실행하는 방법을 알아보겠습니다. 다음 명령어를 입력하여 Nginx 컨테이너를 실행합니다:
docker run -d -p 80:80 nginx
위 명령어는 Nginx 웹 서버를 백그라운드에서 실행하고, 호스트의 80 포트를 컨테이너의 80 포트에 매핑합니다. 웹 브라우저에서 http://localhost
로 접속하면 Nginx의 환영 페이지를 확인할 수 있습니다.
웹 서버의 상태를 확인하려면:
docker ps
실행 결과는 다음과 같습니다:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e1b1a6c9a1f8 nginx "/docker-entrypoint.…" 10 seconds ago Up 9 seconds 0.0.0.0:80->80/tcp amazing_kirch
5.1 컨테이너 로그 확인하기
실행 중인 Nginx 컨테이너의 로그를 확인하려면:
docker logs e1b1a6c9a1f8
실행 결과는 다음과 같습니다:
172.17.0.1 - - [16/Feb/2022:12:00:00 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
5.2 컨테이너 중지하기
컨테이너를 중지하려면:
docker stop e1b1a6c9a1f8
이후, 실행 중인 컨테이너 목록을 다시 확인하면:
docker ps
실행 결과는 다음과 같습니다:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5.3 여러 개의 컨테이너 실행하기
여러 개의 컨테이너를 동시에 실행하려면, 각각의 명령어를 사용하여 Nginx와 Apache를 실행할 수 있습니다:
docker run -d -p 80:80 nginx
docker run -d -p 8080:80 httpd
각각의 웹 서버에 접속하려면 http://localhost
와 http://localhost:8080
로 접속하면 됩니다.
6. Docker Compose 사용하기
Docker Compose를 사용하면 여러 개의 컨테이너를 정의하고 실행할 수 있습니다. docker-compose.yml
파일을 생성하여 다음과 같은 내용을 추가합니다:
version: '3'
services:
web:
image: nginx
ports:
- "80:80"
db:
image: postgres
environment:
POSTGRES_PASSWORD: example
이후, 다음 명령어로 실행합니다:
docker-compose up
이 명령어를 실행하면 Nginx와 PostgreSQL이 동시에 실행됩니다.
7. 결론
이번 포스팅에서는 Docker의 기본 개념과 설치 방법, 주요 명령어에 대해 알아보았습니다. Docker는 애플리케이션의 개발과 배포를 간소화하는 강력한 도구입니다. 다양한 이미지와 컨테이너를 활용하여 효율적인 개발 환경을 구축해보세요!
감사합니다! 다음 포스팅에서 또 만나요!
문의사항은 댓글을 달아 주시면 성심껏 답변 드리겠습니다. 감사합니다.
댓글
댓글 쓰기