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