国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Docker進階:Docker Compose(容器編排) 管理多容器應(yīng)用—實戰(zhàn)案例演示

這篇具有很好參考價值的文章主要介紹了Docker進階:Docker Compose(容器編排) 管理多容器應(yīng)用—實戰(zhàn)案例演示。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


??The Begin??點點關(guān)注,收藏不迷路??

Docker進階:Docker Compose(容器編排) 管理多容器應(yīng)用—實戰(zhàn)案例演示,容器化與編排技術(shù)深度解析,docker,容器,運維,Docker Compose,容器編排,微服務(wù)編排,原力計劃

在開始之前,我們需要確保已經(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進階:Docker Compose(容器編排) 管理多容器應(yīng)用—實戰(zhàn)案例演示,容器化與編排技術(shù)深度解析,docker,容器,運維,Docker Compose,容器編排,微服務(wù)編排,原力計劃

下面是一個簡單的示例來說明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

Docker進階:Docker Compose(容器編排) 管理多容器應(yīng)用—實戰(zhàn)案例演示,容器化與編排技術(shù)深度解析,docker,容器,運維,Docker Compose,容器編排,微服務(wù)編排,原力計劃

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進階:Docker Compose(容器編排) 管理多容器應(yīng)用—實戰(zhàn)案例演示,容器化與編排技術(shù)深度解析,docker,容器,運維,Docker Compose,容器編排,微服務(wù)編排,原力計劃

三、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ù)類):
Docker進階:Docker Compose(容器編排) 管理多容器應(yīng)用—實戰(zhàn)案例演示,容器化與編排技術(shù)深度解析,docker,容器,運維,Docker Compose,容器編排,微服務(wù)編排,原力計劃
Docker進階:Docker Compose(容器編排) 管理多容器應(yīng)用—實戰(zhàn)案例演示,容器化與編排技術(shù)深度解析,docker,容器,運維,Docker Compose,容器編排,微服務(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

Docker進階:Docker Compose(容器編排) 管理多容器應(yīng)用—實戰(zhàn)案例演示,容器化與編排技術(shù)深度解析,docker,容器,運維,Docker Compose,容器編排,微服務(wù)編排,原力計劃

3、微服務(wù)project修改

Docker進階:Docker Compose(容器編排) 管理多容器應(yīng)用—實戰(zhàn)案例演示,容器化與編排技術(shù)深度解析,docker,容器,運維,Docker Compose,容器編排,微服務(wù)編排,原力計劃

swagger測試:http://http://localhost:你的微服務(wù)端口/swagger-ui.html

Docker進階:Docker Compose(容器編排) 管理多容器應(yīng)用—實戰(zhàn)案例演示,容器化與編排技術(shù)深度解析,docker,容器,運維,Docker Compose,容器編排,微服務(wù)編排,原力計劃
Docker進階:Docker Compose(容器編排) 管理多容器應(yīng)用—實戰(zhàn)案例演示,容器化與編排技術(shù)深度解析,docker,容器,運維,Docker Compose,容器編排,微服務(wù)編排,原力計劃
Docker進階:Docker Compose(容器編排) 管理多容器應(yīng)用—實戰(zhàn)案例演示,容器化與編排技術(shù)深度解析,docker,容器,運維,Docker Compose,容器編排,微服務(wù)編排,原力計劃

4、打包

Docker進階:Docker Compose(容器編排) 管理多容器應(yīng)用—實戰(zhàn)案例演示,容器化與編排技術(shù)深度解析,docker,容器,運維,Docker Compose,容器編排,微服務(wù)編排,原力計劃

源碼及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

Docker進階:Docker Compose(容器編排) 管理多容器應(yīng)用—實戰(zhàn)案例演示,容器化與編排技術(shù)深度解析,docker,容器,運維,Docker Compose,容器編排,微服務(wù)編排,原力計劃
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]#

Docker進階:Docker Compose(容器編排) 管理多容器應(yīng)用—實戰(zhàn)案例演示,容器化與編排技術(shù)深度解析,docker,容器,運維,Docker Compose,容器編排,微服務(wù)編排,原力計劃

swagger測試:

Docker進階:Docker Compose(容器編排) 管理多容器應(yīng)用—實戰(zhàn)案例演示,容器化與編排技術(shù)深度解析,docker,容器,運維,Docker Compose,容器編排,微服務(wù)編排,原力計劃

Docker進階:Docker Compose(容器編排) 管理多容器應(yīng)用—實戰(zhàn)案例演示,容器化與編排技術(shù)深度解析,docker,容器,運維,Docker Compose,容器編排,微服務(wù)編排,原力計劃
Docker進階:Docker Compose(容器編排) 管理多容器應(yīng)用—實戰(zhàn)案例演示,容器化與編排技術(shù)深度解析,docker,容器,運維,Docker Compose,容器編排,微服務(wù)編排,原力計劃


不用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

Docker進階:Docker Compose(容器編排) 管理多容器應(yīng)用—實戰(zhàn)案例演示,容器化與編排技術(shù)深度解析,docker,容器,運維,Docker Compose,容器編排,微服務(wù)編排,原力計劃

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

Docker進階:Docker Compose(容器編排) 管理多容器應(yīng)用—實戰(zhàn)案例演示,容器化與編排技術(shù)深度解析,docker,容器,運維,Docker Compose,容器編排,微服務(wù)編排,原力計劃

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 .

Docker進階:Docker Compose(容器編排) 管理多容器應(yīng)用—實戰(zhàn)案例演示,容器化與編排技術(shù)深度解析,docker,容器,運維,Docker Compose,容器編排,微服務(wù)編排,原力計劃

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]#

Docker進階:Docker Compose(容器編排) 管理多容器應(yīng)用—實戰(zhàn)案例演示,容器化與編排技術(shù)深度解析,docker,容器,運維,Docker Compose,容器編排,微服務(wù)編排,原力計劃

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]#

Docker進階:Docker Compose(容器編排) 管理多容器應(yīng)用—實戰(zhàn)案例演示,容器化與編排技術(shù)深度解析,docker,容器,運維,Docker Compose,容器編排,微服務(wù)編排,原力計劃

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>

Docker進階:Docker Compose(容器編排) 管理多容器應(yīng)用—實戰(zhàn)案例演示,容器化與編排技術(shù)深度解析,docker,容器,運維,Docker Compose,容器編排,微服務(wù)編排,原力計劃

8、swagger測試:http://http://ip:你的微服務(wù)端口/swagger-ui.html

Docker進階:Docker Compose(容器編排) 管理多容器應(yīng)用—實戰(zhàn)案例演示,容器化與編排技術(shù)深度解析,docker,容器,運維,Docker Compose,容器編排,微服務(wù)編排,原力計劃

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>

Docker進階:Docker Compose(容器編排) 管理多容器應(yīng)用—實戰(zhàn)案例演示,容器化與編排技術(shù)深度解析,docker,容器,運維,Docker Compose,容器編排,微服務(wù)編排,原力計劃

測試成功?。。?/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)用程序。

七、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ù)

Docker進階:Docker Compose(容器編排) 管理多容器應(yīng)用—實戰(zhàn)案例演示,容器化與編排技術(shù)深度解析,docker,容器,運維,Docker Compose,容器編排,微服務(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)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 04-docker compose容器編排

    ? Compose 是Docker公司推出的一個工具軟件,可以管理多個Dokcer容器組成一個應(yīng)用。你需要定義一個YAML格式的配置文件 docker-compose.yml , 寫好多個容器之間的調(diào)用關(guān)系 。然后,只要一個命令,就能同時啟動/關(guān)閉這些容器 簡單來說,Docker Compose 是Docker官方的開源項目, 負責(zé)實

    2024年02月09日
    瀏覽(45)
  • Docker六 | Docker Compose容器編排

    目錄 Docker Compose 基本概念 使用步驟? 常用命令? Docker-Compose是Docker官方的開源項目,負責(zé)實現(xiàn)對Docker容器集群的快速編排。Compose可以管理多個Docker容器組成一個應(yīng)用。 需要定義一個YAML格式的配置文件docker-compose.yml,寫好多個容器之間的調(diào)用關(guān)系,然后只需一個命令就能同時

    2024年02月02日
    瀏覽(25)
  • Docker 容器編排利器 Docker Compose

    Docker 容器編排利器 Docker Compose

    目錄 一、Docker Compose 簡介 二、Docker Compose 安裝 2.1 Mac、Windows 平臺默認支持 2.2 Linux 安裝(通過包管理) 2.2.1 安裝 2.2.2 測試 2.2.3 卸載 2.3 使用PIP 安裝與卸載 2.3.1 PIP安裝 2.3.2 PIP 卸載 三、基本使用 3.1 術(shù)語 3.2 部署Flask 應(yīng)用 四、Compose 常用命令 4.1 命令對象與格式 4.2 docker-compose

    2024年03月26日
    瀏覽(22)
  • docker (十)-docker compose容器編排

    在實際工作中,部署一個應(yīng)用可能需要部署多個容器,一個一個部署非常不方便。docker compose可以一鍵部署和啟動多個容器,它使用yaml文件來編排服務(wù)。github和docker hub很多項目都提供了docker-compose.yaml文件,我們可以一鍵部署項目,非常方便。 這里可以使用 vscode 去學(xué)習(xí)dock

    2024年02月21日
    瀏覽(25)
  • Docker Compose容器的快速編排

    Docker Compose容器的快速編排

    Docker Compose項目是Docker官方的開源項目,負責(zé)實現(xiàn)對Docker容器集群的快速編排(使用一個模板文件定義多個應(yīng)用容器的啟動參數(shù)和依賴關(guān)系,并使用Docker Compose來根據(jù)這個模板文件的配置來啟動容器)。 項目/工程 - 包含一個或多個服務(wù) - 包含一個或多個容器 默認使用項目的目

    2024年02月15日
    瀏覽(24)
  • Docker——compose單機容器集群編排

    Docker——compose單機容器集群編排

    Docker-compose是一個基于Docker的容器編排工具。它使用一個YAML文件來定義和配置多個容器的集群。通過使用Docker-compose,我們可以輕松地定義、配置和協(xié)同運行多個Docker容器,而無需手動管理它們的啟動和通信。 1.為何需要Docker-compose 在現(xiàn)代應(yīng)用程序開發(fā)中,容器化技術(shù)已經(jīng)成

    2024年02月16日
    瀏覽(40)
  • 49學(xué)習(xí)容器管理平臺 Docker Swarm 的基本概念和應(yīng)用,包括節(jié)點管理、服務(wù)編排

    49學(xué)習(xí)容器管理平臺 Docker Swarm 的基本概念和應(yīng)用,包括節(jié)點管理、服務(wù)編排

    Docker Swarm 是 Docker 官方提供的容器編排工具,可以管理多個 Docker 節(jié)點,并支持自動化擴展、負載均衡等功能。下面是 Docker Swarm 的基本概念和使用方法,包括節(jié)點管理和服務(wù)編排。 在 Docker Swarm 中,一個或多個 Docker 節(jié)點組成一個 Swarm 集群,其中一個節(jié)點是 Swarm Manager,負責(zé)

    2024年02月05日
    瀏覽(26)
  • Dcoker compose單機容器集群編排管理

    目錄 一、概述 ?二、compose 部署 lnmp 1.Docker Compose 環(huán)境安裝 2.YAML 文件格式及編寫注意事項 ?3.Docker Compose配置常用字段 4.Docker Compose 常用命令 5. 配置lnmp集群依賴文件 6.修改docker-compose.yml文件 7.根據(jù)yml文件創(chuàng)建lnmp容器 Docker compose 項目是 docker 官方的開源項目,負責(zé)實現(xiàn)對 doc

    2024年02月15日
    瀏覽(23)
  • docker筆記9:Docker-compose容器編排

    docker筆記9:Docker-compose容器編排

    目錄 1.是什么? 2.?能干嘛? 3.去哪下? 4.安裝步驟? ?編輯 5.卸載步驟? ?6.Compose核心概念 ?6.1概念 6.2 Compose常用命令? ?7.Compose編排微服務(wù) 7.1改造升級微服務(wù)工程docker_boot 7.2不用Compose 7.2.1 單獨的mysql容器實例 7.3 swagger測試 7.4上面成功了,有哪些問題? 7.5 使用Compose ?7.5.1

    2024年02月09日
    瀏覽(27)
  • 尚硅谷Docker-筆記12:Compose容器編排

    尚硅谷Docker-筆記12:Compose容器編排

    Compose 是 Docker 公司推出的一個工具軟件,可以管理多個 Docker 容器組成一個應(yīng)用。你需要定義一個 YAML 格式的配置文件docker-compose.yml,寫好多個容器之間的調(diào)用關(guān)系。然后,只要一個命令,就能同時啟動/關(guān)閉這些容器。 docker建議我們每一個容器中只運行一個服務(wù),因為docker容

    2024年01月18日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包