Swarm環境中怎麼指定某個容器在指定的宿主上運行呢? #
每個 Docker Host 建立時都可以通過 --label
指定其 Docker Daemon 的標籤,比如:
- 注意,上面的配置參數應該配置在
docker daemon
的配置文件裏,如docker.service
,而不是簡單的命令行執行……
如果是配置文件啓動的需要這樣寫:(ubuntu)
然後運行容器時,使用環境變量約束調度即可。可以使用 Compose 文件的 environment
配置,也可以使用 docker run
的 -e
環境變量參數。下面以 Compose 配置文件爲例:
這樣這個 mongodb
的服務就會運行在標記爲 com.example.storage="ssd"
的宿主上運行。
還可以在啓動的時候使用 --constraint 參數進行限制,此方法效果比使用變量效果要好,經過試驗變量效果會失效的現象太多,按照上述在 Dockerd 上配置 label 後啓動服務的命令如:
把其餘參數補齊即可啓動在使用這個 production 標籤的節點上。
可以使用集羣節點的名稱來啓動,省去了配置 label。
Main Reference: https://wiki.shileizcc.com/pages/viewpage.action?pageId=10911914;