docker容器參數(shù)LinkLocalIPv6Address和LinkLocalIPv6PrefixLen使用及說明
LinkLocalIPv6AddressLinkLocalIPv6PrefixLenLink-Local IPv6 Address
它們不是用戶可配置的參數(shù),而是 Docker 在創(chuàng)建容器時自動生成并暴露給用戶查詢的信息。
一、什么是 IPv6 鏈路本地地址(Link-Local Address)?
定義
- 鏈路本地地址 是 IPv6 中一種特殊地址類型,僅在同一物理/邏輯鏈路(如單個子網(wǎng))內(nèi)有效,不能被路由器轉(zhuǎn)發(fā)。
- 格式:fe80::/10(即前 10 位為 1111111010)
- 典型地址:fe80::42:acff:fe11:2233
作用
- 鄰居發(fā)現(xiàn)(Neighbor Discovery Protocol, NDP):替代 IPv4 的 ARP
- 無狀態(tài)地址自動配置(SLAAC)
- 路由器發(fā)現(xiàn)
- Docker 內(nèi)部通信(如容器間通過 MAC 地址通信)
所有啟用了 IPv6 的網(wǎng)絡(luò)接口必須有一個鏈路本地地址。
二、Docker 中的 LinkLocalIPv6Address 和 LinkLocalIPv6PrefixLen
2.1、 LinkLocalIPv6Address
- 含義:
Docker 為容器的虛擬網(wǎng)絡(luò)接口(如 eth0)分配的 IPv6 鏈路本地地址。
生成方式:
- 基于容器的 MAC 地址 自動生成(EUI-64 格式)
- 例如:MAC 02:42:ac:11:00:02 → IPv6 fe80::42:acff:fe11:2
特點:
- 每次容器重啟可能變化(如果 MAC 變化)
- 不可路由,僅用于同一 Docker 網(wǎng)絡(luò)內(nèi)的通信
2.2、 LinkLocalIPv6PrefixLen
- 含義:鏈路本地地址的前綴長度(Prefix Length)
- 固定值:64
- 原因:IPv6 鏈路本地地址標(biāo)準(zhǔn)規(guī)定使用 /64 子網(wǎng)
"LinkLocalIPv6Address": "fe80::42:acff:fe11:2233", "LinkLocalIPv6PrefixLen": 64
三、如何查看這兩個字段?
3.1、docker inspect
docker inspect <container-name> | grep -A5 LinkLocalIPv6
輸出示例:
"LinkLocalIPv6Address": "fe80::42:acff:fe11:2233", "LinkLocalIPv6PrefixLen": 64,
3.2、在容器內(nèi)部查看
docker exec -it <container> ip addr show eth0
輸出:
2: eth0@if3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500
inet6 fe80::42:acff:fe11:2233/64 scope link
四、重要注意事項
4.1、 僅當(dāng) Docker 啟用 IPv6 時存在
默認(rèn)情況下,Docker 不啟用 IPv6
需在 /etc/docker/daemon.json中開啟:
{
"ipv6": true,
"fixed-cidr-v6": "2001:db8:1::/64"
}
即使未配置全局 IPv6,鏈路本地地址仍會自動生成(因為它是 IPv6 基礎(chǔ)功能)
4.2.、不能用于跨主機(jī)通信
fe80::/10 地址不能跨路由器
容器只能用它和同一 Docker 網(wǎng)絡(luò)內(nèi)的其他容器通信
4.3、 不是用戶可配置項
你不能通過 docker run --link-local-ipv6 … 設(shè)置它
它由 Docker daemon 自動生成
4.4、與 --ipv6 參數(shù)無關(guān)
即使運(yùn)行容器時加了 --ipv6,這個地址也依然存在(只要內(nèi)核支持 IPv6)
五、實際用途
| 場景 | 說明 |
|---|---|
| 容器間底層通信 | Docker 內(nèi)部使用鏈路本地地址進(jìn)行 ARP 替代(NDP) |
| 調(diào)試網(wǎng)絡(luò)問題 | 通過 ping6 fe80::…%eth0 測試同網(wǎng)絡(luò)連通性 |
| 服務(wù)發(fā)現(xiàn)(高級) | 某些 P2P 協(xié)議使用鏈路本地地址做初始握手 |
六、FAQ
6.1、為什么我的容器沒有 LinkLocalIPv6Address?
原因:宿主機(jī)內(nèi)核禁用了 IPv6
解決:
# 檢查 cat /proc/sys/net/ipv6/conf/all/disable_ipv6 # 0=啟用, 1=禁用 # 啟用 echo 0 | sudo tee /proc/sys/net/ipv6/conf/all/disable_ipv6
6.2、能否禁用鏈路本地地址?
不能。
它是 IPv6 協(xié)議棧的基礎(chǔ)組成部分,禁用會導(dǎo)致網(wǎng)絡(luò)異常。
6.3、這個地址會沖突嗎?
不會。
因為基于 MAC 地址生成,而 Docker 保證容器 MAC 唯一。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
docker swam集群如何實現(xiàn)負(fù)載均衡
這篇文章主要介紹了docker swam集群如何實現(xiàn)負(fù)載均衡問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02
docker 創(chuàng)建RedHat8.5鏡像的命令
這篇文章主要介紹了docker 創(chuàng)建RedHat8.5鏡像的命令,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2024-03-03
Docker如何自定義網(wǎng)絡(luò)實現(xiàn)容器互通
這篇文章主要為大家詳細(xì)介紹了Docker如何通過自定義網(wǎng)絡(luò)實現(xiàn)容器互通,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-04-04
啟動docker錯誤systemctl status docker.service問題及解決
文章討論了啟動Docker和執(zhí)行docker ps命令失敗的問題,但docker -v顯示成功,解決辦法包括在阿里云容器鏡像中找到鏡像加速器或使用公共鏡像地址,默認(rèn)情況下,Docker使用官方地址2025-01-01
docker安裝jenkins的過程并配置jdk、node和maven
本文介紹了如何從拉取Jenkins鏡像開始,通過創(chuàng)建文件夾、準(zhǔn)備JDK、Maven和Node環(huán)境,修改settings.xml支持http協(xié)議,到建立Dockerfile進(jìn)行Jenkins鏡像的二次打包,同時涉及容器的運(yùn)行、Jenkins初始化設(shè)置、插件安裝和環(huán)境變量配置等步驟,幫助用戶成功部署并運(yùn)行Jenkins服務(wù)2024-10-10
Gogs+Jenkins+Docker 自動化部署.NetCore的方法步驟
這篇文章主要介紹了Gogs+Jenkins+Docker 自動化部署.NetCore,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-06-06

