Skip to content

Commit

Permalink
챕터 5,6 입니다. (#16)
Browse files Browse the repository at this point in the history
  • Loading branch information
jivebreaddev authored Oct 23, 2023
1 parent 46ce618 commit b7182c0
Show file tree
Hide file tree
Showing 2 changed files with 81 additions and 0 deletions.
35 changes: 35 additions & 0 deletions ch05/박시창.md
Original file line number Diff line number Diff line change
@@ -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 하기


46 changes: 46 additions & 0 deletions ch06/박시창.md
Original file line number Diff line number Diff line change
@@ -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 연습 문제

0 comments on commit b7182c0

Please sign in to comment.