2003 views
# docker 配置固定的外部 IP ###### tags: `docker` `network` `macvlan` # 用處,目的(延伸): 有時候會希望給 container 一個獨立的 IP,讓他與其他服務做切割 ## 演進歷史: 1. 早期的版本,只有 `docker0` 這種內部網路的功能 2. ip、brctl 之類的指令出現,kernel 內提供網路虛擬化的功能更完整 3. pipwork 這類工具出現,輔助使用 ip、brclt 等指令 4. 慢慢地開始提供 `docker network` 之類的指令達到多個服務在不同網段的切割 5. `docker network` 支援的功能更多,如 macvlan、ipvlan 6. K8S、swarm 所使用的 overlay,提供跨 host 之間的虛擬網路 > 依個人感覺上的順序,沒有驗證 # 內容: 分為兩種方式: - 主機配置多 IP,在建立 container 的時候指定特別的 IP 做 bind - 使用 macvlan 或 ipvlan 建立與外網相同的網段,直接接上外網,就可以在 vlan 中配置 IP # 相關內容連結 - 指定主機 IP 做 bind 的[提問](https://micropyramid.com/blog/assign-public-ip-address-to-docker-container-without-port-binding/) - macvlan 和 ipvlan 使用方式的官方[連結](https://docs.docker.com/network/macvlan/) - 註: ipvlan 創建的時候也是需要 `-o parent=` 的設定的,但官網的範例沒有 - ipvlan 的概念[教學](https://cizixs.com/2017/02/17/network-virtualization-ipvlan/) - ipvlan 目前屬於實驗性質的功能 - 需要 Kernal >= 4.2 - 目前使用最新版 docker 設定時會出現此 error: `Error response from daemon: plugin "ipvlan" not found` - 需要設定 `experimental=true` 來開啟實驗性質的功能,解決方式的[解釋](https://github.com/moby/moby/issues/34717) - 可以藉由 `/etc/docker/daemon.json` 來設定 - macvlan 和 ipvlan 的[解釋](https://sreeninet.wordpress.com/2016/05/29/docker-macvlan-and-ipvlan-network-plugins/) # 背景知識建立區~~ - docker network - [docker 提供的一些基礎 network](https://k2r2bai.com/2016/01/05/container/docker-network/) - [docker 提供的一些進階的 network](https://godleon.github.io/blog/Docker/docker-network-overview/) - [command: ip](https://www.opencli.com/linux/ip-command) - [理解 macvlan 的概念](https://godleon.github.io/blog/Docker/docker-network-macvlan/)