
Я создаю контейнер из 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. Инструмент 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 выпустилболее комплексное управление секретамис тех пор, как был написан этот ответ.