복합 Docker 진입점?

복합 Docker 진입점?

Duplicity를 사용하여 도커 볼륨을 다른 도커 볼륨의 특정 디렉터리에 백업해야 합니다. 따라서 백업을 수행하는 컨테이너에서 다음과 같은 명령을 실행해야 합니다.

mkdir -p /backup/$backup-label
duplicity /target file:///backup/$backup-label

/target그래서 위의 명령을 실행하고 백업할 볼륨을 백업을 저장할 볼륨에 매핑할 수 있도록 이중성이 포함된 도커 이미지를 만들었습니다 /backup.

그래서 제 질문은 $backup-label을 명령에 어떻게 전달 run하고 위에서 언급한 이중성을 실행하기 전에 올바른 디렉터리 구조가 존재하는지 확인하기 위해 진입점을 어떻게 생성합니까?입니다.

티아, 올레

PS 컨테이너를 다음과 같이 실행할 수 있다면:

ole@MKI:~$ docker run --rm -it -v data-volume:/target -v backup-volume/label-for-backup:/backup duplicity-backup-image

그게 다야. 그러나 분명히 docker는 볼륨 내의 하위 디렉터리 매핑을 허용하지 않습니다. 시도하면 다음 메시지가 나타납니다.

docker: Error response from daemon: create backup-volume/label-for-backup: "backup-volume/label-for-backup" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed.

답변1

좋은 해결책은 쉘 스크립트를 CMD또는 로 사용하는 것입니다 ENTRYPOINT.

변수를 스크립트에 전달하려면 -e를 사용하여 환경 변수를 스크립트에 전달할 수 있습니다 docker run -e backup-label=somelabel. 이 옵션의 장점은 매개변수를 해석하지 않고도 개별 영역을 구성할 수 있다는 것입니다. 나는 당신도 그것을 연구하는 것이 좋습니다${variable:-}통사론.

귀하의 경우:docker run --rm -e backup-label=somelabel -it -v data-volume:/target -v backup-volume/label-for-backup:/backup duplicity-backup-image

쉘 스크립트(실행 가능한지 확인):

#!/bin/sh 
mkdir -p /backup/$backup-label
duplicity /target file:///backup/$backup-label

(이것다른 답변귀하의 사용 사례에 더 우아한 솔루션이 될 수 있습니다. 하지만 이 질문은 약간 다르며 답변도 마찬가지입니다. 참고로. 또한 귀하의 요구사항이 더욱 복잡해져야 할 것 같습니다...)

관련 정보