2014-11-10 2 views
-1

개인 GitHub 저장소 (빌드 타임에!)에서 몇 가지를 다운로드하는 Docker 컨테이너를 만들고 싶습니다. 이것은 SSH 키를 제공해야한다는 것을 의미하지만 컨테이너에 복사하는 것을 원하지 않습니다. 컨테이너에 액세스 할 수있는 모든 사람이 사용할 수 있기 때문입니다.키를 복사하지 않고 Docker 컨테이너 내에서 ssh 액세스를 활성화하려면 어떻게해야합니까?

나는이 문제를 어떻게 해결할 수 있습니까?

기본적으로 SSH 에이전트 포워딩과 같은 것을 찾고 있지만 컨테이너 런타임에서는 보이지 않지만 컨테이너를 만들 때를 찾고 있습니다.

힌트가 있습니까?

+2

먼저 파일을 다운로드 한 쉘 스크립트를 작성한 다음 이전에 다운로드 한 파일을 추가하는 Dockerfile을 사용하여 invoque docker 빌드를 작성하십시오. – gmuslera

답변

0

간단하고 안전한 방법은 git에서 호스트로 다운로드 한 다음 다운로드 한 파일을 호스트에서 컨테이너로 복사하는 것입니다. 필요한 키가 없습니다.

짧은 컨테이너 ID를 가져옵니다 :

docker ps 

전체 컨테이너 ID 가져 오기 : 파일을 통해

docker inspect -f '{{.Id}}' SHORT_CONTAINER_ID 

복사 (호스트에서) :

sudo cp path-file-host /var/lib/docker/aufs/mnt/FULL_CONTAINER_ID/PATH-NEW-FILE 
+0

호스트가 OS X이고, 컴파일해야하는 모듈이 있습니다 (OS X 바이너리! == 리눅스 바이너리). –

+0

호스트로 가져 와서 Dockerfile에 빌드하십시오. 'docker build'는 빌드 컨텍스트를 서버에 업로드합니다. Makefile을 사용합니까? 이것은'git clone $ (URL)./build/dep1'과'docker build '를하기 위해 디렉토리에서'make'를 실행하는 것처럼 간단하게 만들 수 있습니다. – sneak

-1

권장되는 방법을 이 작업은 Dockerfile을 repo의 루트에 추가하는 것입니다. 워크 스테이션에서 repo를 복제 한 다음 현재 디렉토리 (빌드 컨텍스트)를 docker 데몬으로 보내는 "docker build"를 수행하십시오.

내 Dockerfile (일반적으로 서버 내)에 복제본을 복제 할 필요가 거의 없습니다.

+0

"일반적으로 Dockerfile (서버의) 내에 private repos를 복제 할 필요가 거의 없습니다." ... 미안하지만, 이것은 아주 틀린 것입니다. –

+0

잠시 생각해 보면 내가 틀렸다면 당신의 질문에 큰 소리로 대답했을 것입니다. 당신이하고있는 일을 할 수있는 방법이 있습니다. 당신이하는 일은 그것을하는 방법이 아닙니다. – sneak

+0

여기서 논쟁을 시작하고 싶지는 않지만 개인 npm 패키지는 어떻게 처리합니까? 호스트에 설치 (잘못된 OS)하거나 소스 제어에 추가하는 옵션도 아닙니다 (Node.js의 모범 사례에 대한 것입니다). 기본적으로 패키지 관리자를 사용하여 설치되는 모든 개인 저작물에는 동일한 질문이 적용됩니다. 그리고 BTW : 아직 아무 대답도 없다는 사실은 유효한 대답이 없다는 것을 의미 할 수도 있습니다. 반드시 내가하려고하는 것이 잘못되었다는 것을 의미하지는 않습니다. –

관련 문제