alt
Home 시작하세요! 도커 / 쿠버네티스 2장 도커 엔진 - 2. 도커 이미지
Post
Cancel

시작하세요! 도커 / 쿠버네티스 2장 도커 엔진 - 2. 도커 이미지

: 모든 도커 컨테이너는 읽기전용인 도커 이미지를 기반으로 생성된다.


  • run, create, pull 명령어를 수행하면 가장 먼저 호스트 머신에서 해당 이미지를 찾고, 없으면 도커 허브에서 검색한 뒤 내려받는다. docker search {image} 로 검색도 가능하다.
    • 누구나 배포할 수 있다. 이미지 중에서도 docker official image 딱지가 붙은 공식 이미지를 사용하는게 웬만하면 좋다. 도커 허브 이미지는 docker.io/ubuntu와 같이 prefix가 붙는다.
    • 필요한 경우 컨테이너 형태로 사설 레지스트리를 내부에 띄워놓고, 사내망에서 사용하는 이미지들을 배포 및 관리 할 수 있다.
  • 생성: 실행중인 컨테이너를 commit하거나 Dockerfile을 빌드하면 이미지로 만들 수 있다. 커밋의 경우 컨테이너 내에서의 작업 내용이 유지된다.


이미지 구조

  • inspect 명령어의 Layers 항목을 보면 각 이미지의 레이어들을 볼 수 있다.
  • git에서 각 커밋들간의 diff를 저장하는 것과 유사한 개념으로, 도커에서 commit을 통해 생성한 이미지는 변경된 layer(diff) 하나만 다르다.
  • 이미지를 삭제하면 Untagged, Deleted 등의 로그가 찍히는데 전자는 이미지의 이름을 삭제한 것이고(이 때 이미지 이름이 <none>이 된다 -> 댕글링 이미지), 후자는 이미지 레이어가 실제로 삭제됨을 뜻한다.


이미지 추출과 배포

  • 추출: 이미지.tar 와 같은 형태의 파일로 추출하는 방법
    • save, load 커맨드를 통해 컨테이너 메타데이터를 포함한 파일로 추출, 로드가 가능하고, export, import 커맨드를 통해 컨테이너 파일시스템을 그대로 추출, 로드한다.
    • 이미지 레이어 구조가 아닌 단일파일 배포이기 때문에, 여러 버전의 이미지를 추출하면 불필요하게 중복된 이미지 용량을 차지한다.
  • 배포: pushpull을 이용하는 방법. -> 효율적
    • 도커 허브를 이용하기: 도커 허브에 가입해 repository를 생성한 뒤 배포
    • 사설 레지스트리 이용하기


사설 레지스트리 배포

  • registry 이미지를 받아, 내부망에 먼저 배포해야한다. 레지스트리 컨테이너는 기본적으로 도커 볼륨을 사용하도록 설정 되어있다.

  • 도커 데몬은 기본적으로 https를 사용하지 않는 레지스트리 컨테이너에 접근하지 않도록 한다. 인증서를 사는 방법 외에도 해결 방법이 있다.

    • --insecure-registry 옵션을 사용해 http 레지스트리 컨테이너에 접근을 허용한다.

    • nginx 서버를 두는 방법 - 자체 인증서를 발급해 TLS를 적용하는 방법

      1. 레지스트리 컨테이너의 ip로 인증서를 생성한다.
      2. 해당 컨테이너를 바라볼 nginxcrt, key config를 적용한다.
      3. 각 사용자들(외부)은 nginx와 통신하고, nginx는 외부에 노출되지 않는 레지스트리 컨테이너와 통신한다.
  • 인터페이스가 없기 때문에 rest api를 어느정도 익혀야 사용이 편리하다.



Reference)

시작하세요! 도커 / 쿠버네티스

This post is licensed under CC BY 4.0 by the author.

시작하세요! 도커 / 쿠버네티스 2장 도커 엔진 - 1. 도커 컨테이너

메인 컨테이너 종료 시 사이드카 컨테이너 종료하기