Explication détaillée sur la façon d'ajouter manuellement un pont réseau avec Docker

Y2J
Libérer: 2017-05-24 14:25:06
original
4141 Les gens l'ont consulté

Cet article présente principalement comment ajouter un pont réseau personnalisé dans Docker. L'éditeur pense que c'est plutôt bien, je vais donc le partager avec vous maintenant et le donner comme référence. Suivons l'éditeur et jetons un coup d'œil.

Lorsque le processus du service Docker démarre, il générera un pont réseau nommé docker0. Le conteneur sera monté sur ce pont par défaut, mais nous pouvons ajouter des paramètres de démarrage de Docker en. en ajoutant -b Birdge ou modifiez le fichier dockerconfig pour choisir le pont à utiliser.

Système d'exploitation : centos7

Supprimer le pont docker0

service docker stop //关闭docker服务 
ip link set dev docker0 down //关闭docker0网桥  
ip link del dev docker0    //删除docker0网桥
Copier après la connexion

Paramètres de pont personnalisés (/etc/sysconfig/network-scripts/ iffichier cfg-br0)

DEVICE="br0" 
ONBOOT="yes" 
TYPE="Bridge" 
BOOTPROTO="static" 
IPADDR="10.10.10.20" 
NETMASK="255.255.255.0" 
GATEWAY="10.10.10.20" 
DEFROUTE="yes" 
NM_CONTROLLED="no"
Copier après la connexion

Redémarrer le service réseau

service network restart
Copier après la connexion

Afficher le pont réseau

[black@test opt]$ brctl show 
bridge name   bridge id        STP enabled   interfaces 
br0       8000.32e7297502be    no        
virbr0     8000.000000000000    yes
Copier après la connexion

Ensuite, nous devons redémarrer Pour démarrez Docker, vous pouvez utiliser les deux méthodes suivantes lors du démarrage du processus du service Docker :

La première méthode : le paramètre -b spécifie le pont

[root@test opt]# docker -d -b br0 
INFO[0000] Listening for HTTP on unix (/var/run/docker.sock)  
INFO[0000] [graphdriver] using prior storage driver "devicemapper"  
WARN[0000] Running modprobe bridge nf_nat failed with message: , error: exit status 1  
INFO[0000] Loading containers: start.           
...... 
INFO[0000] Loading containers: done.           
INFO[0000] Daemon has completed initialization      
INFO[0000] Docker daemon   commit=786b29d execdriver=native-0.2 graphdriver=devicemapper version=1.7.1
Copier après la connexion

Je ne Je ne sais pas pourquoi démarrer le processus du service Docker de cette manière bloquera le terminal actuel (︶︿︶), je dois donc rouvrir un terminal puis exécuter un conteneur

[root@test shell]# docker run -ti --rm centos:latest 
[root@3c6874559411 /]# ifconfig 
eth0   Link encap:Ethernet HWaddr 02:42:0A:0A:0A:01  
     inet addr:10.10.10.1 Bcast:0.0.0.0 Mask:255.255.255.0 
     inet6 addr: fe80::42:aff:fe0a:a01/64 Scope:Link 
     UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 
     RX packets:5 errors:0 dropped:0 overruns:0 frame:0 
     TX packets:6 errors:0 dropped:0 overruns:0 carrier:0 
     collisions:0 txqueuelen:0  
     RX bytes:418 (418.0 b) TX bytes:508 (508.0 b)
Copier après la connexion

Le conteneur utilise avec succès le br0 pont.

Deuxième : Modifier le fichier /etc/sysconfig/docker

J'ai rencontré un petit problème en faisant cette opération, j'ai modifié /etc/sysconfig/docker file

[root@test opt]# vi /etc/sysconfig/docker  
# /etc/sysconfig/docker 
# 
# Other arguments to pass to the docker daemon process 
# These will be parsed by the sysv initscript and appended 
# to the arguments list passed to docker -d 
 
other_args="-b br0"
Copier après la connexion

Ensuite, utilisez service docker start pour démarrer le service docker, mais other_args ne prend pas effet. Sous centos7, servicer docker start utilisera toujours la commande systemctl start docker.service pour s'exécuter, donc je viens de le faire. ouvrez /usr/lib/systemd/system/docker.service et vérifiez

[root@test opt]# vi /lib/systemd/system/docker.service  
[Unit] 
Description=Docker Application Container Engine 
Documentation=https://docs.docker.com 
After=network.target docker.socket 
Requires=docker.socket 
[Service] 
ExecStart=/usr/bin/docker -d -H fd:// 
MountFlags=slave 
LimitNOFILE=1048576 
LimitNPROC=1048576 
LimitCORE=infinity 
 
[Install] 
WantedBy=multi-user.target
Copier après la connexion

et constatez que l'élément ExecStart n'a aucun paramètre en cours d'exécution, je change donc ExecStart en /usr/bin/docker -d -b br0 - H fd://, exécutez le service docker, démarrez un conteneur et constatez que le pont br0 peut être utilisé avec succès.

J'ai vu une meilleure méthode sur Internet, remplacez docker.service par ce qui suit

[black@test ~]$ vi /usr/lib/systemd/system/docker.service  
[Unit] 
Description=Docker Application Container Engine 
Documentation=https://docs.docker.com 
After=network.target docker.socket 
Requires=docker.socket 
[Service] 
EnvironmentFile=-/etc/sysconfig/docker 
ExecStart=/usr/bin/docker -d $other_args -H fd:// 
MountFlags=slave 
LimitNOFILE=1048576 
LimitNPROC=1048576 
LimitCORE=infinity 
 
[Install] 
WantedBy=multi-user.target
Copier après la connexion

À ce stade, les paramètres ajoutés dans other_args seront efficaces.

[Recommandations associées]

1. Tutoriel vidéo gratuit MySQL

2 Explication détaillée de innodb_index_stats lors de l'importation de données. Erreur de conflit de clé primaire de la table d'invite

3. Que dois-je faire si des caractères tronqués apparaissent lors de la décompression de fichiers zip sous Linux ?

4. Vous apprendre à ajuster la taille de la partition sous Linux

5.Comment Linux détecte-t-il les conditions du réseau du serveur

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal