Docker學習筆記(五)堆

2021-09-30 18:42:04 字數 3517 閱讀 9080

文中內容摘自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...