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

Docker高級:Compose 容器編排

這篇具有很好參考價(jià)值的文章主要介紹了Docker高級:Compose 容器編排。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

Docker高級:Compose 容器編排

一、Docker Compose 概述

Compose 是Docker公司推出的一個(gè)軟件,可以管理多個(gè)Docker容器組成一個(gè)應(yīng)用。我們只需要定義一個(gè)YAML格式的配置文件 docker-compose.yaml 配置好多個(gè)容器之間的調(diào)用關(guān)系,最后只需要一個(gè)命令,就可以同時(shí)控制這些容器進(jìn)行啟動(dòng) / 關(guān)閉。Compose 允許用戶通過一個(gè)單獨(dú)的 docker-compose.yaml 模板文件定義一組容器為一個(gè)項(xiàng)目。

舉個(gè)例子:

假設(shè)我們一個(gè)項(xiàng)目中使用到了Redis、Mysql、nginx等等很多組件技術(shù),那么對應(yīng)的Docker容器的實(shí)例也會(huì)變得非常雜亂。如果其中有一個(gè)訂單的微服務(wù)需要運(yùn)行,那么就需要前面Redis、Mysql…所有容器都必須啟動(dòng)之后,訂單服務(wù)才可以正常運(yùn)行。 至此,就面臨到了兩個(gè)問題:

容器實(shí)例非常繁多,復(fù)雜
容器的啟停以及他們之間的啟動(dòng)順序需要合理的管理

這時(shí),我們就需要一個(gè)介質(zhì)去管理容器實(shí)例之間的協(xié)作方式,Docker Compose就為我們合理的解決掉了所面臨的問題。當(dāng)我們要進(jìn)行啟動(dòng)容器時(shí),只需要執(zhí)行一條命令,就可以啟動(dòng)全部實(shí)例,不需要每個(gè)容器都再去一遍一遍 的docker run…

PS:最新版本的Docker本身已經(jīng)自帶了Compose 這個(gè)工具,直接使用即可。

Docker高級:Compose 容器編排

二、使用 Docker Compose

Docker Compose使用的步驟如下:

① 編寫Dockerfile定義各個(gè)微服務(wù)應(yīng)用并構(gòu)建出對應(yīng)的鏡像文件

② 使用docker-compose.yaml 定義一個(gè)完整的業(yè)務(wù)單元,安排好整體應(yīng)用中的各個(gè)容器服務(wù)

③ 執(zhí)行docker-compose up命令來啟動(dòng)并運(yùn)行整個(gè)程序,完成一鍵部署

Docker高級:Compose 容器編排

三、常用命令

  • 創(chuàng)建并啟動(dòng)docker-compose服務(wù)
docker-compose up
# 后臺(tái)運(yùn)行
docker-compose up -d
  • 停止并刪除容器、網(wǎng)絡(luò)、卷、鏡像
docker-compose down
  • 進(jìn)入容器實(shí)例內(nèi)部
docker-compose exec <yml里面的服務(wù)id> /bin/bash
  • 展示當(dāng)前docker-compose編排過的運(yùn)行的所有容器
docker-compose ps
  • 展示當(dāng)前docker-compose編排過的容器進(jìn)程
docker-compose top
  • 查看容器輸出日志
docker-compose log <yml里面的服務(wù)id>
  • 檢查配置
docker-compose config
# 有問題才輸出
docker-compose config -q
  • 重啟服務(wù)
docker-compose restart
  • 啟動(dòng)服務(wù):(類似 docker start)
docker-compose start
  • 停止服務(wù)
docker-compose stop

四、編排微服務(wù)

接下來通過一個(gè)案例學(xué)習(xí)使用Compose編排微服務(wù),具體操作如下:

Ⅰ、搭建微服務(wù)

① 創(chuàng)建測試數(shù)據(jù)庫表:t_user

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)志,默認(rèn)0不刪除,1刪除',
  `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時(shí)間',
  `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間',
  PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='用戶表'

② 搭建SpringBoot測試工程

Docker高級:Compose 容器編排
編寫配置文件

server.port=6001
# ========================alibaba.druid相關(guān)配置=====================
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://47.109.24.39:3306/docker_boot?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.druid.test-while-idle=false
# ========================redis相關(guān)配置=====================
spring.redis.database=0
spring.redis.host=47.109.24.39
spring.redis.port=6379
spring.redis.password=
spring.redis.lettuce.pool.max-active=8
spring.redis.lettuce.pool.max-wait=-1ms
spring.redis.lettuce.pool.max-idle=8
spring.redis.lettuce.pool.min-idle=0
# ========================mybatis相關(guān)配置===================
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.type-aliases-package=com.zhao.docker.entities
# ========================swagger=====================
spring.swagger2.enabled=true

搭建好服務(wù)后,我們編寫兩個(gè)測試Controller(這里主要介紹Compose 相關(guān)使用,具體Java代碼不過多糾結(jié)):

@Api(description = "用戶User接口")
@RestController
@Slf4j
public class UserController {
    @Resource
    private UserService userService;

    @ApiOperation("新增用戶 新增3條")
    @RequestMapping(value = "/user/add",method = RequestMethod.POST)
    public void addUser(){
        for (int i = 0; i <=3 ; i++) {
            User user = new User();
            user.setDeleted((byte)0);
            user.setUpdateTime(new Date());
            user.setCreateTime(new Date());
            user.setUsername("zp"+i);
            user.setPassword(IdUtil.simpleUUID().substring(0,6));
            user.setSex((byte) new Random().nextInt(2));
            userService.addUser(user);
        }
    }

    @ApiOperation("查詢用戶")
    @RequestMapping(value = "/user/find/{id}",method = RequestMethod.GET)
    public User findUser(@PathVariable Integer id){
        return userService.findUserById(id);
    }
}

③ 使用maven將編好的SpringBoot工程進(jìn)行打包,放至linux服務(wù)器中

Docker高級:Compose 容器編排

Ⅱ、編寫Dockerfile構(gòu)建鏡像

編寫Dockerfile將SpringBoot工程構(gòu)建為鏡像,命令如下:

# 基礎(chǔ)鏡像 java
FROM java:8
# 作者 xiaozhao
MAINTAINER xiaozhao
# 指定臨時(shí)文件位 /temp
VOLUME /temp
# 將jar包添加到容器 更名為zp_docker
ADD docker_boot-0.0.1-SNAPSHOT.jar zp_docker.jar
# 運(yùn)行 jar
RUN bash -c 'touch /zp_docker.jar'
ENTRYPOINT ["java","-jar","/zp_docker.jar"]
# 暴露6001端口
EXPOSE 6001

將編寫好的Dockerfile文件放至SpringBoot工程同一目錄下

Docker高級:Compose 容器編排
執(zhí)行命令構(gòu)建鏡像

Docker高級:Compose 容器編排

Docker高級:Compose 容器編排

Ⅲ、啟動(dòng)容器,測試服務(wù)

啟動(dòng)容器,使用Swagger進(jìn)行測試

Docker高級:Compose 容器編排

訪問Swagger成功,搭建微服務(wù)完成。

Docker高級:Compose 容器編排

Ⅳ、使用Compose編排容器

① 在Dockerfile同級目錄下編寫docker-compose.yml文件

# 版本
version: "3"

#服務(wù)容器實(shí)例
services:
# 服務(wù)名
  microService:
  	# 鏡像名 + 版本號(hào)
    image: zp_docker:1.0
    # 容器名稱
    container_name: my01
    # 端口配置
    ports:
      - "6001:6001"
    # 容器數(shù)據(jù)卷
    volumes:
      - /app/microService:/data
    # 網(wǎng)絡(luò)(一下容器運(yùn)行在同一個(gè)網(wǎng)段內(nèi))
    networks: 
      - xiaozhao_net 
     # 依賴的容器,服務(wù)的啟動(dòng)依賴
    depends_on: 
      - redis
      - mysql


  redis:
    image: redis:6.0.8
    ports:
      - "6379:6379"
    volumes:
      - /app/redis/redis.conf:/etc/redis/redis.conf
      - /app/redis/data:/data
    networks: 
      - xiaozhao_net 
    command: redis-server /etc/redis/redis.conf


  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: '123456'
      MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
      MYSQL_DATABASE: 'docker_boot'
    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:
      - xiaozhao_net 
    command: --default-authentication-plugin=mysql_native_password #解決外部無法訪問
networks: 
   xiaozhao_net : 

Docker高級:Compose 容器編排

② 修改微服務(wù)中的配置,將mysql和redis的IP地址換為docker-compose.yml文件中的服務(wù)名。避免宕機(jī)重啟IP變更引發(fā)問題。

server.port=6001
# ========================alibaba.druid相關(guān)配置=====================
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#spring.datasource.url=jdbc:mysql://47.109.24.39:3306/docker_boot?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.url=jdbc:mysql://mysql:3306/docker_boot?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.druid.test-while-idle=false
# ========================redis相關(guān)配置=====================
spring.redis.database=0
#spring.redis.host=47.109.24.39
spring.redis.host=redis
spring.redis.port=6379
spring.redis.password=
spring.redis.lettuce.pool.max-active=8
spring.redis.lettuce.pool.max-wait=-1ms
spring.redis.lettuce.pool.max-idle=8
spring.redis.lettuce.pool.min-idle=0
# ========================mybatis相關(guān)配置===================
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.type-aliases-package=com.zhao.docker.entities
# ========================swagger=====================
spring.swagger2.enabled=true

③ 重新將微服務(wù)打包放至linux服務(wù)器中

Docker高級:Compose 容器編排

④ 重新構(gòu)建鏡像

Docker高級:Compose 容器編排
⑤ 執(zhí)行命令,檢查docker-compose.yml配置

docker-compose config -q

Docker高級:Compose 容器編排

沒有出現(xiàn)報(bào)錯(cuò),配置正常。

⑥ 執(zhí)行啟動(dòng)命令,一鍵啟動(dòng)所有容器

# 后臺(tái)啟動(dòng)所有容器
docker-compose up -d

Docker高級:Compose 容器編排
當(dāng)在docker-compose.yml文件中不設(shè)置容器名稱時(shí),默認(rèn)為:當(dāng)前文件所處的目錄名稱_鏡像名_容器數(shù)量

⑦ 查看容器啟動(dòng)情況,可以看到所有容器啟動(dòng)成功

Docker高級:Compose 容器編排

⑧ 使用Swagger測試服務(wù)

測試添加用戶功能

Docker高級:Compose 容器編排
Docker高級:Compose 容器編排

測試查詢功能

Docker高級:Compose 容器編排

測試成功,功能接口正常,Mysql,redis服務(wù)正常??!

五、總結(jié)

在以上的測試項(xiàng)目中,我們用到了redis、Mysql組件,再加上搭建的SpringBoot工程鏡像,一共三個(gè)對應(yīng)容器。當(dāng)我們不使用Compose 去編排服務(wù)時(shí),我們總會(huì)遇到如下的問題:

  1. 啟動(dòng)容器的先后順序要求固定,必須先啟動(dòng)Mysql、Redis才能微服務(wù)訪問成功。
  2. 每次啟動(dòng)都要執(zhí)行多個(gè)run命令。
  3. 容器間的啟?;蝈礄C(jī),有可能導(dǎo)致IP地址對應(yīng)的容器實(shí)例變化,映射出錯(cuò)。

在有了Compose 后容器間的管理就非常絲滑了,本次分享的文章到這里就結(jié)束了,希望對大家有所幫助。兄弟們,快快用起來吧!

Docker高級:Compose 容器編排文章來源地址http://www.zghlxwxcb.cn/news/detail-459929.html

到了這里,關(guān)于Docker高級:Compose 容器編排的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Docker 容器編排利器 Docker Compose

    Docker 容器編排利器 Docker Compose

    目錄 一、Docker Compose 簡介 二、Docker Compose 安裝 2.1 Mac、Windows 平臺(tái)默認(rèn)支持 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容器編排

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

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

    Docker Compose容器的快速編排

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

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

    Docker——compose單機(jī)容器集群編排

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

    2024年02月16日
    瀏覽(40)
  • 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 單獨(dú)的mysql容器實(shí)例 7.3 swagger測試 7.4上面成功了,有哪些問題? 7.5 使用Compose ?7.5.1

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

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

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

    2024年01月18日
    瀏覽(25)
  • Docker進(jìn)階:Docker Compose(容器編排) 管理多容器應(yīng)用—實(shí)戰(zhàn)案例演示

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

    ??The Begin??點(diǎn)點(diǎn)關(guān)注,收藏不迷路?? 在開始之前,我們需要確保已經(jīng)安裝了 Docker 。 前面我們使用 Docker 的時(shí)候,定義 Dockerfile 文件,然后使用 docker build、docker run 等命令操作容器。然而微服務(wù)架構(gòu)的應(yīng)用系統(tǒng)一般包含若干個(gè)微服務(wù),每個(gè)微服務(wù)一般都會(huì)部署多個(gè)實(shí)例,如

    2024年02月08日
    瀏覽(25)
  • 4.docker容器編排(docker compose 與 docker swarm)

    4.docker容器編排(docker compose 與 docker swarm)

    容器編排:就是針對容器生命周期的管理,對容器的生命周期進(jìn)行更快速方便的方式進(jìn)行管理。 實(shí)例:一個(gè)java程序,依賴了mysql,redis,要想把 java 程序運(yùn)行起來,則必須要先啟動(dòng) mysql、redis。那么這三者這件就存在了依賴關(guān)聯(lián)。 ? 容器編排存在的意義: 依賴管理,當(dāng)一個(gè)容

    2024年02月03日
    瀏覽(28)
  • docker-compose容器編排使用詳解+示例

    docker-compose容器編排使用詳解+示例

    Docker-Compose是Docker官方的開源項(xiàng)目,負(fù)責(zé)實(shí)現(xiàn)對Docker容器集群的快速編排。 Compose 是 Docker 公司推出的一個(gè)工具軟件,可以管理多個(gè) Docker 容器組成一個(gè)應(yīng)用。你需要定義一個(gè) YAML 格式的配置文件docker-compose.yml,寫好多個(gè)容器之間的調(diào)用關(guān)系。然后,只要一個(gè)命令,就能同時(shí)啟

    2023年04月22日
    瀏覽(34)
  • 【云原生】Docker-compose單機(jī)容器集群編排

    【云原生】Docker-compose單機(jī)容器集群編排

    Compose是單機(jī)編排容器集群或者是分布式服務(wù)容器的應(yīng)用工具。通過Compose,可以使用YAML文件來配置應(yīng)用程序的服務(wù)。然后,使用一個(gè)命令,就可以從配置中創(chuàng)建并啟動(dòng)所有服務(wù)。 Docker-Compose是一個(gè)容器編排工具。通過一個(gè).yml或.yaml文件,將所有的容器的部署方法、文件映射、

    2024年02月09日
    瀏覽(30)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包