溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

docker swarm如何在指定的node上運行指定的容器

發布時間:2020-09-29 01:41:30 來源:腳本之家 閱讀:375 作者:leon_wzm 欄目:服務器

描述問題

比如我們有worker1,worker2,worker3三個docker host另外加一個manager1(它是swarm的master)來管理它們。

如果在manager1上直接docker service create某一個容器的話,比如nginx容器,那么master會來決定挑哪一個node作為nginx容器的運行的host。

如果我要nginx容器只跑在worker1上面的話,應該怎么辦呢?

解決方案

簡單來說就是給每一個node打標簽。

docker node update --label-add func=nginx worker1

上面這句話的意思是master給worker1的docker打上了功能是nginx的標簽。func和nginx是你可以自己定的鍵值對。

然后在運行docker service create 的時候,指定–constraint參數即可

docker service create --name my_nginx --constraint 'node.labels.func == nginx' nginx

這樣nginx的容器就會在worker1上啟動,而不會在其他node上啟動了。

補充

我的好奇心讓我使了一個壞。我把worker1打上func=nginx的標簽后,在docker service create的constraint參數上故意寫成node.labels.func == nginx111。

這個時候用docker service ls和docker service ps nginx都可以看到service已經注冊了,但是它的CURRENT STATE顯示Pending , 并且也沒有任何分配到node。

我不停止這個service,然后直接把worker2的標簽寫為nginx111,奇跡般地,在worker2上就自己啟動了nginx的容器。master還是很智能的。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女