Невозможно записать файл /etc/hosts из Dockerfile с помощью RUN

Я делаю образ докера, используя довольно простой Dockerfile. Внутри Dockerfile у меня есть эта команда:

RUN printf "192.92.13.243 www.hahaha.com \n" >> /etc/hosts

Кажется, что с самой командой все в порядке, поскольку создание образа на этом этапе не останавливается.

Проблема заключается в следующем: при запуске образа строка, которая должна быть вставлена ​​в "/etc/hosts", отсутствует.

Теперь я искал и обнаружил, что до версии 1.2 докера, была проблема с файлом hosts внутри контейнеров. В моем случае я использую версию 1.5, самую последнюю на данный момент.

Я что-то пропустил?

ОБНОВЛЕНИЕ 1:

Похоже, что на страницах докера github есть много проблем, как открытых, так и закрытых.

2 ответа

Решение

После написания обновления на мой вопрос я решил еще раз внимательно взглянуть на "проблемы", открытые в github. Оказывается, обходной путь был реализован:

docker run ... --add-host='server:0.0.0.0' ...

Используя аргумент "--add-host..." при запуске контейнера, можно изменить файл hosts.

Это работает на Docker 1.7.0

RUN echo "192.168.11.112 myhost" >> /etc/hosts && wget http://myhost

Хитрость заключается в том, чтобы добавить имя хоста в той же строке, в которой вы его используете, иначе файл hosts будет сброшен, поскольку каждая команда RUN запускает новый промежуточный контейнер. Например, это не будет работать:

RUN echo "192.168.11.112 myhost" >> /etc/hosts
RUN wget http://myhost
Другие вопросы по тегам