日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

Docker精华问答 | task与executor有什么关系?

發(fā)布時(shí)間:2024/9/27 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Docker精华问答 | task与executor有什么关系? 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

戳藍(lán)字“CSDN云計(jì)算”關(guān)注我們哦!


容器技術(shù)是這兩年熱門的話題,因?yàn)槿萜骷夹g(shù)給我們帶來了很多方便的地方,節(jié)約了不少成本,不管是在運(yùn)維還是開發(fā)上。今天,就讓我們來看看關(guān)于Docker更加有深度的問題吧。


1

Q:為什么執(zhí)行?docker run -p?命令后還是無法通過映射端口訪問容器里面的服務(wù)??


A:首先,當(dāng)然是檢查這個(gè) docker 的容器是否啟動(dòng)正常:?docker ps、docker top <容器ID>、docker logs <容器ID>、docker exec -it <容器ID> bash等,這是比較常用的排障的命令;如果是?docker-compose?也有其對(duì)應(yīng)的這一組命令,所以排障很容易。

如果確保服務(wù)一切正常,甚至在容器里,可以訪問到這些服務(wù),docker ps?也顯示出了端口映射成功,那么就需要檢查防火墻了。

本機(jī)防火墻?

在 Docker 運(yùn)行的系統(tǒng)上不應(yīng)該運(yùn)行任何防火墻……沒錯(cuò),說你呢,CentOS 的?firewalld?和 Ubuntu 的?ufw?同學(xué)。由于 Docker 使用?iptables?規(guī)則來進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)流的控制,而那些防火墻總以為只有自己撰寫?iptables,從而經(jīng)常會(huì)導(dǎo)致 Docker 設(shè)置了一些規(guī)則,然后轉(zhuǎn)眼就被?firewalld?或?ufw?給清了,特別是起、停防火墻服務(wù)的時(shí)候。從而導(dǎo)致 Docker 的網(wǎng)絡(luò)從外界無法訪問。

為了避免?iptables?的規(guī)則干擾,不要在運(yùn)行 Docker 的服務(wù)器上,運(yùn)行任何防火墻或配置自定義的?iptables?規(guī)則,除非你非常清楚你在做什么,并且知道會(huì)產(chǎn)生什么后果。另外,關(guān)閉防火墻后,記得重啟系統(tǒng),至少是重啟 Docker 服務(wù)。否則防火墻的起、停、刷新這類行為會(huì)導(dǎo)致清空 Docker 設(shè)置的網(wǎng)絡(luò)規(guī)則,而導(dǎo)致容器內(nèi)的網(wǎng)絡(luò)無法和外部互聯(lián)。

邊界防火墻?

如果你使用的是云服務(wù)器,那么除了本機(jī)防火墻外,云服務(wù)的服務(wù)商一般會(huì)提供邊界防火墻服務(wù),比如安全組、安全策略類的東西。有些服務(wù)器為了安全起見,默認(rèn)只開通必需的?22?端口給 SSH 使用,而其它端口屏蔽。這也是可能導(dǎo)致遠(yuǎn)程訪問服務(wù)器?-p?端口失敗的原因之一。如果你發(fā)現(xiàn)你在服務(wù)器本地訪問服務(wù),比如?curl localhost?沒有阻礙,但是遠(yuǎn)程訪問該服務(wù)就連接失敗的話,那么應(yīng)該去檢查云服務(wù)商的安全設(shè)置,是否忘記了開啟所需的端口。


2

Q:要映射好幾百個(gè)端口,難道要一個(gè)個(gè)?-p?么??


A:-p?是可以用范圍的,例如:

-p 8001-8010:8001-8010


3

Q:vethxxxx?這種虛擬網(wǎng)卡和容器的對(duì)應(yīng)關(guān)系從哪里看??


A:一個(gè)好辦法:

$ docker network ls NETWORK ID ? ? ? ? ?NAME ? ? ? ? ? ? ? ? ? ? ? DRIVER 56f04389b8f0 ? ? ? ?dockerlnmp_backend ? ? ? ? bridge 094fcb269385 ? ? ? ?dockerlnmp_frontend ? ? ? ?bridge

注意這里的?NETWORK ID,然后運(yùn)行?ip a | grep veth。

$ ip a | grep veth 12: veth22996d2@if11: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-56f04389b8f0 state UP group default 14: veth34ace9a@if13: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-56f04389b8f0 state UP group default 16: veth0bb3771@if15: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-56f04389b8f0 state UP group default 22: veth399b874@if21: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-094fcb269385 state UP group default 24: vethf24a0a9@if23: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdiscnoqueue master br-094fcb269385 state UP group default

注意這里的?br-56f04389b8f0?以及?br-094fcb269385,br-?后面的是上面的網(wǎng)絡(luò)id,由此可以看出?veth?和 Docker 網(wǎng)絡(luò)的對(duì)應(yīng)關(guān)系,而容器都是連接到了某個(gè)Docker網(wǎng)絡(luò)上的,從而就有了容器和?veth?的對(duì)應(yīng)關(guān)系。對(duì)于某個(gè)網(wǎng)絡(luò)出現(xiàn)了多個(gè)?veth?的情況,可以觀察?veth22996d2@if11?后面的?if11?這部分,和容器內(nèi)的?ip addr?的結(jié)果,一般奇-偶是一對(duì)。


4

Q:如何讓一個(gè)容器連接兩個(gè)網(wǎng)絡(luò)??


A:如果是使用?docker run,那很不幸,一次只可以連接一個(gè)網(wǎng)絡(luò),因?yàn)?docker run?的?--network?參數(shù)只可以出現(xiàn)一次(如果出現(xiàn)多次,最后的會(huì)覆蓋之前的)。不過容器運(yùn)行后,可以用命令?docker network connect?連接多個(gè)網(wǎng)絡(luò)。

假設(shè)我們創(chuàng)建了兩個(gè)網(wǎng)絡(luò):

$ docker network create mynet1 $ docker network create mynet2

然后,我們運(yùn)行容器,并連接這兩個(gè)網(wǎng)絡(luò)。

$ docker run -d --name web --network mynet1 nginx $ docker network connect mynet2 web

但是如果使用?docker-compose?那就沒這個(gè)問題了。因?yàn)閷?shí)際上,Docker Remote API?是支持一次性指定多個(gè)網(wǎng)絡(luò)的,但是估計(jì)是命令行上不方便,所以?docker run?限定為只可以一次連一個(gè)。docker-compose?直接就可以將服務(wù)的容器連入多個(gè)網(wǎng)絡(luò),沒有問題。

version: '2' services:web:image: nginxnetworks:- mynet1- mynet2 networks:mynet1:mynet2:


5

Q:Docker 多宿主網(wǎng)絡(luò)怎么配置??


A:Docker 跨節(jié)點(diǎn)容器網(wǎng)絡(luò)互聯(lián),最通用的是使用?overlay?網(wǎng)絡(luò)。一代 Swarm 已經(jīng)不再使用,它要求使用?overlay?網(wǎng)絡(luò)前先準(zhǔn)備好分布式鍵值庫,比如?etcd,?consul?或?zookeeper。然后在每個(gè)節(jié)點(diǎn)的 Docker 引擎中,配置?--cluster-store?和?--cluster-advertise?參數(shù)。這樣才可以互連。

現(xiàn)在都在使用二代 Swarm,也就是?Docker Swarm Mode,非常簡單,只要?docker swarm init?建立集群,其它節(jié)點(diǎn)?docker swarm join?加入集群后,集群內(nèi)的服務(wù)就自動(dòng)建立了?overlay?網(wǎng)絡(luò)互聯(lián)能力。

需要注意的是,如果是多網(wǎng)卡環(huán)境,無論是?docker swarm init?還是?docker swarm join,都不要忘記使用參數(shù)?--advertise-addr?指定宣告地址,否則自動(dòng)選擇的地址很可能不是你期望的,從而導(dǎo)致集群互聯(lián)失敗。格式為?--advertise-addr <地址>:<端口>,地址可以是 IP 地址,也可以是網(wǎng)卡接口,比如?eth0。端口默認(rèn)為?2377,如果不改動(dòng)可以忽略。

此外,這是供服務(wù)使用的?overlay,因此所有?docker service create?的服務(wù)容器可以使用該網(wǎng)絡(luò),而?docker run?不可以使用該網(wǎng)絡(luò),除非明確該網(wǎng)絡(luò)為?--attachable。

雖然默認(rèn)使用的是?overlay?網(wǎng)絡(luò),但這并不是唯一的多宿主互聯(lián)方案。Docker 內(nèi)置了一些其它的互聯(lián)方案,比如效率比較高的?macvlan。如果在局域網(wǎng)絡(luò)環(huán)境下,對(duì)?overlay?的額外開銷不滿意,那么可以考慮?macvlan?以及?ipvlan,這是比較好的方案。此外,還有很多第三方的網(wǎng)絡(luò)可以用來進(jìn)行跨宿主互聯(lián)。

小伙伴們沖鴨,后臺(tái)留言區(qū)等著你!

關(guān)于Docker,今天你學(xué)到了什么?還有哪些不懂的?除此還對(duì)哪些話題感興趣?快來留言區(qū)打卡啦!留言方式:打開第XX天,答:……

同時(shí)歡迎大家搜集更多問題,投稿給我們!風(fēng)里雨里留言區(qū)里等你~


-


福利

掃描添加小編微信,備注“姓名+公司職位”,加入【云計(jì)算學(xué)習(xí)交流群】,和志同道合的朋友們共同打卡學(xué)習(xí)!



推薦閱讀:

  • K8S安全軍規(guī)101:對(duì)CNCF最佳實(shí)踐的擴(kuò)充

  • 50個(gè)最有價(jià)值的數(shù)據(jù)可視化圖表(推薦收藏)

  • 微服務(wù)、Kubernetes和無服務(wù)器之后,即將發(fā)生的……

  • 月入5萬,程序員夫人們過上"貴婦"生活了嗎?

  • 為什么說穩(wěn)定幣才是諾獎(jiǎng)得主哈耶克想要的非國家貨幣?

  • “扔瓶子”有套路?日本高中生開發(fā)機(jī)器人,手殘黨們有救了

  • 那些簡歷造假拿 Offer 的程序員,后來都怎么樣了?


喜歡就點(diǎn)擊“好看”吧

總結(jié)

以上是生活随笔為你收集整理的Docker精华问答 | task与executor有什么关系?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。