文中內容摘自docker官網
這裡,你可以學會在多台計算機部署相互關聯的多個服務。
新增服務可以通過配置 docker-compose.yml 檔案來實現。首先,讓我們新增乙個免費的視覺化服務,讓我們看看我們的蜂群是如何排程容器的。
1、代開docker-compose.yml
調整為如下內容,並確保更新username/repo:tag
映像。
version: "3"
services:
web:
# replace username/repo:tag with your name and image details
image: username/repo:tag
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:
這裡新增的內容是visualizer節點。請注意兩項內容:volumes——給出視覺化工具訪問主機的 docker 套接字檔案,placement——確認僅以蜂群管理員方式執行,而非工蜂。後面我們將會詳細談談這兩個引數。
2. 啟用 shell 的當前環境為 myvm1 。
執行 docker-machine ls 命令,列出所有計算機,並且確認 myvm1 虛擬機器一行的 active 列有個星號。若沒有星號,則可以參考我的另一篇部落格中關於啟用管理員一節內容
3. 在管理員上重新執行 docker stack deploy 命令更新服務。
docker stack deploy -c docker-compose.yml getstartedlab
4. 檢視視覺化工具
通過瀏覽器,可以檢視:192.168.99.100:8080
也可以通過下列命令檢視所有的任務
docker stack ps getstartedlab
讓我們用相同的方式新增乙個redis資料庫用以儲存應用的資料。
1. 更新 docker-compose.yml ,新增redis節點內容,具體如下:
version: "3"
services:
web:
# replace username/repo:tag with your name and image details
image: username/repo:tag
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
redis:
image: redis
ports:
- "6379:6379"
volumes:
- "/home/docker/data:/data"
deploy:
placement:
constraints: [node.role == manager]
networks:
- webnet
networks:
webnet:
2. 在 myvm1 虛擬機器中建立儲存資料用的data目錄
docker-machine ssh myvm1 "mkdir ./data"
3. 執行 docker stack 命令更新服務
docker stack deploy -c docker-compose.yml getstartedlab
4. 執行 docker service ls 命令,檢視服務列表
root@one:/usr/local/docker# docker service ls
id name mode replicas image ports
zsmhd7dpwgqs getstartedlab_redis replicated 1/1 redis:latest *:6379->6379/tcp
uf6zm2skb2i2 getstartedlab_visualizer replicated 1/1 dockersamples/visualizer:stable *:8080->8080/tcp
k68ah4kp4qft getstartedlab_web replicated 7/7 mymole/test:part1 *:4000->80/tcp
5. 通過 192.168.99.100:4000檢視**,192.168.99.100:8080檢視視覺化工具
docker學習筆記(五) 資料管理
資料卷是乙個可供容器使用的特殊目錄,有如下特性 1 資料卷可以在容器之間共享和重用 2 資料卷修改會立即生效 3 資料卷的更新不會影響映象 4 如果有容器使用資料卷,該捲會一直存在 在使用docker run的命令時,使用 v 標記可以在容器內建立乙個資料卷,並且可以指定掛在乙個本地已有的目錄到容器...
學習筆記 堆
heap 堆 堆是一種建立在樹上的結構,是一種完全二叉樹型的資料結構,目前了解到的應用是堆排序,然後用於實現優先佇列。堆的特點是,子結點一定比父結點大或者小於父結點。其中,所有子結點都小於父結點的堆是最大二叉堆,子結點小於父結點的是最小二叉堆。堆的核心是heapify,維護堆合法性的演算法 後續談到...
學習筆記 堆
include include typedef struct node minheap 初始化乙個堆 void create minheap h,int maxsize bool isfull minheap h 往堆裡插入資料,其實可以直接在主程式裡輸入就行了 void insert minhea...