docker - 如何更改现有 docker 容器的 resolv.conf

标签 docker

我最近将我的 Ubuntu 上的 docker 版本升级到了最新的 1.9 版本。在升级期间,docker 网桥网关已从 172.17.42.1 更改为至 172.17.0.1 .

我有一些现有的容器,其中 resolv.conf 仍然指向 172.17.42.1所以每当我重新启动容器时,resolv.conf 都会重置为 172.17.42.1 .我试图修改 /var/lib/docker/containers/<containerid>/resolv.conf但是没有效果。

目前,每当我重新启动容器时,我都会连接到容器并更改 /etc/resolv.conf手动归档。容器重启期间,对该文件的更改将丢失。我不想杀死我的容器并再次重新创建它们。

有没有办法让我的 resolv.conf 对现有容器永久有效?

提前致谢 -凯萨夫

最佳答案

我正在构建经常改变主机网络的可移植系统,我找到的解决方案是将容器创建为主机,并将主机 resolv.conf 中的卷绑定(bind)到容器 resolv.conf,这主要是因为如果网络在容器发生变化时发生变化已经起来了就不更新了

这里是 docker-compose 服务声明的例子

  gpioctl:
    container_name: gpioctl
    image: registry.gitlab.com/absadevelopers/bluetoothgateway/bluetoothgateway_gpioctl
    network_mode: host
    volumes:
      - /var/log/knesys:/var/log/knesys
      - /etc/resolv.conf:/etc/resolv.conf:ro
    restart: unless-stopped
    depends_on:
      - nodesetup

关于docker - 如何更改现有 docker 容器的 resolv.conf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33947873/

相关文章:

docker - 有什么理由不在单个节点上使用 Docker Swarm(而不是 Docker-Compose)?

javascript - 用于本地 NodeJS 开发的 Docker

docker - 在 docker 容器中进行 dotnet 还原期间出现错误

docker-compose 无法运行两个容器

docker - 在Docker中模拟网络故障

docker - 用于 Web 应用程序 devops 的示例 docker compose 设置

.net - 如何从docker容器中的bash检查.net核心dll的版本

docker - 无法在 docker 容器中运行的远程 Jupyter 服务器上保存文件

docker - 以这种方式在 `docker kill --signal=SIGX` 上关闭在容器内运行的 go 应用程序是否安全?

docker - 如何在 docker 构建期间指定和使用证书文件