ХОСТАЛИЯСЫ в образе докера не работаютLinux

Ответить Пред. темаСлед. тема
Anonymous
 ХОСТАЛИЯСЫ в образе докера не работают

Сообщение Anonymous »

Это мой файл Dockerfile (ограничен только важными вещами). Я пытаюсь использовать функцию HOSTALIASES для сопоставления kubernetes-server-dev с IP-адресом 167.11.11.11 . Я провел обширное исследование по этой теме, но это все еще не работает, и я понятия не имею, почему, но, вероятно, это что-то простое, и я просто не могу удержаться.

Код: Выделить всё

FROM ubuntu:latest

WORKDIR /bin

ENV HOSTALIASES="/home/worker/host_aliases"

RUN apt-get update
RUN apt-get install -y apt-transport-https ca-certificates curl gnupg wget inetutils-ping telnet

RUN adduser --disabled-login worker
USER worker

RUN touch /home/worker/host_aliases
RUN echo "kubernetes-server-dev 167.11.11.11" >> /home/worker/host_aliases
Что я пробовал?
  • В начале это было альпийское изображение , но я обнаружил, что Alpine использует musl вместо Glibc, поэтому HOSTALIASES здесь не будет работать. Итак, я попробовал несколько разных Debian (тонкий/стабильный) и последнюю версию Ubuntu, но все же смог заставить его работать.
  • Я также сделал несколько комбинаций в имени файла псевдонимов хоста на основе информации, которую я нашел в Интернете, например «не использовать . в имени файла».
  • Пробовал изменить порядок kubernetes-server-dev 167.11.11.11 на 167.11.11.11 kubernetes-server-dev — это не должно иметь значения, но тем не менее я попробовал.

    Я обнаружил, что существует проблема с разрешением имен для IP-адресов в imeges Docker, и было предложение использовать xip.io, например 167.11.11.11.xip.io kubernetes-server-dev, чтобы dns возвращал 167.11.11.11 — всё равно не получилось.
  • также прочтите, что некоторые инструменты игнорируют ХОСТАЛИЯСЫ, поэтому я пробовал разные, например, curl/ping/telnet/wget
  • каждый раз, когда я запускал контейнер, я проверяется, все ли переменные установлены правильно
Каждый раз возникают ошибки типа:

Код: Выделить всё

curl: (6) Could not resolve host: kubernetes-server-dev
ping: unknown host
Server lookup failure:  /kubernetes-server-dev:80, Name or service not known
Почему используется HOSTALIASES вместо параметра Docker --add-host kubernetes-server-dev:167.11.11.11 ?
Во-первых, добавление --add-host во время сборки не добавляет его навсегда (так что, когда я запускаю контейнер, он будет там), во-вторых, все начинается в gitlab runner , поэтому нет запуска Docker, куда я мог бы добавить этот параметр. Единственный вариант — добавить его в бегун, но это повлияет и на другие проекты (это последнее средство).
Единственное решение, которое действительно сработало, — это добавление на этапе развертывания before_script. такой раздел:

Код: Выделить всё

deploy-sth:
stage: deploy
tags:
- docker
image: $IMAGE_STH
before_script:
- echo "$STH_DEV_IP $STH_DEV_HOST" >> /etc/hosts
script: (...)
но для этого требуется root-доступ к образу, но из-за политики нашей компании встроенные образы Docker не могут быть запущены с правами root.
Также добавление в /etc/hosts< /code> во время сборки также невозможно, потому что docker не позволяет этого, и даже если бы он позволял, docker переопределяет этот файл при запуске образа.
Есть идеи? Буду признателен за любую помощь!

Подробнее здесь: https://stackoverflow.com/questions/788 ... ot-working
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Linux»