diff --git "a/ch05/\353\260\225\354\213\234\354\260\275.md" "b/ch05/\353\260\225\354\213\234\354\260\275.md" new file mode 100644 index 0000000..cd3f258 --- /dev/null +++ "b/ch05/\353\260\225\354\213\234\354\260\275.md" @@ -0,0 +1,35 @@ +# 5. 도커 허브 등 레지스트리에 이미지 공유하기 + - **빌드한 이미지**를 다른 사람이 공유하게끔 하는 것을 말한다. + +## 5.1 레지스트리, 리포지터리, 이미지 태그 다루기 + +- **도커 레지스트리** + - 네개의 요소로 표기된다. + - `docker-io/diamol/golang:latest` + - `도메인/계정이름/리포지터리:이미지 태그` + +## 5.2 도커 허브에 직접 빌드한 이미지 푸시하기** + - 이미지 태그 부여하기 + - `docker image tag image-gallery $dockerId/image-gallery:v1` : v1 태그 부여 + - `docker image push $dockerId/image-gallery:v1` : 이미지 푸시 + - 실제 업로드 대상은 이미지 레이더들 + +## 5.3 나만의 도커 레지스트리 운영하기 + - **도커레지스트리** 실행 + - `docker container run -d -p 5000:5000 --restart always diamol/registry` : -p 도메인 localhost:5000 + - 도메인 네임을 별명으로 붙이는 명령 실행 + - registry.local:5000 해당 방향으로 도메인이름을 사용할 수 있게됨 + - HTTP 연결(비보안 연결) 설정도 진행 + - docker info 로 엔진설정 정보 확인 + +## 5.4 이미지 태그를 효율적으로 사용하기 + - [major].[minor].[patch] 형태로 버전 정보 갖추기 + - 완전히다른기능.기능추가.버그 수정 + +## 5.5 공식 이미지에서 골든 이미지로 전환하기 + - 검증된 퍼블리셔, 공식 이미지 제도를 통해서 신뢰할 수 있는 이미지 사용하기 + - 공식 이미지를 기반으로 삼아 인증서나 환경설정 값등 필요한 설정을 추가한다. +## 5.6 연습문제 + - 로컬 레지스트리에 모든 tag push 하기 + + diff --git "a/ch06/\353\260\225\354\213\234\354\260\275.md" "b/ch06/\353\260\225\354\213\234\354\260\275.md" new file mode 100644 index 0000000..0140a5a --- /dev/null +++ "b/ch06/\353\260\225\354\213\234\354\260\275.md" @@ -0,0 +1,46 @@ +# 6. 도커 볼륨을 이용한 퍼시스턴트 스토리지 + - **무상태 - 유상태** + - 무상태 애플리케이션은 컨테이너 수만 늘리면 스케일이 되고 롤링 배포로 서비스 중단없이 업데이트 배포 할 수 있다. + - 퍼시스턴시를 위해 디스크를 사용해야 되고 스토리지 관련 복잡한 상황이 생긴다. -> 도커 볼륨과 마운트, 컨테이너 파일 시스템 + +## 6.1 컨테이너 속 데이터가 사라지는 이유 + - 모든 컨테이너는 독립된 파일 시스템을 가진다. + - 파일 시스템은 독립적이고 컨테이너가 삭제 될 때(컨테이너와 같은 생애주기) 삭제된다. + - 단일 디스크 dev/sda1, C:\ 를 가지게된다. + - 이미지 레이어와컨테이너의 기록 가능 레이로 구성 된다. + - 이미지 레이어는 공유하고 기록 가능 레이너느 컨테이너마다 다르다. + - 기록 가능 레이어는 컨테이너와 같은 생애주기를 갖는다. + - 기록가능레이어 (파일을 쓰기 가능 레이어로 복사해와서 파일을 수정) [copy-on-write] + - 이미지레이어 (읽기전용) + - 이 사라지는 것을 막기위해 볼륨과 마운트를 사용한다. + +## 6.2 도커 볼륨을 사용하는 컨테이너 실행하기 + - **볼륨 사용** 스텝 + - 1. 볼륨을 생성 -> 2. 컨테이너에 연결 -> 3. 컨테이너 파일 시스템의 한 디렉터리로 설정됨 -> 4. 다른 컨테이너에서도 연결 가능 + - **볼륨 생성** 방법 + - 1. 직접 생성 + - 2. VOLUME 인스트럭션을 사용 -> 자동으로 생성해서 컨테이너에 연결 (별개의 생애주기를 가짐) + - **볼륨** 팁 + - 컨테이너간 파일 공유 보다는 업데이트 간 상태 보존 용도 + - 이미지에 정의하기 보단 명시적으로 관리 + - `docker container --volume` : 볼륨 사용 기능 이미 있으면 override + +## 6.3 파일 시스템 마운트를 사용하는 컨테이너 실행하기 + - 볼륨의 장점은 컨테이너와 스토리지의 생애주기 분리 + - 바인드 마운트는 호스트의 파일 시스템의 디렉터리를 컨테이너 파일시스템의 디렉터리로 마늗ㄴ다. + - 고신뢰성 스토리지를 지정해서 사용가능하다. + - 분산 스토리지를 사용하게 되면 네트워크 오버헤드를 생각해야된다. + +## 6.4 파일 시스템 마운트의 한계점 + - 첫번째 시나리오: 컨테이너의 마운트 대상이 이미 존재할 때 overwrite 된다. + - 두번째 시나리오: 호스트 컴퓨터의 파일이 이미 존재할 때, 합쳐져서 나타난다. + - 세번째 시나리오: 분산 파일 스토리지를 마운트하면 안되는 기능도 있다 (hard link) + +## 6.5 컨테이너의 파일 시스템은 어떻게 만들어지는가? + - **파일 시스템** + - 기록 가능 레이어: 네트워크를 통해 저장해야되는 데이터 캐싱 용도 + - 로컬 바인드 마운트: 호스트 컴퓨터와 컨테이너 간 데이터 공유 사용 + - 분산 바인트 마운트: 네트워크 스토리지 사용 + - 볼륨 마운트: 영구적 사용을 위한 데이터 유지 + - 이미지 레이어: 초기 파일 시스템 구성 +## 6.6 연습 문제