• toc {:toc}

학습 목표

  • 컨테이너 내부의 파일을 저장할 때 발생하는 문제
  • 컨테이너가 동작하는 물리적인 호스트 머신 안에 만들어지는 스토리지에 대해 학습한다.
  • 파일을 저장하는 컨테이너를 위한 옵션
    • volumes
    • bind mounts : 리눅스나 유닉스 운영체제에서 별도의 스토리지를 인식시킬 수 있도록 연결하는 기술
    • tmpfs mount (for Docker on Linux)
    • named pipe (for Docker on Windows)
    • volumes, bind mounts에 초점

Issues

  • 데이터는 컨테이너가 존재하지 않을 때 유지될 수 없다.

  • 컨테이너 안에도 가상의 디스크를 만들어서 붙일 수 있는데, 이를 writable layer라고 한다.

    • Writable layer를 사용할 경우 host machine과 연결되어 데이터를 옮기기 힘들다.
    • Writable layer는 스토리지를 관리하기 위한 드라이버 등으로 인해 성능이 감소한다.
  • 컨테이너 바깥에 저장공간을 만든다. - Volume, Bind mounts

  • Volumes

    • docker deamon이 호스트 컴퓨터의 스토리지 중 특정 영역을 도커의 공간으로 점유한 것.
    • 도커에 의해서 관리되는 호스트 파일 시스템의 한 부분에 저장된다.
    • 도커 프로세스가 아니라면 수정하지 않는 것이 좋다.
    • 도커에서 데이터를 유지하는 가장 좋은 방식이다.
    • 특성
      • 동시에 여러 컨테이너 안에 하나의 volume이 마운트될 수 있다.
      • volume을 사용한 컨테이너가 실행 중이지 않을 때도 여전히 도커에 사용 가능하다.
      • 자동적으로 삭제되지 않는다.
      • 리모트 호스트 혹은 클라우드 제공자에 내 데이터를 저장할 수 있다.
    • 용도
      • 컨테이너가 생성하여 컨테이너 본인이 사용하는 경우
      • 어딘가에 있는 데이터의 복사본을 가져와 저장하고 사용하는 경우
  • Bind mount

    • 호스트 컴퓨터의 하드디스크, ssd의 특정 위치를 개발자가 임의적으로 지목해 연결할 수 있도록 만든다.
    • 호스트 시스템의 스토리지 중 어디든 저장될 수 있다.
      • 도커 프로세스가 아니라도 수정할 수 있다.
    • 도커 명령에 의해 제어될 필요 없다.
    • 용도
      • 컨테이너가 실행되기 이전에 이미 생성된 자료에 접근할 수 있도록 해준다.
      • 컨테이너의 동작하는 과정을 통해 호스트 스토리지를 변경할 수 있기 때문에 민감한 파일에 접근할 수 있다.
  • tmpfs (for Docker on Linux)

    • 호스트 시스템의 메모리만 저장된다. 파일 시스템에 저장되지 않는다.
    • 컨테이너가 멈출 때 tmpfs 마운트는 제거되고 쓰인 파일들은 유지되지 않는다.
    • Volume, Bind Mount와의 차이
      • tmpfs는 일시적이고 호스트 메모리에만 저장된다.
      • 컨테이너 사이에 tmpfs를 공유할 수 없다.
  • named pipe (for Docker on Window)

  • Jenkins - CI/CD

  • Continuous Integration and Delivery server

  • 코드 작성을 마치고 깃허브에 올린 후 컴파일, 빌드, 테스트, 배포 등의 작업을 사람의 개입 없이 자동으로 수행하는 과정을 구현할 수 있다는 것을 의미한다.

  • 시간을 설정해서 배포하는 등 설정할 수 있다.

Docker Machine

  • Docker Machine
    • 가상 호스트에 도커 엔진을 설치할 수 있도록 하는 도구.
    • 도커 머신을 가상 호스트에 설치하고 호스트를 도커 머신 커멘드를 통해 다룬다.
    • 혹은 가상 머신을 만들고 도커를 설치해 사용할 수 있도록 해준다.
    • 용도
      • 오래된 데스크탑을 가지고 있고 맥이나 윈도우에서 도커를 실행하고 싶은 경우
      • 원격 시스템에 도커 호스트를 공급하고 싶은 경우
  • 도커 머신 커멘드를 통해 다음을 할 수 있다.
    • Start, inspect, stop, restart a managed host
    • Upgrade the Docker client & daemon
    • Configuare a Docker client to talk to your host