Ubuntuサーバー(23.04)でAdGuard Homeを実行し、ルーターをサーバーに接続してネットワークなどの広告をブロックしたいです。しかし、ポートに関して様々な問題が発生する。特にポート53、67、68です。
これはdocker-compose.yml
私が書いたものです(しかしpodman
代わりにを使用しますdocker
):
version: "3.4"
services:
adguardhome:
image: "adguard/adguardhome"
container_name: "adguardhome"
restart: "unless-stopped"
cap_add:
- NET_ADMIN
ports:
- "53:53/tcp"
- "53:53/udp"
- "67:67/udp"
- "68:68/udp"
- "80:80/tcp"
- "443:443/tcp"
- "443:443/udp"
- "3000:3000/tcp"
- "853:853/tcp"
- "853:853/udp"
- "784:784/udp"
- "8853:8853/udp"
- "5443:5443/tcp"
- "5443:5443/udp"
volumes:
- "./work:/opt/adguardhome/work"
- "./conf:/opt/adguardhome/conf"
コマンドを実行しましたが、sudo podman-compose up -d
ポート53がバインドされていると文句を言いました。だから、次の手順を実行しました。
私が試したこと:
公式Docker Hubの指示に従ってください。のための
systemd-resolved
。sudo lsof -i :53
ディスプレイを実行すると、systemd-resolved
ポートを占有しなくなりますが、libvirt-dnsmasq
占有します。
sudo virsh net-edit default
行を実行して追加して設定を編集します<dns enable=no />
。sudo lsof -i :53
何も返しませんsudo netstat -tuln | grep 53
。- コマンドを再実行してください
sudo podman-compose up -d
。ポート 67 がバインドされていると表示されます。
実行中の
sudo lsof -i :67
ディスプレイlibvirt-dnsmasq
ポートはまだ使用中です。- 無効にする方法の便利なリソースがオンラインで見つかりません。ほとんどのリソースがかなり古く、情報が最新ではないので(編集するように指示されたファイルの多くは単に存在しないなど)、ただ次の方法を使用しました。
sudo kill <pid>
- コマンドを再実行してください
sudo podman-compose up -d
。ポート 68 がバインドされていると表示されます。使用を確認するlsof
と、使用中であることがわかりps aux | grep <pid>
ました。systemd-networkd
- 無効にする方法の便利なリソースがオンラインで見つかりません。ほとんどのリソースがかなり古く、情報が最新ではないので(編集するように指示されたファイルの多くは単に存在しないなど)、ただ次の方法を使用しました。
network_mode: host
このファイルに追加すると、docker-compose
次の結果が生成されます。
['podman', '--version', '']
using podman version: 4.3.1
** excluding: set()
['podman', 'network', 'exists', 'adguardhome_default']
['podman', 'network', 'create', '--label', 'io.podman.compose.project=adguardhome', '--label', 'com.docker.compose.project=adguardhome', 'adguardhome_default']
['podman', 'network', 'exists', 'adguardhome_default']
podman run --name=adguardhome -d --label io.podman.compose.config-hash=123 --label io.podman.compose.project=adguardhome --label io.podman.compose.version=0.0.1 --label com.docker.compose.project=adguardhome --label com.docker.compose.project.working_dir=/home/tester/containers/adguardhome --label com.docker.compose.project.config_files=docker-compose.yml --label com.docker.compose.container-number=1 --label com.docker.compose.service=adguardhome --network host --cap-add NET_ADMIN -v /home/tester/containers/adguardhome/work:/opt/adguardhome/work -v /home/tester/containers/adguardhome/conf:/opt/adguardhome/conf --net adguardhome_default --network-alias adguardhome -p 53:53/tcp -p 53:53/udp -p 67:67/udp -p 68:68/udp -p 80:80/tcp -p 443:443/tcp -p 443:443/udp -p 3000:3000/tcp -p 853:853/tcp -p 853:853/udp -p 784:784/udp -p 8853:8853/udp -p 5443:5443/tcp -p 5443:5443/udp --restart unless-stopped adguard/adguardhome
Error: cannot set multiple networks without bridge network mode, selected mode host: invalid argument
exit code: 125
podman start adguardhome
Error: no container with name or ID "adguardhome" found: no such container
exit code: 125
私は迷っています。何をすべきか、なぜ仕事がこのように起こるのかは本当にわかりません。もちろん、AGHが機能するようにシステムのすべてを無効にすることはできません。
- うまくいけば、
network_mode: host
私のユースケースに欠点があります(他のコンテナからコンテナにアクセスできないことに加えて)。 127.0.0.1:
ポートの前に追加しても問題が発生しないことがわかりました。これは可能な回避策ですか?これに欠点はありますか?