Dockerコンテナを起動または停止するたびに、/run/systemd/resolve/resolv.conf
ホストシステム(Ubuntu 19.04)のファイルを上書きします。
# Generated by dhcpcd from enp30s0.dhcp
# /etc/resolv.conf.head can replace this line
nameserver 127.0.0.1
# /etc/resolv.conf.tail can replace this line
したがって、再起動するたびに、コンテナが起動または停止された後にresolv.confファイルを発行しnetplan generate
て変更する必要があります。netplan apply
ホストのresolv.confファイルの上昇を停止するようにdockerに指示するにはどうすればよいですか?
私のものネットワーク計画次のようになります。
# This file is generated from information provided by
# the datasource. Changes to it will not persist across an instance.
# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
renderer: networkd
ethernets:
enp30s0:
addresses:
- 10.0.10.20/24
dhcp4: no
gateway4: 10.0.10.1
nameservers:
addresses:
- 10.0.10.1
version: 2
私が実行したときsystemd-resolve --status
:
Global
LLMNR setting: no
MulticastDNS setting: no
DNSOverTLS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNS Servers: 10.0.10.1
これらは多様ですドッカーコンテナ私は持っています:
docker network create -d macvlan --subnet=10.0.10.0/24 --gateway=10.0.10.1 -o parent=enp30s0 macvlan-services-network
docker container create --name="pihole-kids" \
--volume /opt/docker/volumes/pihole-kids/etc/pihole:/etc/pihole \
--volume /opt/docker/volumes/pihole-kids/etc/dnsmasq.d:/etc/dnsmasq.d \
--volume /opt/docker/volumes/pihole-kids/var/log/pihole.log:/var/log/pihole.log \
--net macvlan-services-network \
--ip 10.0.10.21 \
--publish 53:53/tcp \
--publish 53:53/udp \
--publish 80:80 \
--publish 443:443 \
--dns=127.0.0.1 \
--dns=10.0.10.20 \
--add-host=restrict.youtube.com:216.239.38.120 \
--add-host=restrictmoderate.youtube.com:216.239.38.119 \
--add-host=forcesafesearch.google.com:216.239.38.120 \
--add-host=strict.bing.com:204.79.197.220 \
--add-host=safe.duckduckgo.com:34.243.144.154 \
--env IPv6=False \
--env ServerIP=10.0.10.21 \
--env TZ="America/Chicago" \
--restart=unless-stopped \
pihole/pihole:latest
docker container create --name="pihole" \
--volume /opt/docker/volumes/pihole/etc/pihole:/etc/pihole \
--volume /opt/docker/volumes/pihole/etc/dnsmasq.d:/etc/dnsmasq.d \
--volume /opt/docker/volumes/pihole/var/log/pihole.log:/var/log/pihole.log \
--net=host \
--env IPv6=False \
--env ServerIP=10.0.10.20 \
--env TZ="America/Chicago" \
--dns=127.0.0.1 \
--dns=10.0.10.1 \
--restart=unless-stopped \
pihole/pihole:latest
docker container create --name="emby-server" \
--network="host" \
--volume /opt/docker/volumes/emby/config:/config \
--volume /mnt/media:/mnt/media \
--device /dev/dri:/dev/dri \
--runtime=nvidia \
--publish 8096:8096 \
--publish 8920:8920 \
--env UID=997 \
--env GID=997 \
--env GIDLIST=1000 \
--env NVIDIA_VISIBLE_DEVICES=all \
--env NVIDIA_DRIVER_CAPABILITIES=compute,utility,video \
emby/embyserver:latest
docker container create --name="nzbhydra2" \
--volume /opt/docker/volumes/nzbhydra2/config:/config \
--volume /mnt/Downloads:/mnt/Downloads \
--volume /etc/localtime:/etc/localtime:ro \
--publish 5076:5076 \
--env UMASK=000 \
--env PUID=1004 \
--env PGID=1004 \
binhex/arch-nzbhydra2
docker container create --name="portainer" \
--volume /opt/docker/volumes/portainer/data:/data \
--volume /var/run/docker.sock:/var/run/docker.sock \
--publish 9000:9000 \
--restart=always \
portainer/portainer
答え1
気づいた!
ある時点で、dhcpcd
それは私のシステムにインストールされました。なぜか分からない。削除することを決定する前に、ファイルを編集して置き換えて/etc/dhcpcd.conf
変更があることを127.0.0.1
確認しました。再起動したら変わりましたね。削除して再起動しましたが、ネームサーバーは私のネットワークプランと一致します。10.0.10.1
/etc/resolv.conf
dhcpcd
apt purge dhcpcd5
これが同じ問題を持つ他の人にも役立つことを願っています。
答え2
ちょうど同様の問題を解決しました。 Dockerコンテナが展開されるたびに、DNS設定が古い設定に戻ります。
このファイルは/etc/resolv.conf
以下を指します。# This file is managed by man:systemd-resolved(8). Do not edit.
systemd-resolve --status
ネットワークアダプタでDNS設定エラーが検出され、設定ファイルで変更され、/etc/systemd/network
サービスが再起動されましたsystemctl restart systemd-networkd
。
dockerが停止/起動した後、すべてがうまく機能します。
答え3
回避策は、ホストからresolv.confマウントをバインドすることです。 ホストの resolv.conf に 127.0.0.11 が追加されていることを確認します。
ホストの /etc/resolv.conf に 127.0.0.11 を含め、この resolv.conf を docker compose ファイルの場所にコピーする場合にのみ、この回避策が機能することを確認してください。
ロール:
- ./resolv.conf:/etc/resolv.conf