1. 도커란?
Docker는 애플리케이션을 쉽게 개발하고, 테스트하고, 배포 할 수 있게 도와주는 소프트웨어 플랫폼으로 애플리케이션을 컨테이너라는 가볍고 이식성 있는 패키지로 독립시켜 실행환경을 만들어 줍니다. 리눅스 운영체제 기반으로 만들어져 있으며 간소화된 운영체제를 가진 도커 엔진 위에 컨테이너를 올려놓고 어플리케이션을 실행합니다.
도커의 로고를 보면 고래 위에 컨테이너가 올라간 모습인데, 독립된 컨테이너(=어플리케이션) 을 실어 나르는 배를 생각하면 도커를 쉽게 이해할 수 있습니다.
2. 도커의 특징
- 컨테이너화: 애플리케이션과 필요한 모든것을 하나의 패키지로 묶어 어디서든 실행할 수 있습니다.
- 경량: Docker는 운영체제 커널을 공유하므로, 가상 머신보다 훨씬 가볍고 빠르게 실행됩니다.
- 이식성: Docker 컨테이너는 어디서든 동일하게 실행됩니다. 로컬 서버, 테스트 서버,운영 서버 모두 동일하게 동작됩니다.
- 확장성: Docker를 사용하면 여러 개의 컨테이너를 효율적으로 관리하고 쉽게 관리 할 수 있습니다.
3. 도커 관련 용어
- 이미지(Image): 애플리케이션과 그 실행환경에 모든 것( (코드, 런타임, 시스템 도구, 시스템 라이브러리 등)을 포함한 읽기 전용 템플릿 입니다. 도커 이미지는 빵(컨테이너)을 찍어내기 위한 빵판이라 생각하시면 됩니다.
- 컨테이너(Container): 컨테이너는 Docker 이미지를 실행한 상태로 애플리케이션이 실행되는 동적인 환경 입니다. 컨테이너는 격리된 공간에서 애플리케이션을 실행 하고, 필요한 모든 의존성을 포함하고 있습니다.
- DockerFile: Docker 이미지를 생성하기 위한 스크립트로, 이미지를 빌드하는데 필요한 명령어들이 포함되어 있습니다. 이미지를 생성 과정을 자동화 하고 일관되도록 만드는 스크립트 파일 입니다.
- Docker Hub: 이미지를 저장하고 공유하는 중앙 저장소입니다. Docker Hub 에 사용자가 만든 image를 올릴 수 있고 다른 사용자가 만든 image를 다운받을 수 있는 원격 저장소 입니다.
- 볼륨(Volume): 볼륨은 컨테이너를 지속적으로 저장할 수 있는 매커니즘으로, 컨테이너가 삭제 되더라도 볼륨에 저장한 데이터는 유지됩니다. 컨테이너와 데이터를 독립적으로 관리 할 수 있게 해주는 스토리지 입니다.
- 네트워크( Network ): Docker의 네트워크는 컨테이너 간의 통신을 관리하는 방식입니다. Docker 는 여러 네트워크 드라이버를 제공하고 다양한 네트워크 설정을 지원합니다.
- 네트워크 종류
- Bridge Network( 브리지 네트워크) : 기본적으로 컨테이너가 실행 할 때 사용하는 네트워크로 일반적으로 단일 호스트에서 여러 네트워크를 연결할 때 사용됩니다.
- Overlay Network(오버레이 네트워크): 여러 호스트에 걸쳐 있는 컨테이너를 연결할때 사용합니다.
- 네트워크 종류
4. 도커 사용 이유
- 일관된 개발 환경이 필요할 때 --> 개발,테스트,운영 환경이 다를 때
- 어플리케이션을 빠르게 배포하고 싶을 때 --> 설치 과정 생략
- MSA 를 도입할때 -> 각 서비스가 독립적으로 배포하고 실행 할 수 있음
- CI/CD 파이프라인 구축할 때 -> 코드가 변경될때 자동으로 빌드.테스트,배포 하도록 설정 가능
- 쉽게 스케일링 하고 싶을 때 -> 필요한 만큼 수평 확장에 용이. 오케스트레이션 도구와 결합해 자동 확장도 가능
- 쿠버네티스랑 함께 사용할 때 -> 쿠베네티스는 컨테이너 오케스트레이션 도구로 도커 컨테이너를 관리하고 자동 배포,확장,운영을 지원하여 어플리케이션의 가용성과 확장성을 높힘.
5. 💻 Window 환경에서 Docker Hub에서 이미지 받고 실행해보기
5.1 cmd 또는 powshell 에서 ubuntu 접속
5.2 postgreSQL 컨테이너 실행 및 이미지 다운로드
아래 명령어를 powerShell에 입력합니다.
docker run -d --name postgres-sample
-p 5433:5432
-e POSTGRES_USER=admin1
-e POSTGRES_PASSWORD=admin2
-e PGDATA=/var/lib/postgresql/data/pgdata
-v ${로컬_바인딩_폴더}:/var/lib/postgresql/data:z
postgres
docker run => 도커 실행 명령어
-d 옵션: 백그라운드에서 실행
-p 옵션: 호스트 포트 5433 포트를 컨테이너 포트 5432 에 맵핑되도록 합니다.
마지막 줄-> dockerHub에서 postgres 자동으로 다운 받음
image 다운이 완료되면 컨테이너 Id 가 생성됩니다.
📍주의할 점!
1. 디렉토리 경로 지정시: C:\ -> /mnt/c 로 지정
2. 호스트 포트는 중복되면 안됨! 컨테이너 내부 포트는 중복 O
마지막으로 실행된 컨테이너를 조회하고 해당 컨테이너를 중시 시켰습니다.
5.3 도커 명령어
#실행 중인 컨테이너 목록
docker ps
#컨테이너 전체 목록
docker ps -a
# 마지막으로 실행된 컨테이너가 가장 먼저 나열
docker ps -al
# 컨테이너 중지
docker stop container_id
# 컨테이너 시작
docker start container_id
#컨테이너 삭제
docker rm container_id
Window 에서 Docker 설치 방법은 아래 링크 참조
https://yellow-bean.tistory.com/7
Windows 11 에서 Docker 설치 ( DockerDesktop )
해당 포스팅은 '그림과 실습으로 배우는 도커 & 쿠버네티스' 를 참고하였습니다. docker 설치 전 간단하게 설명하자면데이터나 프로그램을 격리시키는 기능 을 제공하는 소프트웨어이다.도
yellow-bean.tistory.com
'Programing > Docker' 카테고리의 다른 글
Windows 11 에서 Docker 설치 ( DockerDesktop ) (0) | 2025.01.27 |
---|