일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- docker
- 익명볼륨
- repository
- Port Fowarding
- Copy
- spring boot
- dockerfile
- 컨테이너간 통신
- 도커파일
- WORKDIR
- named volume
- docker container
- Thymeleaf
- 명명된 볼륨
- docker예시
- Detached
- anonymous volume
- attached
- env
- bind mount
- Docker Desktop
- crossbrowsing
- template engine
- dockerignore
- docker hub
- docker volume
- container
- Docker배경
- arg
- docker image
- Today
- Total
코딩왕 미룡
[Docker] Volumes(볼륨) 본문
◦ 도커가 인식하는 호스트 머신(내 컴퓨터)의 폴더
◦ 도커 컨테이너 내부의 폴더에 매핑
◦ 컨테이너에 정의된 경로는 생성된 어떤 볼륨에 매핑 → 호스트 머신 상의 생성된 어떠한 경로로 연결
(도커에서 관리하므로 어떤 폴더인지는 알 수 없음, 엑세스 불가능)
◦ 데이터를 읽고 쓸 수 있음
◦ 컨테이너 외부에 데이터가 저장되는 것
💡 anonymous volume / named volume (하단에 사용법 참고)
◦ anonymous volum :
- 컨테이너가 종료될 때 삭제, 컨테이너가 존재할 때만 데이터도 존재
- 새로운 컨테이너가 생성될 때마다 사용하지 않는 익명 볼륨이 쌓임 → docker volume prune
→ docker volume rm [볼륨이름]
- 컨테이너에 이미 존재하는 특정 데이터를 잠그는데 적합
(데이터가 다른 모듈에 의해 덮어쓰여지는 것을 방지)
보통 바인드 마운트와 함께 사용
◦ named volum :
- 컨테이너가 종료된 이후에도 지속되며 폴더 유지
- 새 컨테이너가 생성되면 볼륨이 복구되고 폴더가 복구되어 해당 폴더에 저장되니 모든 데이터 사용가능, 데이터를 유지
- 컨테이너의 제거 시마다 손실되는 데이터 문제를 해결
- 영구적이어야 하는 데이터나 편집, 혹은 직접 볼 필요가 없는 중요한 데이터에 적합
(직접 호스트 머신의 폴더에 액세스하지 않을 것이기 때문)
→ 데이터를 편집할 수 있는 옵션이 있음
🟥 Dockerfile 내부 명령으로 생성 불가능 (바인드 마운트와 동일)
이미지에는 적용되지 않고 컨테이너에만 영향을 줌
실제 이미지가 아니라 실행하는 컨테이너에만 적용되기 때문
🟩 컨테이너 실행 (docker run -v name:/경로) 시 named volume 생성
◦ 볼륨이 존재하지 않으면 생성하고 존재하면 기존의 것을 사용
◦ 특정 컨테이너에 연결되어있는 것이 아님 (여러 컨테이너에서 공유가능)
🟨 참고
Dockerfile의 COPY명령과 Volume의 차이
◦ COPY : 복사를 명령한 경로와 파일의 스냅샷을 취한 다음 파일과 폴더를 이미지에 복사하는 것이 전부
지속적인 관계나 연결이 없으며 이미지에 복사되는 일회성 스냅샷
- 스냅샷 : 마치 사진 찍듯이 특정 시점에 스토리지의 파일 시스템을 포착해 보관하는 기술
◦ Volume : 컨테이너 내부의 폴더를 호스트 머신 상의 컨테이너 외부 폴더에 연결할 수 있음
두 폴더의 변경 사항은 다른 폴더에 반영됨
→ 데이터 유지 가능
호스트 머신에서 파일을 추가하면 컨테이너 내부에서 엑세스 가능하며
컨테이너가 매핑된 경로에 파일을 추가하면 호스트 머신에서도 사용 가능
사용법
anonymous volume (Dockerfile 내부 옵션으로 작성)
VOLUME [ "컨테이너 외부 폴더에 매핑되어질 내 컨테이너 내부 위치" ]
named volume
docker run -d -p 3000:80 —rm -v [원하는 볼륨이름]:[매핑될 컨테이너 내부 위치] [이미지 아이디 or 이미지 이름]
'Docker' 카테고리의 다른 글
[Docker] Docker hub(push/pull) (0) | 2023.06.07 |
---|---|
[Docker] Dockerfile 작성하기 (0) | 2023.06.06 |
[Docker] Bind Mounts(바인드 마운트) (0) | 2023.06.06 |
[Docker] Docker Desktop 사용 예시(파일 수정해보기) (0) | 2023.06.02 |
[Docker] Docker 기초(배경 및 기본 용어) (1) | 2023.06.01 |