docker 또는 podman 볼륨 간에 데이터 전송

2843 단어 pythondockerdevops
로컬 파일 시스템과 컨테이너 볼륨 간에 데이터를 전송하기 위해 임시 컨테이너를 시작하는 경우가 많습니다. 또는 때때로, 볼륨 사이. 그리고 전체 과정이 약간 지루합니다. 임시 컨테이너를 시작하고, 볼륨을 마운트하고, 로컬 파일 시스템을 마운트하고, 마지막으로 데이터를 전송합니다.

그래서 이것을 쉽게 만드는 파이썬 스크립트를 만들었습니다. 나는 그것을 cvcp - 컨테이너 볼륨 cp(사본)라고 부릅니다. 그러나 실제로는 cp를 사용하지 않습니다. 데이터 전송에 rsync를 사용합니다. 따라서 rsync가 설치된 컨테이너 이미지가 필요합니다.

https://github.com/jeet-parekh/cvcp 에서 스크립트를 찾을 수 있습니다. 저장소에는 Dockerfile가 설치된 이미지를 빌드하는 rsync도 포함되어 있습니다.


cvcp 사용



리포지토리에서 파일cvcp을 다운로드하고 원하는 경로에 넣습니다. 나는 ~/bin 를 선호한다.

그런 다음 cvcp를 사용하려면 다음을 수행하십시오.

cvcp SOURCE DESTINATION


컨테이너 볼륨 내부의 경로는 <volume_name>:<path_inside_volume> 로 작성해야 합니다.
SOURCE 또는 DESTINATION는 로컬 경로 또는 컨테이너 볼륨 내부의 경로일 수 있습니다. 그러나 SOURCEDESTINATION 모두 로컬 경로가 될 수 없습니다.

옵션 없이 cvcp를 사용하면 Docker Hub에서 rsync 이미지를 가져오고 루트가 있는 docker( sudo docker )를 사용합니다.

다음 명령줄 옵션을 사용하여 동작을 사용자 지정할 수 있습니다.
  • --docker--podman
  • 사용할 컨테이너 엔진입니다.
  • 기본값은 docker 입니다.


  • --rootless
  • 루트 없이 컨테이너 엔진을 사용합니다( sudo 없이).


  • --image
  • 사용할 컨테이너 이미지입니다.
  • 이미지에 rsync가 설치되어 있어야 합니다. 자세한 내용은 다음 섹션을 읽으십시오.


  • --rsync-opts
  • rsync에 전달할 옵션.
  • 모든 옵션을 시작 부분에 공백이 있는 따옴표 붙은 문자열로 전달해야 합니다. 예를 들어 ' --verbose' .
  • 이 옵션을 사용하면 rsync 에서 사용하는 기본cvcp 옵션이 지워지므로 필요한 모든 옵션을 전달해야 합니다.
  • 기본 옵션은 ' -a --progress' 입니다.


  • --no-exec
  • 명령을 인쇄하고 종료합니다.




  • 사용자 정의 이미지 사용


    cvcp 와 함께 사용자 정의 이미지를 사용하려면 --image 인수를 사용하십시오.
    cvcp가 사용하는 기본 이미지를 영구적으로 변경하려면 cvcp 스크립트 파일에서 다음 행을 변경하십시오.

    RSYNC_IMAGE = "image_name"
    


    사용자 정의 이미지에 rsync가 설치되어 있어야 합니다. 동일한 리포지토리 내의 Dockerfile을 기반으로 사용하여 이미지를 빌드할 수 있습니다.

    # docker
    sudo docker build -t localhost/rsync .
    
    # podman
    podman build -t localhost/rsync .
    

    좋은 웹페이지 즐겨찾기