Назад | Перейти на главную страницу

Невозможно записать в файл / 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 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

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

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

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