docker入门--数据卷

本文深入解析Docker中bindmount和dockermanagedvolume的使用,包括如何将宿主机目录挂载到容器,自动创建数据卷目录,以及数据卷共享机制。对比bindmount与dockermanagedvolume的特点,如数据卷的位置、对已有mountpoint的影响、支持单个文件的能力、权限控制和移植性。

一、bind mount

  • 将宿主机上的目录或文件挂载到容器中
  • 宿主机目录的内容会覆盖容器目录
  • 可以给目录附权限,默认rw可读可写。格式:ro只读
  • 使用-v选项指定目录
  • 格式:<host path>:<container path>

实例:将容器的/opt目录挂在到宿主机的/data/centos目录下

docker run -d -v /data/centos:/opt/  centos /bin/bash

实例:将容器的/opt目录挂在到宿主机的/data/centos目录下,默认容器对该目录只读权限

docker run -d -v /data/centos:/opt/:ro  centos /bin/bash

实例:将宿主机的yum源文件映射到容器中,设置容器只读权限

docker run -d -v /etc/yum.repos.d/CentOS7.repo:/etc/yum.repos.d/CentOS7.repo:ro centos /bin/bash

二、docker managed volume

  • docker自动为容器创建数据卷目录
  • 创建的路径在${docker_home}/volume中,yum安装的在/var/lib/docker/volumes目录下
  • 会将容器内的目录内容挂在出来,不会被覆盖
  • 可多个容器挂载同一个managed volume
  • docker volume prune删除所有没有被容器使用的卷
  • 格式 -v 宿主机目录名:容器目录名

实例:将容器的/var/lib/mysql目录挂载在data_mysql目录中

docker run -d -v data_mysql:/var/lib/mysql centos /bin/bash

三、数据卷共享 --volumes-from

实例:创建一个centos2容器,共享centos1的volume。

docker run -d --volumes-from centos1 --name centos2 centos /bin/bash

四、bind mount对比docker managed volume

bind mountdocker managed volume
volume位置任意指定默认/var/lib/docker/volume目录中
对已有mount point影响隐藏并替换为volume原有数据复制到volume
支持单个文件
权限控制默认读写,可设置只读无控制,均为读写
移植性移植性弱,与主机路径绑定移植性强,无需指定主机目录
### Docker-Compose 快速入门教程 #### 安装 Docker Compose 对于Linux系统的安装,可以通过下载二进制文件并赋予其可执行权限完成。例如: ```bash sudo curl -L "https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-linux-x86_64" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose ``` 验证安装成功可以使用命令`docker-compose --version`查看版本号[^3]。 #### 创建 `docker-compose.yml` 文件 创建一个新的目录用于放置应用程序和服务定义文件`docker-compose.yml`。此文件描述了服务、网络以及卷等内容。下面是一个简单的Spring Boot应用与MySQL数据库组合的例子: ```yaml version: '3' services: app: image: springio/gs-spring-boot-docker ports: - "8080:8080" environment: - SPRING_DATASOURCE_URL=jdbc:mysql://db:3306/demo?useSSL=false&serverTimezone=UTC depends_on: - db db: image: mysql:5.7 volumes: - db_data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: example volumes: db_data: ``` 这段配置指定了两个服务:一个是名为`app`的服务运行着一个Spring Boot应用镜像;另一个是名为`db`的服务提供了一个MySQL实例。还定义了一个持久化数据卷`db_data`供数据库存储数据[^1]。 #### 使用 Docker Compose 启动服务 进入包含`docker-compose.yml`文件的目录后,只需一条命令即可启动所有指定的服务: ```bash cd path/to/your/project docker-compose up ``` 默认情况下这会以前台模式启动容器,并显示日志输出。如果希望后台运行,则加上参数 `-d` 即可[^2]。 #### 停止和移除容器 当不再需要这些正在运行中的容器时,可以在项目根目录下输入如下指令停止它们: ```bash docker-compose down ``` 该操作不仅会终止所有关联的进程还会清理掉由compose创建出来的资源,比如匿名挂载的数据卷等[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值