반응형
도커 허브란 ⭐
- 도커 제작사에서 운영하는 공식 도커 레지스티리
도커 레지스트리
- 도커 이미지를 저장하고 관리하는 중앙 저장소로서 동작하는 서버
- 도커 이미지를 업로드, 다운로드, 검색, 삭제 등의 작업을 수행
⇒ 도커 이미지를 공유하고 배포하기 위해 사용
레포지토리
- 도커 이미지의 집합을 나타내는 공간
- 이미지의 다양한 버전을 관리하고 구분
태그
- 도커 이미지의 버전을 식별하기 위한 라벨
- 이미지의 특정 버전을 구분하고 관리하는 데 사용
- 레지스트리_주소(도커 허브는 ID)/레포지토리_이름:버전
이미지에 태그를 부여해 복제하는 명령어
- docker tag [기존_이미지_이름] [레지스트리_주소]/[레포지토리_이름]:[태그]
- 명령어 실행 후 기존 이미지와 태그가 부여된 이미지가 둘 다 존재
이미지를 업로드하는 명령어 ⭐
- docker push [레지스트리_주소]/[레포지토리_이름]:[태그]
- 레포지토리는 처음 업로드할 때는 존재하지 않고, push 커맨드를 실행하며 만들어짐
실습
- 컨테이너 생성 시 개인 리포지토리에서 이미지 저장 및 내려받기
docker pull nginx
docker login
# docker tag [이미지_이름]:[태그] [유저_이름]/[리포지토리_이름]:[새로운태그]
docker tag nginx:latest kylo/docker_repo:latest
# docker push [유저_이름]/[리포지토리_이름]:[태그]
docker push kylo/docker_repo:latest
docker run -d -p 8081:80 --name my-nginx kylo/docker_repo:latest
- 컨테이너 생성 시 이미지 경로를 개인 레포지토리 경로로 변경
- kylo/docker-repo:latest
# 실행중인 컨테이너 목록 확인 (-al 전체 조회)
docker ps
도커 컴포즈란 (Docker Compose) ⭐
- 시스템 구축과 관련된 명령어를 하나의 텍스트 파일에 기재해, 명령어 한 번에 시스템 전체를 실행하고 종료와 폐기까지 한 번에 하도록 도와주는 도구
도커 컴포즈의 구조
- 시스템 구축에 필요한 설정을 YAML 포맷으로 기재한 정의 파일을 이용해 전체 시스템을 일괄 실행 또는 일괄 종료 및 삭제할 수 있는 도구
- up 커맨드 ⭐
- docker run과 비슷
- 정의 파일에 기재된 내용대로 이미지를 내려받고 컨테이너를 생성 및 실행
- 정의 파일에 네트워크나 볼륨에 대한 정의도 기재 가능
- down 커맨드 ⭐
- 컨테이너와 네트워크를 정지 및 삭제
- 볼륨과 이미지는 삭제되지 않음
컴포즈 파일 작성 요령
version: "3"
services:
# MySQL 컨테이너 설정
mysql000ex11:
image: mysql:5.7 # MySQL 5.7 이미지 사용
networks:
- wordpress000net1 # wordpress000net1 네트워크 연결
volumes:
- mysql000vol11:/var/lib/mysql # MySQL 데이터 저장을 위한 볼륨 마운트
restart: always # 컨테이너 재시작 설정
environment:
MYSQL_ROOT_PASSWORD: myrootpass # MySQL 루트 비밀번호 설정
MYSQL_DATABASE: wordpress000db # WordPress 데이터베이스 생성
MYSQL_USER: wordpress000kun # WordPress 사용자 생성
MYSQL_PASSWORD: wkunpass # WordPress 사용자 비밀번호 설정
# WordPress 컨테이너 설정
wordpress000ex12:
depends_on:
- mysql000ex11 # mysql000ex11 컨테이너가 먼저 실행되어야 함
image: wordpress # WordPress 이미지 사용
networks:
- wordpress000net1 # wordpress000net1 네트워크 연결
volumes:
- wordpress000vol12:/var/www/html # WordPress 웹 애플리케이션 파일 저장을 위한 볼륨 마운트
ports:
- 8085:80 # 호스트 포트 8085를 컨테이너의 80번 포트로 매핑
restart: always # 컨테이너 재시작 설정
environment:
WORDPRESS_DB_HOST: mysql000ex11 # MySQL 호스트 설정
WORDPRESS_DB_NAME: wordpress000db # WordPress 데이터베이스 이름 설정
WORDPRESS_DB_USER: wordpress000kun # WordPress 데이터베이스 사용자 이름 설정
WORDPRESS_DB_PASSWORD: wkunpass # WordPress 데이터베이스 사용자 비밀번호 설정
# 컨테이너 간 통신을 위한 네트워크 설정
networks:
wordpress000net1:
# 데이터 저장용 볼륨 설정
volumes:
mysql000vol11: # MySQL 데이터 저장용 볼륨
wordpress000vol12: # WordPress 웹 애플리케이션 파일 저장용 볼륨
실습
- 도커 컴포즈를 통해 MySQL - Wordpress 연동
mkdir ~/compose
sudo nano ~/compose/docker-compose.yaml
sudo apt update
sudo apt install python3 python3-pip
sudo pip install docker-compose
docker-compse -f ~/compose/docker-compose.yaml up -d
- docker-compose -f [정의_파일_경로] up [옵션]
docker ps
docker network ls
docker volume ls
docker-compose -f ~/compose/docker-compose.yaml down
- 컨테이너를 정지하지 않아도 삭제 가능
- 볼륨과 이미지는 데이터의 영속성과 이미지 재사용의 이유로 삭제되지 않음
도커 컴포즈 stop
- docker-compose -f [컴포즈_파일_경로] stop [옵션]
Dokcer Compose vs Dockerfile 차이점
Dockerfile은 하나의 이미지를 빌드하는 방법이고,
Docker Compose는 컨테이너+환경설정, 네트워크, 볼륨을 한 번에 만드는 방식이다.
Dockerfile에서는 네트워크와 볼륨 생성 및 설정이 불가능하다.
반응형
'Infra > Docker' 카테고리의 다른 글
[Docker] Docker compose로 redis 실행하기 - redis.conf, requirepass, data 설정 (0) | 2024.04.21 |
---|---|
[Docker] Docker network, volume 이해 및 docker-compose에 network, volume 지정하기 (0) | 2024.04.21 |
Docker로 Spring Boot, Vue, MySQL 배포 및 연동하기 (0) | 2023.12.03 |
[Docker] 도커 기본 명령어, 명령어 정리 (0) | 2023.12.03 |
Docker란 무엇인가? 도커 장점과 컨테이너, 도커 엔진의 역할 이해하기 (0) | 2023.12.03 |