一、Docker-compose
1、概念:
Docker-Compose 是 Docker 官方的開源項目,負責實現對Docker容器集群的快速編排。
2、作用:
Docker-Compose可以管理多個Docker容器組成一個應用。需要定義一個yaml格式的配置文件 docker-compose.yml,配置好多個容器之間的調用關系,然后只需要一個命令就能同時啟動/關閉這些容器。
3、compose核心概念:
① 一文件:docker-compose.yml
② 兩要素:
項目 (project):由一組關聯的容器組成的一個完整業務單元;
服務 (service):一個項目中的某一個容器實例 。
4、compose 使用步驟:
① 編寫 Dockerfile 定義各個應用容器,構建出對應的鏡像文件;
② 使用 docker-compose.yml,定義一個完整的業務單元,安排好整體應用中的各個容器服務;
③ 執行 docker-compose up 命令,創建并運行整個應用程序,完成一鍵部署上線。
5、compose示例:
compose模版:https://docker_practice.gitee.io/compose/compose_file.html
(1) 創建一個項目:
mkdir /root/ems/ (以ems目錄作為項目名)
(2) 在ems目錄里創建一個docker-compose.yml文件:
① version:
每個模版文件需要寫上version版本號,代表所使用的docker-compose的項目版本。
● 版本號的選擇與docker引擎有關:
官方提供的compose版本號與docker引擎的對應關系:
② services:
在模版文件里定義需要啟動的容器:
● 啟動 tomcat:
若要啟動另一個tomcat,則要再寫一組服務:
● 啟動 redis:
● 啟動 mysql:
(3) 啟動docker-compose服務:
docker compose up
這個命令必須在docker-compose.yml配置文件目錄下執行
● 查看服務:
tomcat:
redis:
mysql:
● 停止服務:
附:完整docker-compose.yml
#代表使用的docker-compose項目版本號
version: "3.8"services:tomcat1: #tomcat服務名(名稱唯一)image: tomcat:8.0 #所使用的鏡像ports: #宿主機8080端口映射容器8080端口- 8080:8080tomcat2:image: tomcat:8.0ports:- 8081:8080redis1:image: redis:6.0.8ports:- 6379:6379mysql:image: mysql:5.7ports:- 3306:3306environment: #給當前容器啟動指定環境 類似docker run -e MYSQL_ROOT_PASSWORD=123456- "MYSQL_ROOT_PASSWORD=123456" volumes: #給當前容器指定數據卷 類似docker run -v- /root/mysqldata1:/var/lib/mysql
(4) 在IDEA上創建docker-compose.yml:
遠程連接docker服務器,創建一個docker-compose.yml
編寫docker-compose.yml,可根據提示信息自動補齊,編寫完成后點擊紅框所示圖標,即可完成上傳
宿主機上啟動docker-compose服務:
6、docker-compose 常用命令:
(1) up:
docker compose up [options] [SERVICE...]
該命令會嘗試自動完成包括構建鏡像,創建服務,啟動服務,并關聯服務相關容器的一系列操作。
docker compose up:啟動的容器都在前臺,控制臺將會同時打印所有容器的輸出信息,可以很方便進行調試。
docker compose up -d:在后臺啟動并運行所有的容器。
(2) down:
docker compose down:關閉up命令所啟動的服務容器,并移除網絡。
(3) exec:
docker compose exec 服務id:進入某個服務容器。
(4) restart:
docker compose restart [options] [SERVICE...]:重啟項目中的服務
-t, --timeout TIMEOUT?指定重啟前停止容器的超時(默認為 10 秒)。
(5) rm:
docker compose rm [options] [SERVICE...]
刪除所有停止狀態的服務容器,先執行?docker compose stop?命令停止容器。
-f 強制直接刪除,包括非停止狀態的容器。
-v?刪除容器所掛載的數據卷。
(6) top:
docker compose top
查看項目中所有服務容器運行進程,或某個指定id服務容器的進程。
(7) logs:
docker compose logs [options] [SERVICE...]
查看整個項目或某個id服務容器的日志。
7、docker-compose 模版文件常用指令:
https://vuepress.mirror.docker-practice.com/compose/compose_file/#
二、可視化工具Portainer
1、簡介:
Portainer是一款輕量級的應用,提供圖形化界面,用于管理Docker環境。
官網:Portainer: Container Management Software for Kubernetes and Docker
2、安裝:
(1) docker 命令安裝:
docker run -d -p 8000:8000 -p 9000:9000 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:2.13.0-alpine
(2) 登錄:
① 訪問地址:服務器ip:9000;
② 設置 admin 密碼;
類似 docker system df:
3、Portainer創建容器:
三、容器監控CIG
1、簡介:
CAdvisor (監控收集) + InfluxDB (存儲數據) + Granfana (展示圖表),合稱CIG
(1) CAdvisor:
CAdvisor是一個容器資源監控工具,包括容器的內存、CPU、網絡IO、磁盤IO等監控,提供了一個Web頁面用于查看容器的實時運行狀態。
CAdvisor默認存儲2分鐘的數據,而且只針對單物理機。不過CAdvisor提供了很多數據集成接口,支持 InfluxDB、Redis、Kafka、Elasticsearch等集成,可以加上對應配置將監控數據發往這些數據庫存儲起來。
(2) InfluxDB:
為了持久化存儲數據和統一收集展示監控數據,需要將數據存儲到InfluxDB中。InfluxDB是一個時序數據庫,專門用于存儲時序相關數據,很適合存儲 CAdvisor 的數據。
(3) Granfana:
Grafana是一個開源的數據監控分析可視化平臺,支持多種數據源配置和豐富的插件及模板功能,支持圖表權限控制和報警。
2、docker-compose 部署 CIG:
(1) 新建docker-compose.yml:
① 新建目錄:mkdir /mydocker/cig -p
② 編寫docker-compose.yml:
services:influxdb:image: tutum/influxdb:0.9restart: alwaysenvironment:- PRE_CREATE_DB=cadvisorports:- "8083:8083" - "8086:8086" volumes:- ./data/influxdb:/datacadvisor:image: google/cadvisor:v0.32.0links:- influxdb:influxsrvcommand:- -storage_driver=influxdb- -storage_driver_db=cadvisor- -storage_driver_host=influxsrv:8086restart: alwaysports:- "8080:8080"volumes:- /:/rootfs:ro- /var/run:/var/run:rw- /sys:/sys:ro- /var/lib/docker/:/var/lib/docker:rografana:image: grafana/grafana:8.5.2user: '104'restart: alwayslinks:- influxdb:influxsrvports:- "3000:3000"volumes:- grafana_data:/var/lib/grafanaenvironment:- HTTP_USER=admin- HTTP_PASS=admin- INFLUXDB_HOST=influxsrv- INFLUXDB_PORT=8086
docker compose config -q:檢查.yml文件語法
(2) 啟動docker-compose文件,并檢查服務是否啟動:
3、測試:
(1) 瀏覽CAdvisor收集服務:
(2) 瀏覽 influxdb 存儲服務:
(3) 瀏覽 grafana 展現服務:
初始用戶名:admin ;密碼:admin
● grafana 配置:
① 配置數據源:
② 配置面板panel: