无法使用只读根文件系统更改 docker 容器中的 /etc/hosts

无法使用只读根文件系统更改 docker 容器中的 /etc/hosts

我正在尝试在文件中添加一行,/etc/hosts其中包含特定的 IP 和主机名。IP 是静态的,主机名可从 中检索/etc/hostname

但是,我希望我的根文件系统是只读的。

因此我收到以下错误: /etc/hosts: Read-only file system

当我检查时mount它是:ro

因此,我尝试添加/etc/hostsemptydir但不允许,因为/etc/hosts已经安装并出现错误: b'linux mounts: Duplicate mount point: /etc/hosts

我还尝试/etc/hosts在 dockerfile 中删除它并将其符号链接到另一个文件,但出现以下错误: rm: cannot remove '/etc/hosts': Device or resource busy

如果我没有将文件系统挂载为只读,则/etc/hosts不是rw,我通常可以进行更改。然后,/etc/hosts不会将挂载为,ro而是rw。因此,此值是继承的。

我正在使用 kubernetes manifest 或 docker compose 来部署容器镜像,并且我得出结论,我需要类似 docker 中的 --add-host 之类的东西,但从 /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

相关内容