docker網(wǎng)絡(luò),docker-compose?network問題
docker網(wǎng)絡(luò),docker-compose network
單機(jī)橋接網(wǎng)絡(luò),bridge(Linux)、nat(Windows)
特點:
1.只能在單個docker主機(jī)上運行,并且只能與所在docker主機(jī)上的容器進(jìn)行連接。
2.橋接意味著這是802.1.d橋接的一種實現(xiàn)(二層交換機(jī))
Linux主機(jī)上:
docker網(wǎng)絡(luò)由bridge驅(qū)動創(chuàng)建,而bridge底層是基于Linux內(nèi)核中久經(jīng)考驗達(dá)15年的Linux bridge技術(shù)。
默認(rèn)的“bridge”網(wǎng)絡(luò)被映射到內(nèi)核中為“docker0”的Linux網(wǎng)橋。
本地系統(tǒng)中存在的網(wǎng)橋如下圖(需要安裝bridge-utils):
docker0對應(yīng)docker中默認(rèn)網(wǎng)橋bridge;
網(wǎng)橋未開啟STP,并且有容器內(nèi)部的網(wǎng)橋借口設(shè)備接入對應(yīng)網(wǎng)橋(網(wǎng)橋?qū)?yīng)的interfaces下有關(guān)聯(lián)容器網(wǎng)絡(luò)借口網(wǎng)絡(luò))
調(diào)整思緒,未完待續(xù)。。。。。。
docker-compose 網(wǎng)絡(luò)
networks: my_network: #網(wǎng)絡(luò)名稱 driver: bridge #橋接模式 attachable:true #允許獨立的網(wǎng)絡(luò)連接到該網(wǎng)絡(luò)上 persist: #網(wǎng)絡(luò)名稱 external: #使用已存在的網(wǎng)絡(luò) name: bridge2 #已創(chuàng)建的網(wǎng)絡(luò)名
docker-compose network名稱定義
docker-compose啟動的網(wǎng)絡(luò)名稱:
1、沒有自定義網(wǎng)絡(luò)名
$ cat docker-compose.yaml version: '2' services: zookeeper1: image: zookeeper container_name: zookeeper1 environment: - ZOO_MY_ID=1 - ZOO_SERVERS=server.1=zookeeper1:2888:3888
實際使用的網(wǎng)絡(luò)是:<當(dāng)前路徑名_default>,如果<當(dāng)前路徑名>太長,會截取前綴部分。
例如當(dāng)然目錄名為testdocker,那么最終生產(chǎn)的網(wǎng)絡(luò)名為:testdocker_default
$ docker network ls abf87f64de25 testdocker_default bridge local
2、定義后綴
$ cat docker-compose.yaml version: '2' networks: byfn: services: zookeeper1: image: zookeeper container_name: zookeeper1 environment: - ZOO_MY_ID=1 - ZOO_SERVERS=server.1=zookeeper1:2888:3888 networks: - byfn
定義網(wǎng)絡(luò)名為byfn,那么最終生產(chǎn)的網(wǎng)絡(luò)名為:<當(dāng)前路徑名_byfn>。
相對于之前沒有定義的時候,把default替換成了定義的網(wǎng)絡(luò)名,同樣還是使用路徑名作為前綴。
$ docker network ls abf87f64de25 testdocker_byfn bridge local
3、定義前綴
當(dāng)然使用路徑名作為網(wǎng)絡(luò)名是很不友好的,docker-compose使用環(huán)境變量來取代路徑名。
設(shè)置環(huán)境變量:COMPOSE_PROJECT_NAME
$ cat .env COMPOSE_PROJECT_NAME=aaa
這時網(wǎng)絡(luò)名如下:
$ docker network ls 967ef0d41dd6 aaa_byfn bridge local
所以,docker-compose的網(wǎng)絡(luò)名的規(guī)則是:<COMPOSE_PROJECT_NAME>_<NETWORKS>
1、如果NETWORKS沒有定義,那么就是default。
2、如果COMPOSE_PROJECT_NAME,那么就是當(dāng)前路徑名(取前綴)。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
docker-compose 配置spring環(huán)境的方法步驟
這篇文章主要介紹了docker-compose 配置spring環(huán)境的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11Mac上將brew安裝的MySql改用Docker執(zhí)行操作過程
本文分步驟給大家介紹Mac上將brew安裝的MySql改用Docker執(zhí)行操作過程的知識,本文給大家介紹的非常詳細(xì),具有參考借鑒價值,感興趣的朋友一起看看吧2016-11-11Docker之自定義網(wǎng)絡(luò)實現(xiàn)
大家好,本篇文章主要講的是Docker之自定義網(wǎng)絡(luò)實現(xiàn),感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12使用Docker部署openGauss國產(chǎn)數(shù)據(jù)庫的操作方法
openGauss是一款支持SQL2003標(biāo)準(zhǔn)語法,支持主備部署的高可用關(guān)系型數(shù)據(jù)庫,這篇文章主要介紹了使用Docker部署openGauss國產(chǎn)數(shù)據(jù)庫,需要的朋友可以參考下2022-10-10使用Docker compose啟動自定義jar包的步驟詳解
這篇文章主要介紹了使用Docker compose啟動自定義jar包的步驟,首先我們需要編寫一個docker-compose.yml文件來定義我們的服務(wù)傳到我們的云服務(wù)器上,本文給大家分享示例代碼,感興趣的朋友一起看看吧2024-03-03Prometheus 整合 AlertManager的教程詳解
Alertmanager 主要用于接收 Prometheus 發(fā)送的告警信息,它很容易做到告警信息的去重,降噪,分組,策略路由,是一款前衛(wèi)的告警通知系統(tǒng)。這篇文章主要介紹了Prometheus 整合 AlertManager的教程 ,需要的朋友可以參考下2019-07-07