일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ERR unknown command 'JSON.GET'
- 직장인자기계발
- Redis
- 패캠챌린지
- redis-cli
- 직장인인강
- 캐시백챌린지
- Avast Security
- AWS S3 migration
- AWS S3 버킷 삭제
- 한 번에 끝내는 AWS 인프라 구축과 DevOps 운영 초격차 패키지 Online
- Ngrinder Docker
- elastic cache
- vscode
- 캐시백
- 환급챌린지
- aws s3
- 잔디이전
- AWS S3 계정이동
- putty Inactive
- redis cli
- ERR unknown command 'JSON.SET'
- 패스트캠퍼스
- RedisJSON
- 패스트캠퍼스후기
- Window redis-cli
- Avast 구독취소
- gitlab 잔디옮기기
- nodemailer
- aws
- Today
- Total
Developing
패스트캠퍼스 캐시백 챌린지 50일차 본문
도커 레이어 아키텍쳐와 도커 볼륨과 관련된 클립을 수강하는식으로 챌린지를 진행하였다. 전체 강의중에서 가장 깊이있어보이는 난이도에 해당하는 것 같았다.제대로 이해하고 넘어가기 위해서 나중에 실습과 이론부분들을 따로 다시금 복습하려고 한다. 다음 포스팅으로는 Docker log , Image build와 관련된 내용을 포스팅하려고 한다.
도커 레이어 아키텍쳐
- 도커 이미지를 빌드할때 dockerfile이라는 명세서를 기반으로 도커 이미지가 빌드된다. 이미지를 자세하게 보면 layer로 구성되어있고 dockerfile내의 여러 명령어들이 순차적으로 layer가 쌓이듯이 저장된다.
⇒ 예를들어 ubuntu image base면 layer1처럼 쌓이고
⇒ 우분투 운영체제에서 필요로하는 패키지들을 설치해주는 내용이 layer2에 쌓이며,
⇒ python 관련된 이미지패키지여서 해당 내용이 layer3에
⇒ source code 복사한내용을 layer 4에
⇒ container의 entrypoint 명령어를 변경한다하면 layer 5에 저장된다.
⇒ layer구조를 취하여 얻는 장점이 있다.추후에 이미지에 변경사항을 가한다고 하면, layer 4를 변경한다하면 layer 1~3은 변경사항이 필요가없고 branch가 따지며 new layer 4 , new layer 5가 생성이 된다.
⇒ 이런식으로 도커 이미지의 여러 버전들이 생긴다 하더라도 저장공간을 차지하지 않는 레이어 구조를 가지고 있다.
- docker run으로 이미지를 실행하면 이후에 컨테이너는 2가지 레이어를 가지게 된다. Image Layer과 Container Layer를 가지게 된다.
⇒ Image Layer는 이미지를 불러들여서 사용하는 것이기에 항상 동일하고 읽기 전용으로 사용하게 된다. 읽기전용 이미지레이어에는 변경사항을 가할 수 없게 된다.
⇒ 따라서 컨테이너 상에서 새로운 파일을 쓰거나할때에는 Container Layer의 파일을 쓰게 되어 Read Write 권한을 갖는다.
⇒ Container가 종료되면 Container Layer는 삭제되게 된다. Container에 있던 내용들이 전부 삭제되기에 보존시켜주려면 mount등의 작업을 해주면 된다.
호스트 볼륨
- 호스트의 디렉토리를 컨테이너의 특정 경로에 마운트한다.
# 호스트의 /opt/html 디렉토리를 Nginx의 웹 루트 디렉토리로 마운트
$ docker run -d \\
--name nginx \\
-v /opt/html:/usr/share/nginx/html \\
nginx
- host의 /opt/html 디렉토리가 컨테이너의 /usr/share/nginx/html 디렉토리 경로로 마운트 되어 컨테이너를 실행시킬 수 있다.
볼륨 컨테이너
- 특정 컨테이너의 볼륨 마운트를 공유할 수 있다.
$ docker run -d \\
--name my-volume \\
-it \\
-v /opt/html:/usr/share/nginx/
html \\
ubuntu:focal
# my-volume 컨테이너의 볼륨을 공유
$ docker run -d \\
--name nginx \\
--volumes-from my-volume \\
nginx
도커 볼륨
- 도커가 제공하는 볼륨 관리 기능을 활용하여 데이터를 보존한다.
- 기본적으로 /var/lib/docker/volumes/$(volume-name)/_data 에 데이터가 저장된다.
# web-volume 도커 볼륨 생성
$ docker volume create --name db
# 도커의 web-volume 볼륨을 Nginx의 웹 루트 디렉토리로 마운트
$ docker run -d \\
--name fastcampus-mysql \\
-v db:/var/lib/mysql \\
-p 3306:3306 \\
mysql:5.7
읽기 전용 볼륨 연결
- 볼륨 연결 설정에 :ro 옵션을 통해 읽기 전용 마운트 옵션을 설정할 수 있다.
# 도커의 web-volume 볼륨을 Nginx의 웹 루트 디렉토리로 읽기 전용 마운트
$ docker run -d \\
--name nginx \\
-v web-volume:/usr/share/nginx/html:ro \\
nginx
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
* 본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
'Devops > Fastcampus 캐시백 챌린지' 카테고리의 다른 글
패스트캠퍼스 캐시백 챌린지 52일차 (0) | 2022.06.08 |
---|---|
패스트캠퍼스 캐시백 챌린지 51일차 (0) | 2022.06.07 |
패스트캠퍼스 캐시백 챌린지 49일차 (0) | 2022.06.05 |
패스트캠퍼스 캐시백 챌린지 48일차 (0) | 2022.06.04 |
패스트캠퍼스 캐시백 챌린지 47일차 (0) | 2022.06.03 |