Dokcer14_5:Docker Compose volumes解析Docker Compose volumes目录路径生成规则

Posted 郝开

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dokcer14_5:Docker Compose volumes解析Docker Compose volumes目录路径生成规则相关的知识,希望对你有一定的参考价值。

Dokcer14_5:Docker Compose volumes解析、Docker Compose volumes目录路径生成规则

docker-compose volumes语法

在docker-compose.yml中,volumes键可以出现在两个不同的位置。

version: "3.9"

services:
  database:
    # ...
    volumes: # Nested key. Configures volumes for a particular service.【嵌套的key。为特定服务配置卷】

volumes: # Top-level key. Declares volumes which can be referenced from multiple services.【顶级的key。声明可以从多个服务引用的卷】

语法格式及其三种变体

volumes卷配置有一个简短的语法格式,定义为:

[SOURCE:]TARGET[:MODE]
  • SOURCE 可以是主机系统上的命名卷或(相对或绝对)路径。
  • TARGET 是容器中的绝对路径。
  • MODE 是一个挂载选项,可以是只读或读写。这个参数是可选的。ro(readonly 只读) 或 rw(默认:readwrite 可读可写) 改变读写权限

这种可选性导致您可以使用三种独特的变体来配置容器的卷。 Docker Compose 会识别出使用了哪种类型以及是使用卷还是绑定挂载。

1.无来源 :匿名挂载

例如:-v 容器内路径

# compose版本,向下兼容,我选的最高版本
version: "3.9"

# 定义服务
  service_A:
    # ...
    volumes: # 为特定服务配置卷
    - /var/www/html

当只指定一个目标而没有源时,Docker Compose 将创建一个 anonymous(匿名) 目录并将其作为卷挂载到容器内的目标路径。

主机系统上的目录路径

默认为/var/lib/docker/volumes/<uuid>/_data,其中<uuid>是分配给卷作为其名称的随机 ID。

2.非路径源:具名挂载(常用)

例如:-v 卷名:容器内路径

# compose版本,向下兼容,我选的最高版本
version: "3.9"

# 定义服务
  service_A:
    # ...
    volumes: # 为特定服务配置卷
    - service_A_html:/var/www/html

volumes: # 声明可以从多个服务引用的卷
  # 如果有service_A_html这个卷就会直接使用它,否则会创建一个新的卷并使用
  service_A_html: 

如果存在源并且它不是路径,则 Docker Compose 假定您指的是命名卷。此卷需要在顶级volumes密钥声明的同一文件中声明。

顶级volumes键始终声明卷,从不绑定挂载。绑定坐骑没有名称,也无法命名。

主机系统上的目录路径

默认为/var/lib/docker/volumes/生成路径名/_data,其中生成路径名 = docker-compose.yml文件所在目录名_docker-compose.yml中volumes中具名挂载指定的命名卷名。
如果是在根目录执行,则生成文件夹名称为default。

使用docker-compose up -d运行docker-compose.yml时,docker-compose.yml所在的目录会加在这个命名中。

在nacos222中建立docker-compose.yml文件并执行
docker-compose.yml中volumes如下

数据卷如下

/var/lib/docker/volumes/nacos22_mysql_conf/_data
/var/lib/docker/volumes/nacos22_mysql_data/_data
/var/lib/docker/volumes/nacos22_mysql_init/_data

在根目录执行,生成文件夹名称为default

[root@VM-0-3-centos /]# docker volume ls
DRIVER    VOLUME NAME
local     default_mysql_conf
local     default_mysql_data
local     default_mysql_init
local     default_nacos_conf
local     default_nacos_log

3.路径源:指定路径挂载

例如:-v /容器外路径:/容器内路径

# compose版本,向下兼容,我选的最高版本
version: "3.9"

# 定义服务
  service_A:
    # ...
    volumes: # 为特定服务配置卷
    - /usr/local/service_A/html:/var/www/html

如果 source 是绝对或相对路径,Docker Compose 会将文件夹绑定到容器中。以.或…开头的相对路径相对于docker-compose.yml的位置。

不鼓励对数据库容器进行绑定挂载,因为这会降低它们的可移植性。绑定挂载特定于主机系统,Docker 不管理它们。官方文档有一个关于卷与绑定安装的部分,更详细地解释了两者之间的差异。

总结一下

Docker Compose 允许您使用简短的语法字符串来配置卷。无论您最终使用的是卷还是绑定挂载,都取决于您使用哪种简短的语法变体。

当您不指定源时,Docker Compose 将创建一个匿名卷。如果 source 不是路径,Docker Compose 将假定 source 是一个命名卷。相对或绝对路径的源被绑定安装到容器中。

RabbitMQ介绍-安装

目录

 

一.RabbitMQ介绍

二.RabbitMQ安装

采用docker中的docker-compose去安装

1.进入opt文件夹

2.创建docker_mq文件夹

3.进入docker_mq,创建文件并编辑docker-compose.yml

4.创建data文件夹

5.拉取镜像并构建dokcer_mq

6.安装成功!查看图形化界面


一.RabbitMQ介绍

市面上比较火爆的几款MQ:

ActiveMQ,RocketMQ,Kafka,RabbitMQ。

  • 语言的支持:ActiveMQ,RocketMQ只支持Java语言,Kafka可以支持多们语言,RabbitMQ支持多种语言。

  • 效率方面:ActiveMQ,RocketMQ,Kafka效率都是毫秒级别,RabbitMQ是微秒级别的(RabbitMQ基于Erlang编写的,面向并发编程)。

  • 消息丢失,消息重复问题: RabbitMQ针对消息的持久化,和重复问题都有比较成熟的解决方案。

RabbitMQ是由Rabbit公司去研发和维护的,最终是在Pivotal。

应用场景:一些不需要立即返回操作结果或者一些比较耗时的操作,都可以用MQ来做

二.RabbitMQ安装

采用docker中的docker-compose去安装

1.进入opt文件夹

cd /opt/

2.创建docker_mq文件夹

mkdir docker_mq

3.进入docker_mq,创建文件并编辑docker-compose.yml

vi docker-compose.yml

如下: 

version: "3.1"
services:
  rabbitmq:
    image: daocloud.io/library/rabbitmq:management
    restart: always
    container_name: rabbitmq
    ports:
      - 5672:5672
      - 15672:15672             
    volumes:
      - ./data:/var/lib/rabbitmq

4.创建data文件夹

mkdir data

5.拉取镜像并构建dokcer_mq

docker-compose up -d

6.安装成功!查看图形化界面

 

以上是关于Dokcer14_5:Docker Compose volumes解析Docker Compose volumes目录路径生成规则的主要内容,如果未能解决你的问题,请参考以下文章

云原生之Dokcer实战使用Docker部署openwrt软路由

Dokcer进阶之Compose 实战官方flaskwordpressspring-boot

使用dokcer搭建个人博客网站

RabbitMQ介绍-安装

RabbitMQ介绍-安装

centos6安装docker-compose报错缺失GLIBC_2.14