docker-container 이미지 만들기 - Docker에서 영구 저장소 (예 : 데이터베이스)를 다루는 방법





7 Answers

Docker 릴리스 v1.0 에서는 지정된 명령으로 호스트 시스템에서 파일 또는 디렉토리의 마운트를 바인딩 할 수 있습니다.

$ docker run -v /host:/container ...

위의 볼륨은 Docker를 실행하는 호스트의 영구 저장소로 사용할 수 있습니다.

docker docker-container

Docker 컨테이너의 영구 저장소를 어떻게 처리합니까?

나는 현재이 접근법을 사용하고있다 : 예를 들어, PostgreSQL을위한 이미지를 빌드하고 다음으로 컨테이너를 시작한다.

docker run --volumes-from c0dbc34fd631 -d app_name/postgres

IMHO, 단점이 있습니다. 절대로 "c0dbc34fd631"컨테이너를 (실수로) 삭제하면 안됩니다.

또 다른 개념은 호스트 볼륨 "-v"를 컨테이너에 마운트하는 것이지만, 컨테이너 내의 사용자 ID 가 반드시 호스트의 사용자 ID 와 일치하지는 않아 사용 권한이 엉망이 될 수 있습니다.

참고 : --volumes-from 'cryptic_id' of --volumes-from 'cryptic_id' 대신 --volumes-from my-data-container 에서 --volumes-from my-data-container 사용할 수 있습니다. 여기서 my-data-container 는 데이터 전용 컨테이너에 지정한 이름입니다 (예 : docker run --name my-data-container ... (수락 된 답변 참조)




Docker 1.9에서 선택한 답변의 업데이트 5에서 확실하지 않은 경우 특정 컨테이너와 연결하지 않고 존재할 수있는 볼륨을 만들 수 있으므로 "데이터 전용 컨테이너"패턴이 쓸모 없게됩니다.

Docker 1.9.0에서 폐기 된 데이터 전용 컨테이너를 참조하십시오 . # 17798

Docker 관리자는 데이터 전용 컨테이너 패턴이 약간의 디자인 냄새라고 생각하고 볼륨을 별도의 엔티티로 만들어 관련 컨테이너 없이도 존재할 수 있다고 생각했습니다.




Docker Compose를 사용할 때 이름이 지정된 볼륨을 연결하기 만하면됩니다 (예 :

version: '2'
services:
  db:
    image: mysql:5.6
    volumes:
      - db_data:/var/lib/mysql:rw
    environment:
      MYSQL_ROOT_PASSWORD: root
volumes:
  db_data:



자신의 볼륨을 주변으로 이동하려면 Flocker 도 살펴 Flocker 합니다.

README에서 :

Flocker는 데이터 볼륨 관리자 및 다중 호스트 Docker 클러스터 관리 도구입니다. 이를 통해 Linux에서 ZFS의 힘을 활용하여 무 상태 응용 프로그램에 사용하는 것과 동일한 도구를 사용하여 데이터를 제어 할 수 있습니다.

즉, 데이터베이스, 대기열 및 키 - 값 저장소를 Docker에서 실행하고 나머지 응용 프로그램만큼 쉽게 이동할 수 있습니다.




시나리오에 따라 다르지만 (프로덕션 환경에는 적합하지 않음) 여기에는 한 가지 방법이 있습니다.

MySQL 도커 컨테이너 만들기

이 요점은 데이터 지속성을 위해 호스트의 디렉토리를 사용하는 것입니다.




PostgreSQL 용 데이터를 유지하기 위해 호스트에서 미리 정의 된 디렉토리를 사용하고 있습니다. 또한 이렇게하면 기존 PostgreSQL 설치를 Docker 컨테이너로 쉽게 마이그레이션 할 수 있습니다. https://crondev.com/persistent-postgresql-inside-docker/




Docker 컨테이너 관리 및 스케줄링 도구 인 Kubernetes의 PVC (Persistent Volume Claim) 사용 :

영구 볼륨

이 목적을 위해 Kubernetes를 사용하면 다음과 같은 이점이 있습니다.

  • NFS 나 기타 스토리지와 같은 스토리지를 사용할 수 있으며 노드가 다운 된 경우에도 스토리지를 사용할 필요는 없습니다.
  • 또한 이러한 볼륨의 데이터는 컨테이너 자체가 파괴 된 후에도 유지되도록 구성 할 수 있으므로 필요할 경우 다른 컨테이너에서 회수 할 수 있습니다.



Related