当前位置:   article > 正文

docker-compose安装使用总结_docker-compose link

docker-compose link

大纲

  • 简介
  • 编排与部署
  • 安装与使用
  • docker-compose 工作流程
  • docker-compose.yml 模板文件配置说明
  • docker-compose 命令说明

简介

docker Compose(https://docs.docker.com/compose/)

它是一个用于定义和运行多容器Docker 应用程序的命令行工具。
使用 Docker Compose,你可以在 YAML 文件中定义要运行的服务,然后通过 docker-compose 命令来启动服务。

docker-compose 中的核心概念就是 service, 每一个容器定义为一个service

docker-compose作用

  • 1构建Docker镜像
  • 2启动容器化的应用及服务 (多服务的快速编排
  • 3启动完整的服务系统
  • 4管理系统中的单个服务的状态
  • 5服务伸缩
  • 6查看生成服务的容器的收集日志

编排与部署

编排 (orchestration)【窝颗死催新】

基于被部署对象**(多个)**之间的耦合关系(及某一个对象必须依赖其他对象部署完成后才能部署) 以及对象
之间的环境依赖(需要在同一个网络环境中),定制部署流程中的各个动作的执行顺序

部署 (deployment)

将对象在对应的机器上初始化,配置启动

编排侧重的是多个有依赖关系的服务的集合部署

安装与使用

docker-compose 就是一个脚本文件,只需要下载对应的脚本并对其赋予可执行权限即可

下载地址: https://github.com/docker/compose/releases

安装

1 下载docker-compose (可能网络原因无法下载)

curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-uname -s-uname -m -o /usr/local/bin/docker-compose

2 配置提示 (可能网络原因无法下载)

mkdir -pv ~/.local/share/bash-completion/completions/
curl -L https://raw.githubusercontent.com/docker/compose/1.18.0/contrib/completion/bash/docker-compose -o ~/.local/share/bash-completion/completions/

注意: 可能下载超时可以使用百度云盘上的docker-compose (版本1.18.0)放置在 /usr/local/bin下即可

3 给docker-compose执行权限

chmod +x /usr/local/bin/docker-compose 给docker-compose执行权限

4 验证安装结果

docker-compose --version 测试安装是否成功,成功的话打印出docker-compose的版本信息

在这里插入图片描述

快速使用
docker-compose -f compose.yml up -d 后台运行
docker-compose -f compose.yml up -d

docker-compose up 本质是docker-compose logs -f,它会收集所有容器的日志输出直到退出命令,或者容器都停止运行。
docker-compose up -d 以后台的方式运行容器。不会在终端上打印运行日志
  • 1
  • 2

docker-compose 工作流程

https://docs.docker.com/compose/networking/

当运行docker-compose up命令时,会做一下事情:

  • 1 创建一个名为xxx_default 的network
  • 2 根据配置创建container 加入xxx_default network 并且hostname为配置的container 名称

默认情况下docker-compose会建立一个默认的网络,名称为docker-compose.yml所在目录名称小写形式加上“_default”

在这里插入图片描述

每个service的container会加入这个default网络并且能够被这个网络上的其他container访问到,hostname就是container的name,通过这个hostname可以发现container

例如

services: 
  web:
    image: xxx
    port:
      - 80:80
  db:
    image: mysql
    prots:
      3306:3306    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

web container内的进程可以使用mysql://db:5432访问db服务。 宿主机上的程序可以使用mysql://{DOCKER_IP}:8001 访问db服务。

docker-compose.yml 模板文件配置说明

在这里插入图片描述
在这里插入图片描述

link

常用的关键参数,可以让编排的服务之间的网络联通,注意程序中需要使用link name访问

user-service:
  ...
goods-service: 
  ...
order-service:          
links: 
  - user-service 【服务名称】  
  - goods-service:gdService 【服务名称】:【服务名称别名】
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

程序内不同服务间请求访问

UserEntity user = r.getForObject("http://user-service:5588/getUserEntityById?id=1", UserEntity.class);
GoodsEntity goods = r.getForObject("http://goods-service:5599/getGoodsEntityById?id=34", GoodsEntity.class);
		
UserEntity user = r.getForObject("http://usService:5588/getUserEntityById?id=1", UserEntity.class);
GoodsEntity goods = r.getForObject("http://gdService:5599/getGoodsEntityById?id=34", GoodsEntity.class);
			
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

volume | volume_from

volume 常用的关键参数 , 实现容器内部文件夹与主机文件夹的挂载
volumes_from允许您从另一个服务或容器挂载所有数据或卷,则必须指定访问级别

port 暴露端口

用于配置服务暴露的端口

ports:
  #容器内的端口 与 主机端口映射   
  - 9000:9000
  # 暴露多个端口 如下容器12201到12210的端口与主机12201到12210映射
  - 12201-12210:12201-12210
  # 如果加一个/ 表示支持协议 tcp 或 udp
  - 12201:12201/udp
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

depends_on

配置服务依赖关系,启动时先启动依赖的服务,注意配置在需要有依赖的服务上

graylog:
 depends_on:
  - mongodb
  - elasticsearch
  • 1
  • 2
  • 3
  • 4

network

可以指定编排服务中的网络,用于网络隔离

使用方式network

  • 1 配置在外层
  • 2 服务内
# 与services: 同级外层
networks: 
   #网络的名字,可以自定义定 如果是default 着替换默认的网络
   #还可以配置ip
   # external: 使用external来使用指定已经存在的网络
   #   name: bridge2
   mynetwork1: 
      driver: bridge
   mynetwork2:
      driver: bridge
      
services:  
   user-service:   
      #服务内配置网络 使用外层定义好的网络
      networks:
         - mynetwork1
         - mynetwork2
      #配置网络后 容器内使用ip访问可以
      #但是如果想使用服务名http://gdService:5577 访问还需要配置link   
      links: 
         - goods-service:gdService   
         
   goods-service:
       #服务内配置网络 使用外层定义好的网络
       networks:
         - mynetwork1   
   
   order-service:   
      #服务内配置网络 使用外层定义好的网络
      networks:
         - mynetwork2 
      links: 
         - user-service:usService     
         - goods-service:gdService             
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

使用docker network ls 查看出创建的网络

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tta5ZTD1-1674899460672)(4.5.png)]

基于上面的配置

  • user-service 与 order-service 在一个网络中可以互通
  • user-service 与 goods-service 在一个网络中可以互通
  • goods-service 与 order-service 不在一个网络中 无法通信

dns

可以自定义DNS服务器

dns: 8.8.8.8
dns:
  - 9.9.9.9
  - 8.8.8.8
  • 1
  • 2
  • 3
  • 4

extends

docker-compose 命令说明

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PMYHhGIE-1674899460673)(5.1.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w9yfVzNI-1674899460673)(5.2.png)]

up
up是最重要的一个语句,可以创建镜像,创建服务,启动服务 (初始的时候必用)

docker-compose -f use-dockerfile.yml up  前台启动
docker-compose -f use-dockerfile.yml up  -d 后台启动
  • 1
  • 2

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JcELc1Ae-1674899460673)(4.0.png)]

ps
查看项目中的容器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h3rHYpbO-1674899460674)(4.2.png)]

stop start restart
停止 起动 重启 服务项

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5Qf21OnV-1674899460674)(4.4.png)]

down 停止服务栈
注意down后就无法使用 start restart命令了

docker-compose -f use-dockerfile.yml down
  • 1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2ZI2oDGh-1674899460675)(4.1.png)]

logs 打印容器组日志

docker-compose -f use-dockerfile.yml logs -f  打印容器组的日志
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/910722
推荐阅读
相关标签
  

闽ICP备14008679号