docker Swarm networks
ネットワークセグメントの競合の問題解決策
検索結果には、Docker Ingressネットワークデフォルトの Subnet範囲のためのソリューション:
-
まず、現在のDocker Ingressネットワークのデフォルト範囲を確認する必要があります。次のコマンドを使用して、ネットワーク設定情報:
docker network inspect ingress[1] を確認することができます。 -
サブネットスコープとコンピュータのサブネット範囲が競合する場合、Docker Ingressネットワークサブネット範囲を: 変更してみることもできます。
- :Docker Swarm コマンドラインオプションで、サブネット範囲を指定できます。初期化/Docker Swarm すれば、
--default-addr-poolオプションを使用してサブネットを割り当てることができます。例::docker swarm init --default-addr-pool 192.168.0.0/16[1] - 方法2:dockersのデーモン設定ファイル
daemon.jsonで子ネットワークエリアを割り当てます。您可以使用以下步骤进行操作:-
エッセイ/docker/daemon.json
(WindowsではC:\ProgramData\config\config\daemon.json)を開いてください。 -
添加以下内容到文件中:
{ "default-address-pools": [ {"base":"192.168.0.0/16","size":24} ] }192.168.0.0/16`をあなたの想定するすべての範囲で置き換えます。
-
ファイルを保存して変更を反映させるため、Docker サービスを再起動してください。Linuxでは、
sudo systemcl restart dockerコマンドを使用してDockerサービスを再起動できます。Windowsでは、Dockerデスクトップインターフェイスの「Troubleshoot」オプションを使用して、Docker Desktop[2]](https://support.hyperglance.com/knowledge/changing-the-default-docker-subnet )で再起動できます。
-
- :Docker Swarm コマンドラインオプションで、サブネット範囲を指定できます。初期化/Docker Swarm すれば、
Docker ネットワークサブネットの範囲を変更してもすでに実行されているコンテナやインターネット接続に影響する場合がありますのでご注意ください。重要なデータはバックアップを保証します。
Learn more:
- networking - How to change ip address range of docker swarm ingress network - Stack Overflow
- How to change the default docker subnet IP range
- Changing Docker 's default subnet IP range | cylab.be
宿ホストとコンテナが失敗しています
# 方式一:添加路由
# route add -net 192.168.1.0 netmask 255.255.255.0 gw 172.20.0.1 dev docker_gwbridge # dev 是用来指定网络接口的参数。它用于指定要添加路由的网络接口设备。
route add -net <容器IP网段> netmask <容器IP网段的子网掩码> gw <docker_gwbridge的网关IP> dev docker_gwbridge
## 查看路由
route -n
## 更多操作
# 端口转发问题(上面解决了路由的问题,若还有端口访问不通,则按下面方式解决)
# 查看nat转发的规则
iptables -t nat -nvL
# 添加nat转发规则(实现宿主机访问容器中未开放的端口(即docker run时未添加-p参数))
iptables -t nat -A DOCKER -p tcp -m tcp --dport 8088 -j DNAT --to-destination 10.0.0.2:8088
# 删除nat
## 查看规则编号
iptables -t nat -nL --line-number
## 删除编号
iptables -t nat -D DOCKER 4