码迷,mamicode.com
首页 > 其他好文 > 详细

docker从零开始(五)堆栈初体验,stacks

时间:2018-08-19 16:15:43      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:更新   constrain   run   cert   str   deploy   tag   name   int   

先决条件

  • 安装Docker 1.13或更高版本
  • 获取Docker Compose,请参考第三节
  • 按照第四节中的描述获取Docker Machine
  • 在第二节中了解如何创建容器

  • 确保您的图像作为已部署的容器运行。运行此命令,在您的信息槽中  usernamerepotagdocker run -p 80:80 username/repo:tag,然后访问http://localhost/

  • docker-compose.yml第3部分获得一份方便的副本

  • 确保您在第四节中设置的计算机正在运行并准备就绪。运行docker-machine ls以验证这一点。如果计算机已停止,请运行docker-machine start myvm1以引导管理器,然后docker-machine start myvm2再引导该工作程序。

  • 让你在第四节中创建的swarm 运行并准备就绪。运行 docker-machine ssh myvm1 "docker node ls"以验证这一点。如果群集已启动,则两个节点都会报告ready状态。如果不是,重新初始化群和描述中加入worker

介绍

在第四节中,您学习了如何设置一个群集,这是一个运行Docker的计算机集群,并为其部署了一个应用程序,其中容器在多台计算机上协同运行。

在第5部分中,您将到达分布式应用程序层次结构的顶部:堆栈堆栈是一组相互关联的服务,它们共享依赖关系,并且可以协调和缩放在一起。单个堆栈能够定义和协调整个应用程序的功能(尽管非常复杂的应用程序可能希望使用多个堆栈)。

一些好消息是,从第3部分开始,当您创建Compose文件并使用时,您在技术上一直在使用堆栈docker stack deploy但这是在单个主机上运行的单个服务堆栈,这通常不会在生产中发生。在这里,您可以学习所学内容,使多个服务相互关联,并在多台计算机上运行它们。

添加新服务并重新部署

将服务添加到我们的docker-compose.yml文件很容易首先,让我们添加一个免费的可视化服务,让我们看看我们的swarm如何调度容器。

  1. docker-compose.yml在编辑器中打开并用以下内容替换其内容。请务必更换username/repo:tag镜像详细信息。

version: "3"
services:
  web:
    # replace username/repo:tag with your name and image details
    image: benjamin77/image:part2
    deploy:
      replicas: 5
      restart_policy:
        condition: on-failure
      resources:
        limits:
          cpus: "0.1"
          memory: 50M
    ports:
      - "80:80"
    networks:
      - webnet
  visualizer:
    image: dockersamples/visualizer:stable
    ports:
      - "8080:8080"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
    deploy:
      placement:
        constraints: [node.role == manager]
    networks:
      - webnet
networks:
  webnet:

这里唯一新的是对等服务web,名为visualizer

注意这里有两个新的东西:一个volumes键,让可视化工具访问Docker的主机套接字文件,

以及一个placement密钥,确保这个服务只能在一个swarm管理器上运行 - 绝不是一个工人。

这是因为这个容器是由Docker创建的开源项目构建,它显示了在图中的swarm上运行的Docker服务。

 

2.确保您的shell配置为与之通信myvm1

[root@docker11 docker_install]# docker-machine ls
NAME    ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER        ERRORS
myvm1   -        virtualbox   Running   tcp://192.168.99.100:2376           v18.06.0-ce   
myvm2   -        virtualbox   Running   tcp://192.168.99.101:2376           v18.06.0-ce   
[root@docker11 docker_install]# docker-machine env myvm1
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/root/.docker/machine/machines/myvm1"
export DOCKER_MACHINE_NAME="myvm1"
# Run this command to configure your shell: 
# eval $(docker-machine env myvm1)
[root@docker11 docker_install]# eval $(docker-machine env myvm1)
[root@docker11 docker_install [myvm1]]# 

 

 

3.docker stack deploy在管理器上重新运行该命令,并更新需要更新的任何服务:

[root@docker11 docker_install]# eval $(docker-machine env myvm1)
[root@docker11 docker_install [myvm1]]# docker stack deploy -c docker-compose.yml getstartedlab
Creating service getstartedlab_visualizer
Updating service getstartedlab_web (id: 3gnwxgnc10ie0jgmvq19ws5tb)
[root@docker11 docker_install [myvm1]]# 

 

docker从零开始(五)堆栈初体验,stacks

标签:更新   constrain   run   cert   str   deploy   tag   name   int   

原文地址:https://www.cnblogs.com/benjamin77/p/9501480.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!