docker swarm如何在指定节点运行service

Swarm环境中怎么指定某个容器在指定的宿主上运行呢? #

每个 Docker Host 建立时都可以通过 --label 指定其 Docker Daemon 的标签,比如:

$ docker daemon \
   --label com.example.environment= "production"  \
   --label com.example.storage= "ssd"


  • 注意,上面的配置参数应该配置在 docker daemon 的配置文件里,如 docker.service,而不是简单的命令行执行……


如果是配置文件启动的需要这样写:(ubuntu)

DOCKER_OPTS= "$DOCKER_OPTS --label com.example.environment='production' "


然后运行容器时,使用环境变量约束调度即可。可以使用 Compose 文件的 environment 配置,也可以使用 docker run 的 -e 环境变量参数。下面以 Compose 配置文件为例:

version:  "2"
services:
  mongodb:
  image: mongo:latest
  environment:
  "constraint:com.example.storage==ssd"


这样这个 mongodb 的服务就会运行在标记为 com.example.storage="ssd" 的宿主上运行。


还可以在启动的时候使用 --constraint 参数进行限制,此方法效果比使用变量效果要好,经过试验变量效果会失效的现象太多,按照上述在 Dockerd 上配置 label 后启动服务的命令如:

$ docker service create --name xxx --constraint engine.labels.com.example.environment==production xxx

把其余参数补齐即可启动在使用这个 production 标签的节点上。

$ docker service create --name xxx --constraint node. hostname ==swarm1 xxx

可以使用集群节点的名称来启动,省去了配置 label。

Main Reference: https://wiki.shileizcc.com/pages/viewpage.action?pageId=10911914

https://blog.lab99.org/post/docker-2016-07-14-faq.html

  docker原理: http://www.csdn.net/article/2015-08-21/2825511

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,以下是在Docker Swarm中运行MySQL 5.7的步骤: 1.创建一个Docker Swarm集群,并将一些节点分配为管理节点。 2.使用Docker CLI登录到管理节点。 3.创建一个Docker Secret,用于存储MySQL的root密码: ``` echo "mysecretpassword" | docker secret create mysql_root_password - ``` 4.创建一个Docker配置,用于存储MySQL配置文件: ``` docker config create mysql_config my.cnf ``` 5.创建一个Docker服务,在一个Swarm节点运行MySQL容器: ``` docker service create \ --name mysql \ --secret mysql_root_password \ --config source=mysql_config,target=/etc/mysql/my.cnf \ --publish published=3306,target=3306 \ --mount type=volume,source=mysql_data,target=/var/lib/mysql \ --env MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql_root_password \ --env MYSQL_DATABASE=mydatabase \ --env MYSQL_USER=myuser \ --env MYSQL_PASSWORD=mypassword \ mysql:5.7 ``` 这将创建一个名为“mysql”的服务,并在Docker Swarm中运行MySQL 5.7容器。该服务使用Docker Secret存储MySQL的root密码,并使用Docker配置文件指定MySQL的配置。 此服务还将发布MySQL容器的端口3306,并将数据存储在名为“mysql_data”的Docker卷中。 此服务还定义了几个MySQL环境变量,以便在容器中创建数据库和用户。 6.您可以使用以下命令检查服务的状态: ``` docker service ls ``` 7.您可以使用以下命令查看服务的详细信息: ``` docker service ps mysql ``` 希望这可以帮助您在Docker Swarm中运行MySQL 5.7。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值