最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Docker Compose快速部署多容器服務(wù)實(shí)戰(zhàn)的實(shí)例詳解

 更新時(shí)間:2022年02月17日 15:45:00   作者:紅帽海綿寶寶  
使用 Docker Compose 可以輕松、高效的管理容器,它是一個(gè)用于定義和運(yùn)行多容器 Docker 的應(yīng)用程序工具,本文給大家介紹Docker Compose快速部署多容器服務(wù)實(shí)戰(zhàn),感興趣的朋友一起看看吧

1 什么是Docker Compose

前面我們使用 Docker 的時(shí)候,定義 Dockerfile 文件,然后使用 docker build、docker run 等命令操作容器。然而微服務(wù)架構(gòu)的應(yīng)用系統(tǒng)一般包含若干個(gè)微服務(wù),每個(gè)微服務(wù)一般都會(huì)部署多個(gè)實(shí)例,如果每個(gè)微服務(wù)都要手動(dòng)啟停,那么效率之低,維護(hù)量之大可想而知。

使用 Docker Compose 可以輕松、高效的管理容器,它是一個(gè)用于定義和運(yùn)行多容器 Docker 的應(yīng)用程序工具

2 安裝Docker Compose

安裝命令:

[root@iZ2ze4m2ri7irkf6h6n8zoZ ~]# curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
[root@iZ2ze4m2ri7irkf6h6n8zoZ ~]# chmod +x /usr/local/bin/docker-compose

檢查是否安裝成功:

[root@iZ2ze4m2ri7irkf6h6n8zoZ ~]# docker-compose -v

3 Docker Compose文件格式的簡(jiǎn)單介紹

Docker Compose文件一般命名為docker-compose.yml,并且執(zhí)行Docker-compose命令時(shí)在該文件所在目錄下執(zhí)行。

Docker Compose 分為三層,分別是工程(project)、服務(wù)(service)/引用標(biāo)簽、容器(container)

例如:

docker-compose.yml   # 一個(gè)文件代表一個(gè)project
 serveices:          # 服務(wù)
   container-name:   # 容器
     build: 
      - xxx:xxx
 network:            # 引用標(biāo)簽
   xxx:

下面是一個(gè)標(biāo)準(zhǔn)的docker-compose.yml文件

version: "3"  # 指定版本
services:     # services
  proxy:      # 自定義容器名稱
    build: ./proxy  # Dockerfile所在目錄,用于構(gòu)建容器
    networks: # 自定義容器網(wǎng)絡(luò)
      - frontend
  app:       
    build: ./app
    networks:
      - frontend
      - backend
  db:
    image: postgres
    networks:
      - backend
networks:
  frontend:
    driver: custom-driver-1
  backend:
    driver: custom-driver-2
    driver_opts:
      foo: "1"
      bar: "2"

4 Docker Compose常用命令

ps:列出所有運(yùn)行容器

docker-compose ps

logs:查看服務(wù)日志輸出

docker-compose logs

port:打印綁定的公共端口,下面命令可以輸出 eureka 服務(wù) 8761 端口所綁定的公共端口

docker-compose port eureka 8761

build:構(gòu)建或者重新構(gòu)建服務(wù)

docker-compose build

start:?jiǎn)?dòng)指定服務(wù)已存在的容器

docker-compose start eureka

stop:停止已運(yùn)行的服務(wù)的容器

docker-compose stop eureka

rm:刪除指定服務(wù)的容器

docker-compose rm eureka

up:構(gòu)建、啟動(dòng)容器

docker-compose up

kill:通過發(fā)送 SIGKILL 信號(hào)來停止指定服務(wù)的容器

docker-compose kill eureka

pull:下載服務(wù)鏡像

docker-compose pull eureka

scale:設(shè)置指定服務(wù)運(yùn)氣容器的個(gè)數(shù),以 service=num 形式指定

docker-compose scale user=3 movie=3

run:在一個(gè)服務(wù)上執(zhí)行一個(gè)命令

docker-compose run web bash

5 使用Docker Compose一鍵部署Spring Boot+Redis實(shí)戰(zhàn)

5.1 構(gòu)建應(yīng)用

5.1.1 Spring Boot項(xiàng)目

依賴:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--redis-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

配置文件:

spring:
  redis:
    #host: 127.0.0.1
    host: ymx.redis
    port: 6379
    password:
    jedis:
      pool:
        max-active: 8
        max-wait: -1
        max-idle: 500
        min-idle: 0
    lettuce:
      shutdown-timeout: 0

controller代碼:

@RestController
public class HelloController {

    @Autowired
    private RedisTemplate<String, String> redisTemplate;
    @RequestMapping("/hello/{id}")
    public String hello(@PathVariable("id") Integer id) {
        return redisTemplate.opsForValue().get(String.valueOf(id));
    }
    @RequestMapping("/save/{id}/{name}")
    public String save(@PathVariable("id") Integer id, @PathVariable("name") String name) {
        try {
            redisTemplate.opsForValue().set(String.valueOf(id), "Hello " + name + "!");
        } catch (Exception e) {
            return "false";
        }
        return "success";
}

5.1.2 Redis配置文件

只是將redis自帶的redis.conf做了一點(diǎn)修改

#注釋掉bind 127.0.0.1
# bind 127.0.0.1 -::1
#修改protected-mode yes->no
protected-mode no

5.2 打包應(yīng)用并構(gòu)建目錄

5.2.1 打包Spring Boot項(xiàng)目

在這里插入圖片描述

5.2.2 上傳redis.conf配置文件

5.2.3 目錄結(jié)構(gòu)

- mycompose
  - docker-compose.yml 
  - rd  
    - Dockerfile  
    - redis.conf
  - sp
    - Dockerfile  
    - sp_redis-0.0.1-SNAPSHOT.jar

5.3 編寫Dockerfile

5.3.1 Spring Boot容器的Dockerfile

FROM java:8

MAINTAINER YMX "1712229564@qq.com"
COPY sp_redis-0.0.1-SNAPSHOT.jar /root/sp_redis-0.0.1-SNAPSHOT.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar","/root/sp_redis-0.0.1-SNAPSHOT.jar"]

5.3.2 redis容器的Dockerfile

FROM redis
  
MAINTAINER ymx 1712229564@qq.com
COPY redis.conf /usr/local/etc/redis/redis.conf
EXPOSE 6379
CMD ["redis-server","/usr/local/etc/redis/redis.conf" ]

5.4 編寫docker-compose.yml

version: "2.8" # 表示該 Docker-Compose 文件使用的是 Version 2 file
services:
  sp-demo:       # 指定服務(wù)名稱
    build: ./sp  # 指定 Dockerfile 所在路徑
    ports:       # 指定端口映射
      - "9001:8080"
    links:
      - re-demo:ymx.redis # 進(jìn)行容器鏈接
  re-demo:
    build: ./rd

5.5 運(yùn)行并測(cè)試部署結(jié)果

運(yùn)行:

[root@iZ2ze4m2ri7i mycompose]# docker-compose up
Creating network "mycompose_default" with the default driver
Building re-demo
Sending build context to Docker daemon  96.77kB
Step 1/5 : FROM redis
latest: Pulling from library/redis
......

測(cè)試:

[root@iZ2ze4m2ri7i mycompose]# curl http://localhost:9001/save/2/Ymx
success
[root@iZ2ze4m2ri7i mycompose]# curl http://localhost:9001/hello/2
Hello Ymx!

6 小總結(jié)

在Spring Boot配置文件中,redis的host沒有使用localhost或者127.0.0.1,而是使用了域名ymx.redis,這一域名在docker-compose.yml文件中進(jìn)行了映射,進(jìn)而Spring Boot的容器能夠鏈接到redis容器,但是這一情況依賴于一個(gè)默認(rèn)條件,就是docker的網(wǎng)絡(luò)默認(rèn)是橋接模式,兩個(gè)容器都在同一子網(wǎng)中,因此才能夠互相訪問。

因此,links并不是唯一的容器網(wǎng)絡(luò)解決方案,在容器較多時(shí),需要使用networks進(jìn)行網(wǎng)絡(luò)的管理。

參考文章:

https://www.jianshu.com/p/658911a8cff3

https://www.jianshu.com/p/3004fbce4d37

https://blog.csdn.net/luo15242208310/article/details/88642187

https://blog.csdn.net/qq_36781505/article/details/86612988

到此這篇關(guān)于Docker Compose快速部署多容器服務(wù)實(shí)戰(zhàn)的文章就介紹到這了,更多相關(guān)Docker Compose多容器實(shí)戰(zhàn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Docker端口映射的實(shí)現(xiàn)

    Docker端口映射的實(shí)現(xiàn)

    這篇文章主要介紹了Docker端口映射的實(shí)現(xiàn),詳細(xì)的介紹了五種端口的映射方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-06-06
  • 如何使用 Docker 部署 Spark 集群

    如何使用 Docker 部署 Spark 集群

    本文介紹了如何通過DockerCompose部署一個(gè)Spark集群,包括一個(gè)Master節(jié)點(diǎn)和多個(gè)Worker節(jié)點(diǎn),環(huán)境要求包括DockerEngine、DockerCompose和網(wǎng)絡(luò)環(huán)境,通過配置docker-compose.yml文件,可以定義和運(yùn)行多容器應(yīng)用,感興趣的朋友一起看看吧
    2025-02-02
  • Docker批量刪除特定前綴的鏡像Tag的方法

    Docker批量刪除特定前綴的鏡像Tag的方法

    在 Docker 容器化技術(shù)日益普及的今天,鏡像管理成為了一個(gè)不可忽視的問題,隨著項(xiàng)目的發(fā)展,鏡像的數(shù)量會(huì)迅速增加,特別是當(dāng)我們頻繁地構(gòu)建和推送新版本時(shí),如果不及時(shí)清理,這些鏡像會(huì)占用大量的存儲(chǔ)空間,影響系統(tǒng)性能,本文介紹了Docker批量刪除特定前綴的鏡像Tag的方法
    2024-11-11
  • docker容器的一些常見命令小結(jié)

    docker容器的一些常見命令小結(jié)

    Docker是目前最流行的容器化平臺(tái)之一,它提供了一種輕量級(jí)的虛擬化解決方案,使得應(yīng)用程序的部署和管理變得更加便捷和高效,這篇文章主要給大家總結(jié)介紹了關(guān)于docker容器的一些常見命令,需要的朋友可以參考下
    2024-01-01
  • docker 基于golang鏡像構(gòu)建 ssh服務(wù)的方法

    docker 基于golang鏡像構(gòu)建 ssh服務(wù)的方法

    這篇文章主要介紹了docker 基于golang鏡像構(gòu)建 ssh服務(wù)的方法,添加goland環(huán)境變量的方法及centos下sshd和goland環(huán)境的docker文件配置方法,需要的朋友可以參考下
    2021-07-07
  • 啟動(dòng)桌面Docker提示虛擬服務(wù)未啟動(dòng)兩種解決方案

    啟動(dòng)桌面Docker提示虛擬服務(wù)未啟動(dòng)兩種解決方案

    Docker 是?個(gè)開源的應(yīng)用容器引擎,可以實(shí)現(xiàn)虛擬化,這篇文章主要介紹了在啟動(dòng)Docker?Desktop時(shí)遇到的錯(cuò)誤,并提供了解決方案,文中通過代碼以及圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2025-04-04
  • docker容器間互相訪問(docker bridge網(wǎng)絡(luò))

    docker容器間互相訪問(docker bridge網(wǎng)絡(luò))

    本文主要介紹了docker容器間互相訪問(docker bridge網(wǎng)絡(luò)),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • docker compose自定義網(wǎng)絡(luò)實(shí)現(xiàn)固定容器ip地址

    docker compose自定義網(wǎng)絡(luò)實(shí)現(xiàn)固定容器ip地址

    這篇文章主要介紹了docker compose自定義網(wǎng)絡(luò)實(shí)現(xiàn)固定容器ip地址,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • Docker部署portainer的詳細(xì)步驟

    Docker部署portainer的詳細(xì)步驟

    Portainer是一個(gè)輕量級(jí)的docker環(huán)境管理UI,可以用來管理docker宿主機(jī)和docker swarm集群,今天通過本文給大家介紹Docker部署portainer的步驟,感興趣的朋友一起看看吧
    2022-01-01
  • docker-compose集成Jenkins部署,打包,發(fā)布方式

    docker-compose集成Jenkins部署,打包,發(fā)布方式

    在Docker環(huán)境中安裝配置Jenkins,需掛載JDK、Maven等至容器指定路徑,設(shè)置國(guó)內(nèi)鏡像提升下載速度,并添加插件與憑據(jù)完成環(huán)境配置
    2024-10-10

最新評(píng)論

太湖县| 陵川县| 湖州市| 广平县| 浦北县| 漾濞| 鱼台县| 长子县| 商河县| 自治县| 大埔区| 浙江省| 莱西市| 镇雄县| 内丘县| 阿鲁科尔沁旗| 云浮市| 灵寿县| 秦皇岛市| 七台河市| 玉山县| 余江县| 抚顺市| 翁牛特旗| 清河县| 镇巴县| 惠东县| 鄂托克旗| 叶城县| 乌兰县| 敦化市| 临猗县| 临泽县| 勐海县| 元氏县| 顺平县| 青河县| 礼泉县| 安陆市| 西乌| 纳雍县|