programing

도커 추가 대 볼륨

mailnote 2023. 7. 30. 18:00
반응형

도커 추가 대 볼륨

언제 서 사용해야 .ADD그리고.VOLUME제가 생각하는 두 가지는 다음과 같습니다.

더하다

빌드 시 이미지에 파일을 복사합니다.이미지에는 모든 파일이 있으므로 쉽게 배포할 수 있습니다.반면에, 매번 빌드해야 하는 것은 개발자가 컨테이너를 다시 빌드하기 위해 명령을 실행해야 하기 때문에 개발에 있어 좋은 생각처럼 보이지 않습니다. 또한 컨테이너를 빌드하는 데 시간이 많이 걸릴 수 있습니다.

용량

▁using를 사용하는 으로 이해했습니다.docker run -v컨테이너 안에 호스트 폴더를 마운트할 수 있습니다. 이렇게 하면 파일을 쉽게 수정하고 컨테이너에 있는 앱이 변경 사항에 반응하는 것을 볼 수 있습니다.개발 과정에서는 훌륭해 보이지만 파일을 이런 식으로 배포하는 방법을 잘 모르겠습니다.

더하다

이 둘의 근본적인 차이점은ADD폴더든 파일이든 추가하는 모든 항목을 이미지의 일부로 만듭니다.나중에 만든 이미지를 사용하는 사람은 누구나 원하는 것에 액세스할 수 있습니다.ADD하고 도커는 레이어에서 작업하기 입니다.ADD레이어가 이미지의 일부로 여전히 존재합니다.은 단지 명히말자면하, 만너분.ADD을 만들 수 절대 그럴 수 없습니다.ADD

사용하고자 하는 몇 가지 사례ADD:

  • 파일에서 하려는 Docker 입니다.Docker 파일에서 참조하여 설치하려는 txt 파일입니다.그러면 다음을 수행할 수 있습니다.ADD ./requirements.txt /requirements.txt에 뒤에RUN pip install -r /requirements.txt
  • 예를 들어, 이미지에서 앱 디렉터리를 작업 디렉터리로 설정하고 컨테이너의 기본 명령을 실제로 실행하여 앱을 실행하려면 다음 작업을 수행할 수 있습니다.

    ADD ./ /usr/local/git/my_app

    WORKDIR /usr/local/git/my_app

    CMD python ./main.py

용량

반면에 Volume은 이미지에서 실행되는 컨테이너가 해당 컨테이너가 실행 중인 로컬 컴퓨터의 일부 경로에 액세스할 수 있도록 합니다.도커 파일의 디렉터리에 있는 파일은 사용할 수 없습니다.볼륨 디렉터리의 모든 항목은 빌드 시에는 액세스할없지만 런타임에는 액세스할있습니다.

사용하고자 하는 몇 가지 사례VOLUME:

  • 은 컨이너서중앱로다에 로그를 ./var/log/my_app이러한 로그를 호스트 시스템에서 액세스할 수 있도록 하고 컨테이너를 제거할 때 삭제하지 않도록 합니다.다음 위치에 마운트 지점을 생성하여 이 작업을 수행할 수 있습니다./var/log/my_appVOLUME /var/log/my_app Docker로 합니다.docker run -v /host/log/dir/my_app:/var/log/my_app some_repo/some_image:some_tag
  • 컨테이너에 있는 앱이 액세스할 수 있도록 하려는 일부 로컬 설정 파일이 있습니다.이러한 설정 파일은 로컬 시스템과 개발 및 운영 환경에서 서로 다를 수 있습니다.특히 이러한 설정 파일이 비밀인 경우에는 이미지에 해당 파일이 포함되지 않도록 해야 합니다.그런 경우에 좋은 전략은 다음과 같은 것을 추가하는 것입니다.VOLUME /etc/settings/my_app_settings에 Docker 파일실행다합으로 합니다.docker run -v /host/settings/dir:/etc/settings/my_app_settings some_repo/some_image:some_tag앱이 실행될 것으로 예상되는 모든 환경에 /host/sys/sys가 있는지 확인합니다.

VOLUME명령은 런타임에 Docker 컨테이너에 데이터 볼륨을 만듭니다.인로제공디니다입에 입니다.VOLUMEUnion File System을 바이패스하는 디렉터리로, 주로 영구 및 공유 데이터에 사용됩니다.

실행하는 경우docker inspect <your-container>당신은 아래를 보게 될 것입니다.Mounts다▁a 섹션이 .Source "는 " " " " 입니다.Destination컨테이너의 마운트된 디렉토리 위치를 나타냅니다.를 들면 를들면예,

"Mounts": [
  {
    "Name": "fac362...80535",
    "Source": "/var/lib/docker/volumes/fac362...80535/_data",
    "Destination": "/webapp",
    "Driver": "local",
    "Mode": "",
    "RW": true,
    "Propagation": ""
  }
]

3다지용사사다니례입▁▁use▁for 3가지 사용 사례가 .docker run -v:

  1. docker run -v /data은 이다음지것유는다니사합과정하을을 하는 합니다.VOLUMEDocker 파일의 지침을 참조하십시오.
  2. docker run -v $host_path:$container_path 이를통마수있다습니할을 탑재할 수 .$host_path호스트에서 호스트까지$container_path실행 중에 컨테이너에 저장됩니다.개발 단계에서 이 기능은 호스트의 소스 코드를 컨테이너와 공유하는 데 유용합니다.데할 수 ("DNS" )./etc/resolv.conf 이 들어 있습니다.). 또는 용기에 비밀이 들어 있습니다.반대로 이 기술을 사용하여 컨테이너의 로그를 호스트의 특정 폴더에 쓸 수도 있습니다.둘다요.$host_path그리고.$container_path절대 경로여야 합니다.
  3. docker run -v my_volume:$container_path됩니다.$container_path그리고 그것은 무엇입니까?my_volume으로 기적으볼만륨이들지것동다일니를 사용하여 볼륨을 을 지정하는 것과 .docker volume create my_volume이러한 볼륨의 이름을 지정하면 Flocker와 같은 다중 호스트 스토리지 드라이버를 사용하는 컨테이너 데이터 볼륨 및 공유 스토리지 볼륨에 유용합니다.

호스트 폴더를 데이터 볼륨으로 마운트하는 방법은 Docker 파일에서 사용할 수 없습니다.도커 문서를 인용하자면,

참고: 휴대성 및 공유 목적 때문에 도커 파일에서는 사용할 수 없습니다.호스트 디렉토리는 본질적으로 호스트에 종속되므로 Docker 파일에 지정된 호스트 디렉토리가 모든 호스트에서 작동하지 않을 수 있습니다.

이 아닌 하려면 이제환컨파복에일다사면사다있수용니습을 .ADD또는COPYDocker 파일의 지침을 참조하십시오.이것들은 제가 비개발 배포에 주로 사용하는 것들입니다.

언급URL : https://stackoverflow.com/questions/27735706/docker-add-vs-volume

반응형