文章背景:
我们在局域网中使用Docker,最常遇到的一个困惑,就是有时候跨网段结果出现网络不通。原因是因为Docker默认生成的网关和我们的局域网网段有时候是冲突的,比如在172.16网段的机器上部署Docker,结果生成的docker0网桥是172.17网段,那么就和真实环境中使用该网段的机器冲突了(即ping不通172.17网段的机器)。
(推荐教程:docker教程)
为了避免冲突,首先想到的是改网关,举例如下(以Centos为例):
service docker stop # 删除docker防火墙过滤规则 iptables -t nat -F POSTROUTING # 删除docker默认网关配置 ip link set dev docker0 down ip addr del 172.17.0.1/16 dev docker0 # 增加新的docker网关配置 ip addr add 192.168.2.1/24 dev docker0 ip link set dev docker0 up # 检测是否配置成功,如果输出信息中有 192.168.5.1,则表明成功 ip addr show docker0 service docker start # 验证docker防火墙过滤规则
这么改完,是否就可靠了?答案是否定的,因为docker重启后,可能还是会重建docker0,覆盖我们所做的修改。说明Docker的IP规则就是写死的,不让我们随便更改。但我们就换个思路,直接干掉docker0,重建一个新的网桥:
首先需要安装网桥创建工具brctl:
sudo yum install -y bridge-utils
开始创建操作:
# 1.停止 Docker 服务 service docker stop # 2.创建新的网桥(新的网段) brctl addbr bridge0 ip addr add 192.168.2.1/24 dev bridge0 ip link set dev bridge0 up # 3.确认网桥信息 ip addr show bridge0 # 4.修改配置文件 /etc/docker/daemon.json(如不存在则创建一个 touch daemon.json),使Docker启动时使用自定义网桥 { "bridge": "bridge0" } # 5.重启 Docker service docker start # 确认 NAT 网络路由 iptables -t nat -L -n # 6.删除不再使用的网桥 ip link set dev docker0 down brctl delbr docker0 iptables -t nat -F POSTROUTING
关于第4步所做的修改配置,就是引用新的网桥,其实还可以在docker配置文件中引用新的网桥:
echo 'DOCKER_OPTS="-b=bridge0"' >> /etc/sysconfig/docker sudo service docker start
但是不代表我们一定能看到docker自定义配置文件,如果没有default/docker或sysconfig/docker,比较麻烦,解决方法如下:
$ vi /lib/systemd/system/docker.service #添加一行 $ EnvironmentFile=-/etc/default/docker 或者 $ EnvironmentFile=-/etc/sysconfig/docker #-代表ignore error #并修改 $ ExecStart=/usr/bin/docker daemon -H fd:// #改成 $ ExecStart=/usr/bin/docker daemon -H fd:// $DOCKER_OPTS #这样才能使用/etc/default/docker里定义的DOCKER_OPTS参数 $ systemctl daemon-reload 重载 $ sudo service docker restart
完成了bridge0的创建和从docker0过度到bridge0,那么我们就可以route一下,以确认是否有我们不想看到的172.17网段:
只要没有,那么我们就不但心和172.17网段的机器连通了。如果还有,那么再用 ip addr del 172.17.0.1/16 dev docker0,直到清除完毕(因为已经建立新的docker网桥,所以删除旧的不会影响docker使用)。
如果重启机器后brctl所创建的网桥可能丢失,那么我们可以将以下命令写到linux自启动脚本中,每次重启的时候执行一遍:
brctl addbr bridge0 ip addr add 192.168.2.1/24 dev bridge0 ip link set dev bridge0 up
自启动脚本可以通过在/etc/rc.local文件中添加可执行语句(如 sh /opt/script.sh &)。这样基本上每次重启机器后,也能保证bridge0被创建,确保docker服务正常启动。
另外:如果只是为了解决IP网段冲突,又不愿意操作以上复杂的过程,其实也可以只改/etc/docker/daemon.json,通过添加内容 "bip": "ip/netmask",来实现docker0网桥的网段变更,如下:
[root@iZ2ze278r1bks3c1m6jdznZ ~]# cat /etc/docker/daemon.json { "bip":"192.168.2.1/24" }
Atas ialah kandungan terperinci 修改docker默认网关. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kaedah memasang dan menggunakan Docker di Ubuntu, Centos, dan Debian adalah berbeza. 1) Ubuntu: Gunakan Pengurus Pakej APT, perintah itu adalah sudoapt-getupdate && sudoapt-getinstalldocker.io. 2) Centos: Gunakan Pengurus Pakej Yum dan anda perlu menambah repositori Docker. Perintah itu adalah Sudoyumininstall-yyum-utils && sudoyum-config-manager --add-repohttps: //download.docker.com/lin

Menggunakan Docker di Linux dapat meningkatkan kecekapan pembangunan dan memudahkan penggunaan aplikasi. 1) Tarik Ubuntu Imej: dockerpullubuntu. 2) Jalankan Ubuntu Container: Dockerrun-itubuntu/bin/bash. 3) Buat dockerfile yang mengandungi nginx: fromubuntu; runapt-getupdate && apt-getinstall-ynginx; dedoman80. 4) Bina imej: dockerbuild-tmy-nginx. 5) Jalankan bekas: Dockerrun-D-P8080: 80

Docker memudahkan penggunaan aplikasi dan pengurusan di Linux. 1) Docker adalah platform kontena yang membungkus aplikasi dan kebergantungan mereka ke dalam bekas ringan dan mudah alih. 2) Pada Linux, Docker menggunakan cgroup dan ruang nama untuk melaksanakan pengasingan kontena dan pengurusan sumber. 3) Penggunaan asas termasuk menarik imej dan bekas yang berjalan. Penggunaan lanjutan seperti DockerCompose boleh menentukan aplikasi multi-kontainer. 4) Debug biasa digunakan dockerlogs dan arahan dockerexec. 5) Pengoptimuman prestasi dapat mengurangkan saiz imej melalui pembinaan pelbagai peringkat, dan menjaga mudah dockerfile adalah amalan terbaik.

Docker adalah alat berasaskan teknologi kontena Linux yang digunakan untuk membungkus, mengedarkan dan menjalankan aplikasi untuk meningkatkan mudah alih aplikasi dan skalabiliti. 1) Perintah DockerBuild dan Dockerrun boleh digunakan untuk membina dan menjalankan bekas Docker. 2) DockerCompose digunakan untuk menentukan dan menjalankan aplikasi Docker Multi-Container untuk memudahkan pengurusan microservice. 3) Menggunakan pembinaan pelbagai peringkat dapat mengoptimumkan saiz imej dan meningkatkan kelajuan permulaan aplikasi. 4) Melihat log kontena adalah cara yang berkesan untuk masalah kontena debug.

Docker Container Startup Langkah: Tarik Imej Bekas: Run "Docker Pull [Mirror Name]". Buat bekas: Gunakan "Docker Buat [Pilihan] [Nama Mirror] [Perintah dan Parameter]". Mulakan bekas: Jalankan "Docker Start [Nama Container atau ID]". Semak Status Kontena: Sahkan bahawa bekas sedang berjalan dengan "Docker PS".

Kaedah untuk melihat log Docker termasuk: Menggunakan arahan Log Docker, contohnya: Log Docker Container_Name Gunakan arahan docker exec untuk menjalankan /bin /sh dan lihat fail log, contohnya: docker exec -it container_name /bin /sh; Cat /var/log/container_name.log Gunakan arahan log docker-compose compose, contohnya: docker-compose -f docker-com

Anda boleh menanyakan nama kontena Docker dengan mengikuti langkah -langkah: Senaraikan semua bekas (Docker PS). Tapis senarai kontena (menggunakan arahan grep). Mendapat nama kontena (terletak di lajur "Nama").

Buat bekas di Docker: 1. Tarik Imej: Docker Pull [Nama Cermin] 2. Buat bekas: Docker Run [Options] [Mirror Name] [Command] 3. Mulailah bekas: Docker Start [Nama Container]


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Dreamweaver Mac版
Alat pembangunan web visual

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.