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

Невозможно изменить / etc / hosts в контейнере докера с корневой файловой системой read_only

Я пытаюсь добавить строку в /etc/hosts файл с определенным IP и именем хоста. IP-адрес статический, а имя хоста можно получить из /etc/hostname.

Однако я хочу, чтобы моя корневая файловая система была доступна только для чтения.

Итак, я получаю следующую ошибку: /etc/hosts: Read-only file system

Когда я проверяю с mount это: ro.

Итак, я пытаюсь добавить /etc/hosts как emptydir, но это запрещено, так как /etc/hosts уже смонтирован с ошибкой: b'linux mounts: Duplicate mount point: /etc/hosts

Я тоже пытаюсь удалить /etc/hosts в файле докеров и связать его с другим файлом, но я получаю следующую ошибку: rm: cannot remove '/etc/hosts': Device or resource busy

Если я не смонтирую файловую систему как read_only, /etc/hosts не является rw, и я обычно могу внести изменения. Затем /etc/hosts не установлен как ro но rw. Итак, это значение наследуется.

Я использую манифест kubernetes или docker compose для развертывания образа контейнера, и я пришел к выводу, что мне нужно что-то вроде --add-host в docker, но динамически извлекаю имя хоста из / etc / hostname.

    In `docker-compose`:
    extra_hosts:
      - "hostname:127.0.1.1"

    In `kubernetes-yaml`:
    hostAliases:
      - ip: "127.0.1.1"
        hostnames:
        - "hostname"

Есть ли способ получить имя хоста в качестве переменной в docker-compose и yaml?

Есть ли другой способ обойти ro установленный /etc/hosts файл, когда система корневых файлов доступна только для чтения?