티스토리 뷰
🔗 컨테이너와 호스트 사이에 파일 복사
### 기본적으로 docker cp 원본경로 복사할경로 ###
# 호스트 -> 컨테이너로 파일 복사
# docker cp 호스트_경로 컨테이너_이름:컨테이너_경로
docker cp C:\Users\woori\Documents\index.html exapache:/usr/local/apache2/htdocs/
# 컨테이너 -> 호스트로 파일 복사
# docker cp 컨테이너_이름:컨테이너_경로 호스트_경로
docker cp exapache:/usr/local/apache2/htdocs/index.html C:\Users\woori\Documents
🔒 스토리지 마운트
- 볼륨이란? 스토리지의 한 영역을 분할한 것. 즉, 하드디스크나 SSD를 분할한 하나의 영역임
- 마운트란? 연결하다 그 의미 그 자체
- 그럼 볼륨마운트란? 대상을 연결해 운영체제 또는 스프트웨어의 관리하에 두는 일.
ex) USB랑 PC는 연결되어있지 않지만 USB를 PC에 꽂으면 연결되어 사용할 수 있는거랑 비슷함
- 바인드 마운트
- 컨테이너와 파일을 연동하는 데 많이 사용됨. *LAMP 스택을 실무에 활용할 때 필수적임
- 도커가 설치된 컴퓨터의 문서 폴더 등 도커엔진에서 관리하지 않는 영역의 기존 디렉터리를 컨테이너에 마운트하는 방식이다.
- 디렉터리가 아닌 파일 단위로도 마운트가 가능하다.
- 자주 사용하는 파일을 두는 데 사용한다.
- 기존과 동일한 방식으로 파일을 사용할 수 있다.
- 볼륨 마운트
- 도커 엔진이 관리하는 영역 내에 만들어진 볼륨을 컨테이너에 디스크 형태로 마운트한다.
- 이름만으로 관리가 가능해서 다루기 쉽지만
- 볼륨에 비해 직접 조작하기 어려움.
- 임시목적으로 사용하거나 자주는 쓰지 않지만 지우면 안되는 파일들을 목적으로 많이 사용함
- 운영체제 또는 환경에 따라 명령어가 달라지는 등의 의존성 문제가 일어나지 않는다.(ex. 윈도우->macOS로 변경했을 때 경로 수정 안해도 됨)
- 볼륨에 접근할 때 무조건 도커 컨테이너를 경유해야 한다. 백업의 절차도 매우 복잡함
항목 | 볼륨 마운트 | 바인드 마운트 |
스토리지 영역 | 볼륨 | 디렉터리 또는 파일 |
물리적 위치 | 도커 엔진의 관리 영역 | 어디든지 가능 |
마운트 절차 | 볼륨을 생성한 후 마운트 | 기존 파일 또는 폴더를 마운트 |
내용 편집 | 도커 컨테이너를 통해서 | 일반적인 파일과 같이 |
백업 | 절차가 복잡함 | 일반적인 파일과 같이 |
* LAMP스택 ? : 웹 개발에서 널리 사용되는 오픈소스소프트웨어 세트로, Linux(운영체제), Apache(웹서버), Mysql(데이터베이스 관리시스템), PHP(서버 사이드 스크립팅 언어)로 구성되어있음.
🧵 Image 만들기
- 방법1. commit 커맨드로 컨테이너를 이미지로 변환
- 도커환경에서 사용하고있는 컨테이너를 commit 명령어를 사용해서 이미지로 변환한다.
docker commit 컨테이너_이름 새로운_이미지_이름
- 방법2. Dockerfile 스크립트로 이미지 만들기
- 바인드 마운트 한 로컬 폴더에서 Dockerfile을 작성하고, docker환경에서 build한다.
docker build -t 생성할_이미지_이름 재료_폴더_경로
## 여기서 -t는 태그를 주는 옵션
# Dockerfile 스크립트의 예시
FROM 이미지_이름
COPY 원본_경로 대상_경로
RUN 리눅스_명령어
...
🧾 도커 컴포즈
✔ 도커 컴포즈의 개념
- 시스템 구축과 관련된 명령어를 하나의 텍스트파일(YAML)에 기재해 명령어 한 번에 시스템 전체를 실행하고 종료, 폐기한다.
- 데이터베이스와 애플리케이션 컨테이너를 함께 시작하고 싶다거나, 환경을 대량으로 생성해야 할 때 유용
- 산출물이 텍스트 파일 형태로 남는다 (관리에 유용함)
- 도커 컴포즈는 도커 엔진과는 별개로 따로 설치해야한다 (Windows, macOs는 아마 docker 다운로드하면서 같이 받아졌을거임. Linux만 별개 설치)
- 도커 컴포즈를 사용하려면 docker-compose.yml 이름을 사용해야 한다.
- docker-componse.yml파일은 한 폴더에 하나만 있을 수 있다.
✔ 도커 컴포즈 커맨드
- up command : (≒ docker run) 이미지를 내려받고 컨테이너를 생성 및 실행
- down command : (≒ docker rm) 컨테이너와 네트워크를 정지 및 삭제. 볼륨과 이미지는 삭제하지 않는다
✔ 도커 컴포즈 vs Dockerfile
- 도커 컴포즈 : 네트워크, 볼륨을 포함하여 컨테이너 run 명령어를 모아놓은 파일
- Dockerfile : 네트워크나 볼륨은 포함하지 않고, 이미지를 만들기 위한 파일
✔ 도커 컴포즈 파일의 항목
항목 | 설명 |
version | Docker Compose 파일의 버전을 정의합니다. 예: version: '3.8' |
services | 어플리케이션의 각 서비스를 정의하는 섹션입니다. |
image | 사용할 Docker 이미지의 이름과 태그를 지정합니다. |
build | Dockerfile을 사용하여 이미지를 빌드하는 설정입니다. |
ports | 컨테이너의 포트를 호스트와 매핑합니다. 예: "호스트포트:컨테이너포트" |
volumes | 호스트와 컨테이너 간의 데이터 공유를 위한 볼륨을 정의합니다. |
environment | 컨테이너에서 사용할 환경 변수를 설정합니다. |
depends_on | 서비스 간의 의존성을 정의합니다. |
networks | 사용자 정의 네트워크를 설정하여 서비스 간의 통신을 관리합니다. |
restart | 컨테이너가 종료되었을 때 자동으로 재시작할 정책을 설정합니다. |
command | 서비스 시작 시 실행할 명령어를 지정합니다. |
healthcheck | 컨테이너의 상태를 확인하기 위한 헬스 체크를 정의합니다. |
✔ docker-compose.yml 파일 예시
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./data:/app/data
environment:
- NODE_ENV=production
restart: always
depends_on:
- db
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
✔ 작성한 docker-compose.yml파일 실행
# docker-compose -f 파일경로/docker-compose.yml up 옵션
docker-compose -f C:\Users\***\Documents\com_folder\docker-compose.yml up -d
# docker-compose -f 파일경로/docker-compose.yml down 옵션
docker-compose -f C:\Users\***\Documents\com_folder\docker-compose.yml down
'Programming > DevOps' 카테고리의 다른 글
[Docker] 도커 명령어 : 커맨드 및 옵션 (2) | 2024.11.01 |
---|---|
[Docker] 도커의 기본 개념과 장단점 & Windows 설치 방법(WSL 2) (2) | 2024.10.30 |
- Total
- Today
- Yesterday
- dp
- 순열
- Retrofit2
- 아이템59
- OS
- 완전탐색
- 운영체제
- 부분집합
- Container
- docker
- springboot
- 알고리즘
- 그래프탐색
- docker-compose
- 토큰기반인증
- IMAGE
- EffectiveJava
- BFS
- 완탐
- BOJ
- 아이템60
- subset
- Java
- bruteforce
- 조합
- 백준
- dfs
- 이펙티브자바
- 정처기
- 아이템61
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |