??The Begin??點點關(guān)注,收藏不迷路??
|
在開始之前,我們需要確保已經(jīng)安裝了 Docker
。
一、Docker Compose簡介
前面我們使用 Docker 的時候,定義 Dockerfile 文件,然后使用 docker build、docker run 等命令操作容器。然而微服務(wù)架構(gòu)的應(yīng)用系統(tǒng)一般包含若干個微服務(wù),每個微服務(wù)一般都會部署多個實例,如果每個微服務(wù)都要手動啟停,那么效率之低,維護量之大可想而知。
使用 Docker Compose 可以輕松、高效的管理容器,它是一個用于定義和運行多容器 Docker 的應(yīng)用程序工具。它通過一個簡單易懂的 YAML 文件來定義應(yīng)用程序的各個服務(wù)(只需一個命令、即可啟動、關(guān)閉這些容器),并提供了簡潔的命令行界面來管理這些容器。
下面是一個簡單的示例來說明Docker Compose的工作原理:
假設(shè)我們有一個Web應(yīng)用程序,它由兩個容器組成:一個是運行Web服務(wù)器的容器,另一個是運行數(shù)據(jù)庫的容器。使用Docker Compose,我們可以將這兩個容器的配置定義在一個YAML文件中,例如docker-compose.yml:
version: '3'
services:
web:
image: nginx
ports:
- 80:80
depends_on:
- db
db:
image: mysql
environment:
- MYSQL_ROOT_PASSWORD=secret
在上面的示例中,我們定義了兩個服務(wù):web和db。每個服務(wù)都指定了所使用的鏡像和一些配置。例如,web服務(wù)使用了nginx鏡像,并將主機的端口80映射到容器的端口80。db服務(wù)使用了mysql鏡像,并設(shè)置了一個環(huán)境變量。
要啟動這個應(yīng)用程序,我們只需在命令行中運行docker-compose up命令。Docker Compose將根據(jù)docker-compose.yml文件的定義,下載所需的鏡像并創(chuàng)建和啟動相應(yīng)的容器。這兩個容器將會自動建立網(wǎng)絡(luò)連接,并按照定義的依賴關(guān)系來啟動。
通過使用Docker Compose,我們可以輕松地定義、啟動和管理多個容器組成的應(yīng)用程序。這使得開發(fā)、測試和部署復(fù)雜的多容器應(yīng)用程序變得更加簡單和可靠。
二、Docker Compose安裝
官網(wǎng):https://docs.docker.com/compose/install/standalone/
1、查看系統(tǒng)架構(gòu):
[root@zyl-server ~]# uname -s
Linux
[root@zyl-server ~]# uname -m
x86_64
[root@zyl-server ~]#
2、將Docker Compose的二進制文件下載到/usr/local/bin/docker-compose
# 官網(wǎng)安裝
sudo curl -L "https://github.com/docker/compose/releases/download/<VERSION>/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
--將<VERSION>替換為實際的版本號,$(uname -s)-$(uname -m) 為實際系統(tǒng)架構(gòu)。
下載命令:
curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-linux-x86_64" -o /usr/local/bin/docker-compose
3、授予docker-compose二進制文件可執(zhí)行權(quán)限:
sudo chmod +x /usr/local/bin/docker-compose
4、驗證Docker Compose是否安裝成功,運行以下命令:
docker-compose --version
如果一切順利,將看到Docker Compose的版本信息。
如:
Docker Compose version v2.20.2
現(xiàn)在,已經(jīng)成功地安裝了Docker Compose。即可使用docker-compose命令管理和部署Docker容器。
三、Docker Compose卸載
卸載Docker Compose,如果是?進制包?式安裝的,刪除?進制?件即可。
sudo rm /usr/local/bin/docker-compose
如果使用了非二進制方式安裝Docker Compose,例如使用包管理器或其他安裝方法,可以根據(jù)具體使用的方法來卸載Docker Compose。
以下是一些常見的卸載方法:
1、如果使用pip安裝了Docker Compose,請使用以下命令卸載:
pip uninstall docker-compose
2、如果使用包管理器(如apt、yum或dnf)安裝了Docker Compose,使用包管理器的相應(yīng)命令來卸載。例如,在Ubuntu上,可以運行以下命令:
sudo apt remove docker-compose
在CentOS上,可以運行以下命令:
sudo yum remove docker-compose
確認已成功卸載后,可以通過運行docker-compose --version命令來驗證Docker Compose是否已完全卸載。
四、Docker Compose核心概念
4.1、一文件原則(docker-compose.yml)
Docker Compose的核心理念是使用一個YAML格式的Compose文件來定義容器化應(yīng)用的結(jié)構(gòu)和配置信息。這個Compose文件可以包含多個服務(wù)以及它們相關(guān)的配置項,例如鏡像、環(huán)境變量、網(wǎng)絡(luò)設(shè)置等。通過這個一文件原則,我們可以將應(yīng)用的整體結(jié)構(gòu)和配置信息集中地進行管理和維護。
4.2、服務(wù)(service)
服務(wù)的定義
服務(wù)(service)是Compose文件中的一個關(guān)鍵概念,它代表了一個個容器化的應(yīng)用。每個服務(wù)可以包括一個或多個容器,共同完成特定的功能。比如,一個Web應(yīng)用可能包含一個Web服務(wù)器容器和一個數(shù)據(jù)庫容器。
服務(wù)的配置
在Compose文件中,我們可以為每個服務(wù)指定以下配置項:
鏡像(image):用于指定服務(wù)所使用的Docker鏡像。
環(huán)境變量(environment):用于設(shè)置服務(wù)容器的環(huán)境變量。
端口映射(ports):用于將容器內(nèi)的端口映射到主機上。
依賴關(guān)系(depends_on):用于指定服務(wù)之間的依賴關(guān)系,確保它們按照正確的順序啟動。
服務(wù)的啟動和管理 通過執(zhí)行docker-compose up命令,我們可以啟動Compose文件中定義的所有服務(wù)。
Docker Compose會自動創(chuàng)建和管理相關(guān)的容器。同時,我們還可以使用其他命令來管理服務(wù),如docker-compose stop停止服務(wù)、docker-compose restart重啟服務(wù)等。
4.3、工程(project)
工程的定義
工程(project)是Docker Compose中的另一個核心概念,它代表了一個Compose文件所定義的完整應(yīng)用。一個工程可以包含多個服務(wù),通過Compose文件統(tǒng)一管理和部署。
多工程支持
Docker Compose不僅支持單一工程,還可以同時管理多個工程。通過指定不同的Compose文件,我們可以輕松地定義和管理多個應(yīng)用。
多環(huán)境支持
在實際開發(fā)和部署中,我們通常會有不同的環(huán)境(如開發(fā)、測試、生產(chǎn)環(huán)境)需要支持。Docker Compose通過使用不同的Compose文件,可以方便地適配不同的環(huán)境配置。
五、Docker Compose使用步驟
使用Docker Compose編排微服務(wù)的步驟
1、編寫Compose文件:使用YAML語法編寫一個Compose文件,定義每個微服務(wù)及其相關(guān)配置,如鏡像、端口映射和環(huán)境變量等。
2、定義服務(wù)之間的依賴關(guān)系:使用depends_on關(guān)鍵字定義每個服務(wù)之間的依賴關(guān)系,以確保它們按正確的順序啟動。
3、運行Compose文件:使用docker-compose命令運行Compose文件,Docker Compose將會自動創(chuàng)建和管理所需的容器,并啟動微服務(wù)。
4、監(jiān)控和擴展:使用Docker Compose可以輕松監(jiān)控和擴展微服務(wù)。通過添加新的服務(wù)實例或增加容器數(shù)量,可以根據(jù)應(yīng)用程序的需求進行快速擴展。
六、Docker Compose編排微服務(wù)
6.1、實戰(zhàn)-改造升級微服務(wù)project(常規(guī)部署微服務(wù)項目)
第一版(無mysql、redis數(shù)據(jù)庫,無swagger-ui、無業(yè)務(wù)類):
改造升級:
1、建庫建表
##建庫
CREATE DATABASE demo1;
##建表
CREATE TABLE `t_user` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(50) NOT NULL DEFAULT '' COMMENT '用戶名',
`password` varchar(50) NOT NULL DEFAULT '' COMMENT '密碼',
`sex` tinyint(4) NOT NULL DEFAULT '0' COMMENT '性別 0=女 1=男 ',
`deleted` tinyint(4) unsigned NOT NULL DEFAULT '0' COMMENT '刪除標(biāo)志,默認0不刪除,1刪除',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時間',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='用戶表'
2、啟動mysql,redis,這里使用docker部署
docker run -d -p 3306:3306 --name mysql-5.7 -e MYSQL_ROOT_PASSWORD=123456 -v /mysql/data:/var/lib/mysql mysql:5.7
docker run -d -p 6379:6379 --privileged=true --name my-redis -v /apps/redis/redis.conf:/etc/redis/redis.conf -v /apps/redis/data:/data -d redis:7.0.9 redis-server /etc/redis/redis.conf
3、微服務(wù)project修改
swagger測試:http://http://localhost:你的微服務(wù)端口/swagger-ui.html
4、打包
源碼及jar下載地址:https://download.csdn.net/download/qq_41840843/88332778
5、上傳jar至/root/my-projects,并編寫Dockerfile
vi Dockerfile,文件內(nèi)容:
# 基礎(chǔ)鏡像使用java
FROM java:8
# 作者
MAINTAINER zyl
# VOLUME 指定臨時文件目錄為/tmp,在主機/var/lib/docker目錄下創(chuàng)建了一個臨時文件并鏈接到容器的/tmp
VOLUME /tmp
# 將jar包添加到容器中并更名為zzyy_docker.jar
ADD demo2-0.0.1-SNAPSHOT.jar zyl_docker.jar
# 運行jar包
RUN bash -c 'touch /zyl_docker.jar'
ENTRYPOINT ["java","-jar","/zyl_docker.jar"]
#暴露6001端口作為微服務(wù)
EXPOSE 6001
6、構(gòu)建鏡像
docker build -t zyl_docker:1.0 .
[root@zyl-server my-projects]# docker build -t zyl_docker:1.0 .
DEPRECATED: The legacy builder is deprecated and will be removed in a future release.
BuildKit is currently disabled; enable it by removing the DOCKER_BUILDKIT=0
environment-variable.
Sending build context to Docker daemon 54.53MB
Step 1/7 : FROM java:8
---> d23bdf5b1b1b
Step 2/7 : MAINTAINER zyl
---> Running in 0b94bf865db4
Removing intermediate container 0b94bf865db4
---> 7047fae445bc
Step 3/7 : VOLUME /tmp
---> Running in 0c1f38b522a5
Removing intermediate container 0c1f38b522a5
---> 4a2014520455
Step 4/7 : ADD demo2-0.0.1-SNAPSHOT.jar zyl_docker.jar
---> 32de0000fc4c
Step 5/7 : RUN bash -c 'touch /zyl_docker.jar'
---> Running in ec844531707c
Removing intermediate container ec844531707c
---> 15c50c6da487
Step 6/7 : ENTRYPOINT ["java","-jar","/zyl_docker.jar"]
---> Running in 1c76fb58c562
Removing intermediate container 1c76fb58c562
---> d3f63fdf430e
Step 7/7 : EXPOSE 6001
---> Running in e9ef4587e5ba
Removing intermediate container e9ef4587e5ba
---> 6a1e2c0365fd
Successfully built 6a1e2c0365fd
Successfully tagged zyl_docker:1.0
[root@zyl-server my-projects]#
7、列出本地主機上的Docker鏡像
[root@zyl-server my-projects]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
zyl_docker 1.0 6a1e2c0365fd 18 seconds ago 752MB
my-spring-boot-app latest 0e110c7ac812 12 days ago 490MB
mytomcat latest 7b01ac741538 13 days ago 838MB
8、運行 zyl_docker 鏡像
報錯:[root@zyl-server my-projects]# docker run -d -p 6001:6001 6a1e2c0365fd 24f5aff8de0a4ebd2446e4f325dfff908e506e6280eb7b5ecd0ca1578cdc3833 docker: Error response from daemon: driver failed programming external connectivity on endpoint musing_ardinghelli (9d7e940750a0890604a234d2c1b3c7cc2dca2004a66184aee3120e2f9b7ce5ab): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 6001 -j DNAT --to-destination 172.17.0.4:6001 ! -i docker0: iptables: No chain/target/match by that name. (exit status 1)).
[root@zyl-server my-projects]#
解決:
在我們啟動了Docker后,我們再對防火墻firewalld進行操作,就會發(fā)生上述報錯。
systemctl restart docker 重啟docker服務(wù)即可。
再次運行:
[root@zyl-server my-projects]# docker run -d -p 6379:6379 --privileged=true --name my-redis -v /apps/redis/redis.conf:/etc/redis/redis.conf -v /apps/redis/data:/data -d redis:7.0.9 redis-server /etc/redis/redis.conf
79a615e1c6f7fdc06a03a75969e00c49dc932c3f384ca4a7441b006107ae09da
[root@zyl-server my-projects]# docker run -d -p 3306:3306 --name mysql-5.7 -e MYSQL_ROOT_PASSWORD=123456 -v /mysql/data:/var/lib/mysql mysql:5.7 00412323842df42e7cab5da36c419d872b94f5a7b145c73886693fb1a2fe2f5e
[root@zyl-server my-projects]# docker run -d -p 6001:6001 6a1e2c0365fd
6c6c33d4cf0800c9977750d00bb3a5614269136803a93c74d8710d74488495ee
[root@zyl-server my-projects]#
swagger測試:
不用Docker Compose,需要按順序啟動:
1、單獨的mysql容器
2、實例單獨的redis容器實例
3、微服務(wù)project
上面不用Docker Compose情況,有哪些問題?
1、先后順序要求固定,先mysql+redis才能微服務(wù)訪問成功,需要確保mysql容器和redis容器在啟動微服務(wù)之前已經(jīng)處于運行狀態(tài)。
2、多個run命令…,需要手動運行適當(dāng)?shù)膁ocker run命令來啟動每個容器。
3、容器間的啟?;蝈礄C,有可能導(dǎo)致IP地址對應(yīng)的容器實例變化,映射出錯要么生產(chǎn)IP寫死(可以但是不推薦),要么通過服務(wù)調(diào)用,增加了管理和可伸縮性方面的復(fù)雜性。
6.2、實戰(zhàn)-改造升級微服務(wù)project(使用Docker Compose編排微服務(wù))
1、第二次修改微服務(wù)工程project
修改數(shù)據(jù)庫IP地址為服務(wù)名:
## spring.datasource.url=jdbc:mysql://192.168.234.10:3306/demo1?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.url=jdbc:mysql://mysql:3306/demo1?useUnicode=true&characterEncoding=utf-8&useSSL=false
## spring.redis.host=192.168.234.10
spring.redis.host=redis
2、重新打包項目,替換舊版demo2-0.0.1-SNAPSHOT.jar
1、刪除舊版demo2-0.0.1-SNAPSHOT.jar
[root@zyl-server my-projects]# rm -rf demo2-0.0.1-SNAPSHOT.jar
[root@zyl-server my-projects]#
2、重新打包上傳demo2-0.0.1-SNAPSHOT.jar
3、在/root/my-projects下,編寫docker-compose.yml文件
文件內(nèi)容:
version: "3"
services:
microService:
image: zyl_docker:1.0
container_name: demo2
ports:
- "6001:6001"
volumes:
- /app/microService:/data
networks:
- zyl_network
depends_on:
- redis
- mysql
redis:
image: redis:7.0.9
ports:
- "6379:6379"
volumes:
- /app/redis/redis.conf:/etc/redis/redis.conf
- /app/redis/data:/data
networks:
- zyl_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: 'demo1'
MYSQL_USER: 'zyl'
MYSQL_PASSWORD: '123456'
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:
- zyl_network
command: --default-authentication-plugin=mysql_native_password #解決外部無法訪問
networks:
zyl_network:
文件解讀:
這個配置文件。定義了三個服務(wù):
microService、redis和mysql,并在zyl_network網(wǎng)絡(luò)上進行通信。
1、microService服務(wù)使用自定義的zyl_docker:1.0鏡像,容器名稱為demo2,將主機的6001端口映射到容器的6001端口。將/app/demo2目錄掛載到容器的/data目錄。
2、redis服務(wù)使用redis:7.0.9鏡像,將主機的6379端口映射到容器的6379端口。
還將/app/redis/redis.conf掛載到容器的/etc/redis/redis.conf,并將/app/redis/data掛載到容器的/data目錄。
通過redis-server /etc/redis/redis.conf命令啟動。
3、mysql服務(wù)使用mysql:5.7鏡像,并設(shè)置了一些環(huán)境變量來配置MySQL實例。
將主機的3306端口映射到容器的3306端口。
將/app/mysql/db掛載到容器的/var/lib/mysql,并將/app/mysql/conf/my.cnf掛載到容器的/etc/my.cnf。
還有/app/mysql/init目錄掛載到容器的/docker-entrypoint-initdb.d目錄,以便在初始化數(shù)據(jù)庫時運行腳本。
4、使用--default-authentication-plugin=mysql_native_password命令解決外部無法訪問的問題。
5、最后,該配置文件定義了一個名為zyl_network的網(wǎng)絡(luò),用于連接這三個服務(wù)。
4、構(gòu)建鏡像
先刪除之前運行的mysql容器、redis容器、微服務(wù)鏡像和容器實例。
---這里是測試環(huán)境,非測試環(huán)境慎用該批量操作?。。?!
[root@zyl-server my-projects]# docker stop $(docker ps -aq)
863016411ded
b5293f455952
0068f033e4e8
[root@zyl-server my-projects]# docker rm $(docker ps -aq)
[root@zyl-server my-projects]# docker rmi zyl_docker:1.0
重新構(gòu)建鏡像:
docker build -t zyl_docker:1.0 .
5、驗證和顯示Docker Compose配置文件的有效性
docker-compose config -q命令用于驗證和顯示Docker Compose配置文件的有效性,并以安靜模式輸出配置文件。它會檢查配置文件的語法錯誤和格式問題,并驗證所使用的鏡像是否可用。
如果配置文件有效且正確,該命令不會產(chǎn)生任何輸出。如果存在錯誤或問題,它將顯示相關(guān)的錯誤消息。
[root@zyl-server my-projects]# docker-compose config -q
[root@zyl-server my-projects]#
6、執(zhí)行 docker-compose up 或者 執(zhí)行 docker-compose up -d
使用docker-compose up命令啟動這三個服務(wù),這將在終端窗口中顯示服務(wù)的日志輸出。如果不希望在終端中查看日志輸出,并且希望以后臺模式啟動服務(wù),則可以使用docker-compose up -d命令。
這將以守護進程模式啟動服務(wù),并在后臺運行。如果使用后臺模式,則可以使用docker-compose logs命令來查看服務(wù)的日志輸出。
1、當(dāng)前沒有正在運行的容器
[root@zyl-server my-projects]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@zyl-server my-projects]#
2、執(zhí)行docker-compose up -d
[root@zyl-server my-projects]# docker-compose up -d
[+] Running 4/4
? Network my-projects_zyl_network Created 0.0s
? Container my-projects-mysql-1 Started 0.4s
? Container my-projects-redis-1 Started 0.4s
? Container demo2 Started 0.6s
[root@zyl-server my-projects]#
7、驗證服務(wù)
1、列出Docker中的網(wǎng)絡(luò)列表
[root@zyl-server my-projects]# docker network ls
NETWORK ID NAME DRIVER SCOPE
5a594d4c92e7 bridge bridge local
fe8aa9233f89 host host local
80480229149d my-projects_zyl_network bridge local
da1bb471897e mynetwork bridge local
7ae86ca33507 none null local
e1aea82ce159 redis-network bridge local
[root@zyl-server my-projects]#
2、再次列出正在運行的容器(mysql、redis、zyl_docker已啟動運行)
[root@zyl-server my-projects]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d10f1034b7a7 zyl_docker:1.0 "java -jar /zyl_dock…" 4 seconds ago Up 3 seconds 0.0.0.0:6001->6001/tcp, :::6001->6001/tcp demo2
5a174e725026 redis:7.0.9 "docker-entrypoint.s…" 4 seconds ago Up 3 seconds 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp my-projects-redis-1
009428bcad42 mysql:5.7 "docker-entrypoint.s…" 4 seconds ago Up 3 seconds 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp my-projects-mysql-1
[root@zyl-server my-projects]#
3、進入mysql容器,新建庫、建表
docker exec -it 009428bcad42 /bin/bash
[root@zyl-server my-projects]# docker exec -it 009428bcad42 /bin/bash
root@009428bcad42:/# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.36 MySQL Community Server (GPL)
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases
-> ;
+--------------------+
| Database |
+--------------------+
| information_schema |
| demo1 |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
mysql> use demo1
Database changed
mysql> show tables;
Empty set (0.00 sec)
mysql>
##建表:
CREATE TABLE `t_user` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`username` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '用戶名',
`password` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '密碼',
`sex` TINYINT(4) NOT NULL DEFAULT '0' COMMENT '性別 0=女 1=男 ',
`deleted` TINYINT(4) UNSIGNED NOT NULL DEFAULT '0' COMMENT '刪除標(biāo)志,默認0不刪除,1刪除',
`update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間',
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時間',
PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='用戶表';
##當(dāng)前t_user為空表
mysql> select * from t_user;
Empty set (0.00 sec)
mysql>
8、swagger測試:http://http://ip:你的微服務(wù)端口/swagger-ui.html
mysql數(shù)據(jù)庫驗證:
mysql> select * from t_user;
+----+----------+----------+-----+---------+---------------------+---------------------+
| id | username | password | sex | deleted | update_time | create_time |
+----+----------+----------+-----+---------+---------------------+---------------------+
| 1 | zyl1 | 18746a | 0 | 0 | 2023-09-12 16:26:14 | 2023-09-12 16:26:14 |
| 2 | zyl2 | 434f8c | 0 | 0 | 2023-09-12 16:26:14 | 2023-09-12 16:26:14 |
| 3 | zyl3 | c8ce19 | 0 | 0 | 2023-09-12 16:26:14 | 2023-09-12 16:26:14 |
+----+----------+----------+-----+---------+---------------------+---------------------+
3 rows in set (0.00 sec)
mysql>
測試成功?。。?/strong>
6.3、總結(jié)-Docker Compose的優(yōu)點
在現(xiàn)代應(yīng)用程序開發(fā)中,微服務(wù)架構(gòu)已經(jīng)成為一種非常流行的架構(gòu)模式。然而,微服務(wù)的管理和部署通常會面臨一些挑戰(zhàn),例如網(wǎng)絡(luò)通信和協(xié)調(diào)。為了解決這些問題,Docker Compose作為一個強大的工具應(yīng)運而生,它能夠幫助開發(fā)者輕松地編排和管理微服務(wù)。
1、簡化部署:Docker Compose允許您使用簡單的YAML文件定義應(yīng)用程序的組成部分,并將它們統(tǒng)一地部署為容器。不再需要手動操作每個容器,大大簡化了部署過程。
2、管理復(fù)雜網(wǎng)絡(luò):微服務(wù)通常由多個容器組成,它們需要相互通信。Docker Compose可以自動創(chuàng)建和管理容器之間的網(wǎng)絡(luò),使得服務(wù)之間的通信變得更加便捷。
3、擴展性:Docker Compose允許您根據(jù)需要輕松地擴展微服務(wù)。通過添加新的服務(wù)實例或增加容器數(shù)量,可以快速響應(yīng)應(yīng)用程序的需求變化。
4、避免依賴沖突:不同的微服務(wù)可能依賴于不同版本的軟件或庫。Docker Compose可以確保每個服務(wù)都在自己的容器中運行,避免了依賴沖突的問題。
5、簡化本地開發(fā)環(huán)境:使用Docker Compose可以輕松創(chuàng)建本地開發(fā)環(huán)境,不再需要為每個服務(wù)手動安裝和配置依賴項。
Docker Compose為我們提供了一個簡單且強大的工具,用于編排和管理微服務(wù)。它簡化了部署過程,提高了擴展性,并避免了依賴沖突的問題。通過使用Docker Compose,我們可以更加輕松地構(gòu)建、部署和管理基于微服務(wù)架構(gòu)的應(yīng)用程序。
文章來源:http://www.zghlxwxcb.cn/news/detail-709703.html
七、Docker 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 # 進入容器實例內(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編排過的容器進程
docker-compose logs yml里面的服務(wù)id # 查看容器輸出日志
dokcer-compose config # 檢查配置
dokcer-compose config -q # 檢查配置,有問題才有輸出
docker-compose restart # 重啟服務(wù)
docker-compose start # 啟動服務(wù)
docker-compose stop # 停止服務(wù)
文章來源地址http://www.zghlxwxcb.cn/news/detail-709703.html
??The End??點點關(guān)注,收藏不迷路??
|
到了這里,關(guān)于Docker進階:Docker Compose(容器編排) 管理多容器應(yīng)用—實戰(zhàn)案例演示的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!