docker swarm如何在指定的node上運行指定的容器
描述問題
比如我們有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還是很智能的。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
docker中的volume和bind?mount區(qū)別講解
這篇文章主要介紹了docker的volume和bind?mount區(qū)別,介紹了volume?相對于bind?mount的優(yōu)點及volume操作,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下2022-08-08使用docker極簡打包java.jar鏡像并啟動的操作步驟
這篇文章主要介紹了用docker極簡打包java.jar鏡像并啟動,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-08-08解析docker妙用SpringBoot構建微服務實戰(zhàn)記錄
Spring Boot 是 Spring 開源組織的子項目,是 Spring 組件一站式解決方案,本文通過詳細案例給大家解析docker妙用SpringBoot構建微服務實戰(zhàn)記錄,感興趣的朋友跟隨小編一起看看吧2021-11-11Spring Cloud中使用jib進行docker部署的步驟詳解
這篇文章主要介紹了Spring Cloud中使用jib進行docker部署的步驟詳解,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09Docker?安裝Tomcat、實現Tomcat集群的詳細過程
這篇文章主要介紹了Docker安裝Tomcat、實現Tomcat集群,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-06-06Docker中搭建FastDFS文件系統(tǒng)(多圖教程)
這篇文章主要介紹了Docker中搭建FastDFS文件系統(tǒng)(多圖教程),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-05-05Docker創(chuàng)建MongoDB容器并添加root密碼驗證與更多用戶詳細步驟
MongoDB是一個著名的面向文檔的數據庫,被許多現代Web應用程序使用,下面這篇文章主要給大家介紹了關于Docker創(chuàng)建MongoDB容器并添加root密碼驗證與更多用戶的相關資料,需要的朋友可以參考下2023-01-01