1. 程式人生 > >docker從零開始(五)堆棧初體驗,stacks

docker從零開始(五)堆棧初體驗,stacks

開始 services 信息 工作 run cer cal tail 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