Могу ли я создать Docker-контейнер из Dockerfile интерактивным способом с выделением некоторого псевдо-TTY?

Могу ли я создать Docker-контейнер из Dockerfile интерактивным способом с выделением некоторого псевдо-TTY?

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

Связанный контент