本篇內(nèi)容介紹了“如何使用Compose變量定制Docker網(wǎng)絡(luò)”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
站在用戶的角度思考問題,與客戶深入溝通,找到桐鄉(xiāng)網(wǎng)站設(shè)計(jì)與桐鄉(xiāng)網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、國際域名空間、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋桐鄉(xiāng)地區(qū)。
使用[Docker 多節(jié)點(diǎn)網(wǎng)絡(luò)]來創(chuàng)建虛擬網(wǎng)絡(luò),把容器接入虛擬網(wǎng)絡(luò),能實(shí)現(xiàn)應(yīng)用中所需要的網(wǎng)絡(luò)拓?fù)?。具體來說,Bridge網(wǎng)絡(luò)能用來創(chuàng)建單節(jié)點(diǎn)網(wǎng)絡(luò),Overlay網(wǎng)絡(luò)能創(chuàng)建多節(jié)點(diǎn)網(wǎng)絡(luò)。通過這樣給應(yīng)用定制專用網(wǎng)絡(luò),能為容器提供絕對(duì)的隔離性。
Docker Compose的目標(biāo)是實(shí)現(xiàn)單節(jié)點(diǎn)網(wǎng)絡(luò),通過用--x-networking
來創(chuàng)建一個(gè)應(yīng)用程序獨(dú)有的橋接網(wǎng)絡(luò),如果應(yīng)用程序需要多節(jié)點(diǎn)部署,可以使用Docker Swarm集群來創(chuàng)建一個(gè)overlay網(wǎng)絡(luò)。
那如果一個(gè)橋接網(wǎng)絡(luò)或overlay網(wǎng)絡(luò)已經(jīng)存在,而你想要把這個(gè)網(wǎng)絡(luò)分配給運(yùn)行中的容器呢?
Docker 1.9 引入了變量替換的特性,我們可以利用這特性實(shí)現(xiàn)把容器關(guān)聯(lián)到一個(gè)預(yù)創(chuàng)建的網(wǎng)絡(luò)上。
創(chuàng)建Docker橋接網(wǎng)絡(luò)
1. 創(chuàng)建網(wǎng)絡(luò):
sh
docker network create -d bridge mynet
47d6225ffe56ddd1a8bc0d6abb0ffd8f8ac3eec2090ff243f8cd6f77c170751b=
2. 列出網(wǎng)絡(luò):
sh
docker network ls
NETWORK ID NAME DRIVER
feb6e9567439 bridge bridge
29563a59abe8 none null
25ab737cd665 host host
47d6225ffe56 mynet bridge
Docker會(huì)為每個(gè)節(jié)點(diǎn)自動(dòng)創(chuàng)建三個(gè)網(wǎng)絡(luò):
| 網(wǎng)絡(luò)名稱 | 作用 |
| :-------- | :-- |
| bridge | 容器默認(rèn)連接的網(wǎng)絡(luò),是所有Docker安裝時(shí)都默認(rèn)安裝的docker0網(wǎng)絡(luò) |
| none | 容器定制的網(wǎng)絡(luò)棧 |
| host | 在宿主網(wǎng)絡(luò)棧上添加一個(gè)容器,容器中的網(wǎng)絡(luò)配置會(huì)與宿主的一樣|
上邊看到,我剛創(chuàng)建的mynet網(wǎng)絡(luò)也在列表中。
使用docker inspect
命令查看mynet網(wǎng)絡(luò)的詳細(xì)信息:
json
[
{
"Name": "mynet",
"Id": "47d6225ffe56ddd1a8bc0d6abb0ffd8f8ac3eec2090ff243f8cd6f77c170751b",
"Scope": "local",
"Driver": "bridge",
"IPAM": {
"Driver": "default",
"Config": [
{}
]
},
"Containers": {},
"Options": {}
}
]
從Containers這節(jié)可以看到,目前還沒有容器關(guān)聯(lián)上去。
Docker Compose 與 網(wǎng)絡(luò)
1. 上面新建的網(wǎng)絡(luò)能在新的容器中使用,只要在運(yùn)行時(shí)使用docker run --net=
命令。不過本文會(huì)用Compose文件實(shí)現(xiàn):
json
mycouchbase:
container_name: "db"
image: couchbase/server
ports:
- 8091:8091
- 8092:8092
- 8093:8093
- 11210:11210
net: ${NETWORK}
mywildfly:
image: arungupta/wildfly-admin
environment:
- COUCHBASE_URI=db
ports:
- 8080:8080
- 9990:9990
net: ${NETWORK}
注意這里net
已經(jīng)指定使用一個(gè)自定義網(wǎng)絡(luò)。
2. 使用新創(chuàng)建的網(wǎng)絡(luò)來啟動(dòng)應(yīng)用:
sh
NETWORK=mynet docker-compose up -d
再查看網(wǎng)絡(luò)詳細(xì)信息:
json
docker network inspect mynet
[
{
"Name": "mynet",
"Id": "47d6225ffe56ddd1a8bc0d6abb0ffd8f8ac3eec2090ff243f8cd6f77c170751b",
"Scope": "local",
"Driver": "bridge",
"IPAM": {
"Driver": "default",
"Config": [
{}
]
},
"Containers": {
"300bebe6c3e0350ebf9b9d3746eb3a7b49444e14c00314770627a9f101442639": {
"EndpointID": "82a3e2d7cd4f1bb03c9ef52bb6abf284942d7e9fcac89fe3700b0e0c4ed2654f",
"MacAddress": "02:42:ac:14:00:03",
"IPv4Address": "172.20.0.3/16",
"IPv6Address": ""
},
"4fdae4eb919f0934422513227fe541255557dd9e8b3317374685927e7f427249": {
"EndpointID": "937605d716d144b55288d70817d611da5fb0f87e3aedd6b5074fca07f82c3953",
"MacAddress": "02:42:ac:14:00:02",
"IPv4Address": "172.20.0.2/16",
"IPv6Address": ""
}
},
"Options": {}
}
]
可以看到現(xiàn)在已經(jīng)有兩個(gè)容器關(guān)聯(lián)到這個(gè)網(wǎng)絡(luò)上了。
使用docker ps
查看容器ID:
sh
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
300bebe6c3e0 couchbase/server "/entrypoint.sh couch" 2 minutes ago Up 2 minutes 0.0.0.0:8091-8093->8091-8093/tcp, 11207/tcp, 11211/tcp, 0.0.0.0:11210->11210/tcp, 18091-18092/tcp db
4fdae4eb919f arungupta/wildfly-admin "/opt/jboss/wildfly/b" 2 minutes ago Up 2 minutes 0.0.0.0:8080->8080/tcp, 0.0.0.0:9990->9990/tcp wildflycouchbasejavaee7network_mywildfly_1
查看其中一個(gè)容器的網(wǎng)絡(luò)設(shè)置:
sh
docker inspect -f '{{ .HostConfig.NetworkMode }}' 300
mynet
查看這個(gè)容器的詳細(xì)網(wǎng)絡(luò)信息:
sh
docker inspect -f '{{ .NetworkSettings.Networks.mynet }}' 300
{82a3e2d7cd4f1bb03c9ef52bb6abf284942d7e9fcac89fe3700b0e0c4ed2654f 172.20.0.1 172.20.0.3 16 0 02:42:ac:14:00:03}
這個(gè)容器的更多細(xì)節(jié)能用docker inspect
看到,相關(guān)的部分在這里:
json
"Networks": {
"mynet": {
"EndpointID": "82a3e2d7cd4f1bb03c9ef52bb6abf284942d7e9fcac89fe3700b0e0c4ed2654f",
"Gateway": "172.20.0.1",
"IPAddress": "172.20.0.3",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:14:00:03"
}
}
“如何使用Compose變量定制Docker網(wǎng)絡(luò)”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!