docker從零開始(五)堆棧初體驗,stacks
先決條件
- 安裝Docker 1.13或更高版本。
- 獲取Docker Compose,請參考第三節
- 按照第四節中的描述獲取Docker Machine。
-
在第二節中了解如何創建容器。
-
確保您的圖像作為已部署的容器運行。運行此命令,在您的信息槽中
username
,repo
和tag
:docker 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如何調度容器。
-
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