一、docker-compose概述
Docker-Compose是Docker官方的開源項目,負(fù)責(zé)實現(xiàn)對Docker容器集群的快速編排。
Compose 是 Docker 公司推出的一個工具軟件,可以管理多個 Docker 容器組成一個應(yīng)用。你需要定義一個 YAML 格式的配置文件docker-compose.yml,寫好多個容器之間的調(diào)用關(guān)系。然后,只要一個命令,就能同時啟動/關(guān)閉這些容器
1、產(chǎn)生的背景
docker建議我們每一個容器中只運行一個服務(wù),因為docker容器本身占用資源極少,所以最好是將每個服務(wù)單獨的分割開來但是這樣我們又面臨了一個問題:如果我需要同時部署好多個服務(wù),難道要每個服務(wù)單獨寫Dockerfile然后在構(gòu)建鏡像、構(gòu)建容器、這樣累都累死了,所以docker官方給我們提供了docker-compose多服務(wù)部署的工具。
例如要實現(xiàn)一個Web微服務(wù)項目,除了Web服務(wù)容器本身,往往還需要再加上后端的數(shù)據(jù)庫mysql服務(wù)容器,redis服務(wù)器,注冊中心eureka,甚至還包括負(fù)載均衡容器等等。。。。。。
Compose允許用戶通過一個單獨的docker-compose.yml模板文件(YAML 格式)來定義一組相關(guān)聯(lián)的應(yīng)用容器為一個項目(project)??梢院苋菀椎赜靡粋€配置文件定義一個多容器的應(yīng)用,然后使用一條指令安裝這個應(yīng)用的所有依賴,完成構(gòu)建。Docker-Compose 解決了容器與容器之間如何管理編排的問題。
2、核心概念
1、docker-compose.yml
docker-compose.yml文件就是Compose的核心配置,基于這個配置文件來生成我們需要的服務(wù)和工程。
2、服務(wù)(service)
一個個應(yīng)用容器實例,比如訂單微服務(wù)、庫存微服務(wù)、mysql容器、nginx容器或者redis容器。
3、工程(project)
由一組關(guān)聯(lián)的應(yīng)用容器組成的一個完整業(yè)務(wù)單元,在 docker-compose.yml 文件中定義。
3、使用的三個步驟
1、編寫Dockerfile定義各個微服務(wù)應(yīng)用并構(gòu)建出對應(yīng)的鏡像文件
dockerfile的使用,使用dockerfile部署springboot項目
2、使用 docker-compose.yml 定義一個完整業(yè)務(wù)單元,安排好整體應(yīng)用中的各個容器服務(wù)
3、最后,執(zhí)行docker-compose up命令 來啟動并運行整個應(yīng)用程序,完成一鍵部署上線
4、常用命令
# Compose常用命令
docker-compose -h # 查看幫助
docker-compose up # 啟動所有docker-compose服務(wù)
docker-compose up -d # 啟動所有docker-compose服務(wù)并后臺運行
docker-compose down # 停止并刪除容器、網(wǎng)絡(luò)、卷、鏡像。
docker-compose exec yml里面的服務(wù)id # 進(jìn)入容器實例內(nèi)部 docker-compose exec docker-compose.yml文件中寫的服務(wù)id /bin/bash
docker-compose ps # 展示當(dāng)前docker-compose編排過的運行的所有容器
docker-compose top # 展示當(dāng)前docker-compose編排過的容器進(jìn)程
docker-compose logs yml里面的服務(wù)id # 查看容器輸出日志
docker-compose config # 檢查配置
docker-compose config -q # 檢查配置,有問題才有輸出
docker-compose restart # 重啟服務(wù)
docker-compose start # 啟動服務(wù)
docker-compose stop # 停止服務(wù)
二、下載安裝
1、官方文檔
官網(wǎng):https://docs.docker.com/compose/compose-file/compose-file-v3/
推薦使用3版本,記住一定要與docker引擎版本匹配,使用docker -v查看引擎版本。
2、下載
官網(wǎng)下載:https://docs.docker.com/compose/install/
# 下載
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 開啟可執(zhí)行權(quán)限
sudo chmod +x /usr/local/bin/docker-compose
# 查看版本
sudo docker-compose --version
#docker-compose version 1.29.2, build 5becea4c
3、卸載
# 如果使用curl方式安裝的,這樣卸載即可
sudo rm /usr/local/bin/docker-compose
三、使用compose
1、前置知識,將一個springboot項目打包為鏡像
dockerfile的使用,使用dockerfile部署springboot項目
2、編寫docker-compose.yml文件
需要單獨一個文件夾!相當(dāng)于對應(yīng)的docker run命令的一個個參數(shù),理解起來也非常簡單!
# 版本
version: "3"
# 寫死,所有的服務(wù)
services:
# 服務(wù)名,這是我們的springboot項目,需要使用redis+mysql
microService:
# 鏡像名
image: cxf_docker:1.0
# 如果不加的話,會目錄前綴+服務(wù)名+1
container_name: ms01
ports:
- "6001:6001"
# 容器數(shù)據(jù)卷映射
volumes:
- /app/microService:/data
# 網(wǎng)絡(luò),會默認(rèn)加上目錄前綴
networks:
- my_network
# 依賴于mysql與redis
depends_on:
- redis
- mysql
# 服務(wù)名,可以用該名字訪問網(wǎng)絡(luò)
redis:
image: redis:6.0.8
ports:
- "6379:6379"
volumes:
- /app/redis/redis.conf:/etc/redis/redis.conf
- /app/redis/data:/data
networks:
- my_network
command: redis-server /etc/redis/redis.conf
mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: '123456'
MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
MYSQL_DATABASE: 'db2021'
MYSQL_USER: 'zzyy'
MYSQL_PASSWORD: 'zzyy123'
ports:
- "3306:3306"
volumes:
- /app/mysql/db:/var/lib/mysql
- /app/mysql/conf/my.cnf:/etc/my.cnf
- /app/mysql/init:/docker-entrypoint-initdb.d
networks:
- my_network
command: --default-authentication-plugin=mysql_native_password #解決外部無法訪問
# 網(wǎng)絡(luò),會默認(rèn)加上目錄前綴
networks:
my_network:
3、啟動docker-compose
在docker-compose.yml所在目錄執(zhí)行。文章來源:http://www.zghlxwxcb.cn/news/detail-420880.html
# 檢查配置,有問題才有輸出
docker-compose config -q
# 執(zhí)行
docker-compose up
# 或者后臺執(zhí)行
docker-compose up -d
如果本地沒有該鏡像的話,會自動pull然后run!非常的方便!文章來源地址http://www.zghlxwxcb.cn/news/detail-420880.html
4、停止
# 停止服務(wù)
docker-compose stop
到了這里,關(guān)于docker-compose容器編排使用詳解+示例的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!