복합 Docker 진입점?

복합 Docker 진입점?

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

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

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

그래서 내 질문은 $backup-label을 명령에 전달하는 방법 run과 위에 표시된 이중성을 실행하기 전에 올바른 디렉터리 구조가 존재하는지 확인하기 위해 진입점을 어떻게 생성합니까?

티아, 올레

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

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

(그만큼다른 답변아마도 귀하의 사용 사례에 더 우아한 솔루션이 될 것입니다. 하지만 이 질문은 약간 다르며, 대답도 마찬가지입니다. 참고로. 또한 요구 사항이 더욱 복잡해지는 것처럼...)

관련 정보