의사 TTY를 할당하여 Dockerfile에서 Docker 컨테이너를 대화형으로 구축할 수 있나요?

의사 TTY를 할당하여 Dockerfile에서 Docker 컨테이너를 대화형으로 구축할 수 있나요?

다음 Dockerfile에서 컨테이너를 빌드합니다.

FROM ubuntu:14.04
...
RUN apt-get update && apt-get install -y vim
#RUN ssh-keygen -f /root/.ssh/id_rsa -N strongpass123$%^
RUN ssh-keygen -f /root/.ssh/id_rsa
...

ssh-keygen저는 이런 일을 거의 하지 않지만 of를 사용하기 전후에 많은 명령이 있습니다.

스크립트로 시작한 docker exec -it thirsty_darwin sh script.sh다음 이미지에 태그를 지정하고 컨테이너(이미지) 링크를 사용할 수 있다는 것을 알고 있지만 원하는 만큼 명확한 솔루션은 아닙니다.

최악의 시나리오는 ssh-add ~/.ssh/id_rsa의도한 도구를 사용해야 하는 경우입니다. Expect 도구가 내 비밀번호를 하드코딩했습니다. 나는하고 싶지 않다.

답변1

일반적으로 Docker 이미지에는 비밀을 포함하면 안 됩니다. 바라보다이 답변이 주제에 대한 추가 정보.

Docker는 대화형 빌드를 지원하지 않습니다.이번 호에 명시된 타당한 이유 때문에.

정말로 이 작업을 수행해야 하는 경우 docker commit다음과 같이 사용할 수 있습니다.

docker build -t thirsty_darwin_base /path/to/Dockerfile
docker run -it --name=thirsty_darwin_changes thirsty_darwin_base /bin/bash
# do interactive stuff in the shell, then exit
docker commit thirsty_darwin_changes thirsty_darwin

이제 thirsty_darwin상호 작용이 변경됩니다.

업데이트: Docker가 출시되었습니다.더욱 포괄적인 기밀 유지 관리이 답변을 쓴 이후로.

관련 정보