一、Docker–Net基礎知識
Docker–Net是Docker自帶的默認網路,它提供了一個容器間通信的能力。
當你創建一個容器時,Docker會默認為容器分配一個IP地址,並且將這個容器連接到Docker–Net網路中,從而允許容器之間相互通信。
除了Docker–Net,Docker還支持其他網路模型,比如Bridge、Host、Overlay等。但Docker–Net是容器之間通信最簡單的模型。
二、Docker–Net網路配置
當你通過docker run命令來啟動一個容器時,可以通過–net參數指定容器需要連接的網路,例如:
docker run -d --net=bridge nginx
當你沒有指定–net參數時,Docker默認將容器連接到Docker–Net網路中。
另外,你還可以使用docker network create命令來創建自定義的網路,並將容器連接到這個網路中,例如:
docker network create mynetwork docker run -d --net=mynetwork nginx
這樣就將容器連接到了自定義的mynetwork網路中。
三、容器內部通信
當你在同一網路中啟動多個容器時,它們可以通過容器名稱或者IP地址進行通信,例如:
docker run -d --name=nginx1 --net=bridge nginx docker run -d --name=nginx2 --net=bridge nginx docker exec -it nginx1 ping nginx2
這樣就可以在nginx1容器中ping通nginx2容器。
容器名稱的解析是通過Docker的內置DNS服務實現的,容器的DNS名為「容器名稱.容器網路名」。
四、容器與外界通信
默認情況下,容器內部的服務是無法通過宿主機直接訪問的。如果需要在宿主機上訪問容器內部的服務,可以通過埠映射來實現。
通過docker run命令的-p參數,可以將容器內部的埠映射到宿主機上的埠,例如:
docker run -d --name=nginx --net=bridge -p 8080:80 nginx
這樣就將容器內部的80埠映射到了宿主機上的8080埠上。
五、Docker Compose中的網路配置
Docker Compose可以編排多個容器共同運行,並且提供了網路配置的能力。
通過在docker-compose.yml文件中添加以下內容,就可以定義一個自定義網路:
version: '3' services: app: build: . networks: - mynetwork db: image: postgres networks: - mynetwork networks: mynetwork:
這樣就定義了一個名為mynetwork的自定義網路,並將app和db兩個服務連接到這個網路中。
在服務內部,可以通過服務名稱來進行通信。
六、總結
Docker–Net提供了基礎的容器間通信功能,通過網路配置和容器名稱解析,可以方便地實現容器之間和容器與外界的通信。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/184354.html