Docker 持久化

一、Docker Volumes

Docker Volumes 是 Docker 中持久化数据的主要方式之一。它通过在容器和主机之间创建一个虚拟文件系统,使得数据在容器删除后依然存在于主机之中。

1、使用 Docker Volumes 命令创建 Volume:

docker volume create my_volume

2、将 Volume 挂载到容器中:

docker run -v my_volume:/data my_image

3、使用自定义 Volume 配置文件:

// docker-compose.yml
version: '3'
services:
  my_service:
    image: my_image
    volumes:
      - my_volume:/data
volumes:
  my_volume:

二、Docker Bind Mounts

Docker Bind Mounts 是另一种 Docker 中持久化数据的方式。它直接将主机文件系统中的目录或文件挂载到容器中,主机文件删除后容器中的数据也会消失。

1、使用 Docker Bind Mounts 命令将主机目录挂载到容器中:

docker run -v /host/dir:/container/dir my_image

2、在 Docker Compose 中使用 Bind Mounts:

// docker-compose.yml
version: '3'
services:
  my_service:
    image: my_image
    volumes:
      - /host/dir:/container/dir

三、Docker Named Volumes 和 Bind Mounts 的比较

Docker Named Volumes 和 Docker Bind Mounts 是持久化数据的两种方式,各有优劣。

1、Named Volumes:

a、更加简单易用,不需要考虑本地文件目录的位置等。

b、不需要担心文件系统的权限问题。

c、可以在多个容器之间共享数据。

d、需要 Docker 引擎管理 Volume 的生命周期,对使用者透明。

2、Bind Mounts:

a、可以直接挂载主机上的文件或目录,更加方便。

b、可以方便地进行本地开发。

c、更加灵活,可以从主机上的任意位置挂载文件系统。

d、需要手动管理文件系统权限。

四、Docker 数据卷容器

Docker 数据卷容器是一种使用数据卷来存放持久化数据的方式。它是在多个容器之间共享数据的另一种方式。

1、创建数据卷容器:

docker create -v /data --name my_data_container my_image /bin/true

2、将数据卷容器挂载到应用容器中:

docker run --volumes-from my_data_container my_image

3、在 Docker Compose 中使用数据卷容器:

// docker-compose.yml
version: '3'
services:
  my_service:
    image: my_image
    volumes_from:
      - my_data_container
volumes:
  my_data_container:

五、Docker 镜像仓库

当需要在不同的主机之间分发 Docker 镜像时,可以将它们存储到 Docker 镜像仓库中。

1、使用 Docker 命令将镜像推送到 Registry:

docker login
docker tag my_image username/my_image
docker push username/my_image

2、在 Docker Compose 中使用 Registry:

// docker-compose.yml
version: '3'
services:
  my_service:
    image: registry.example.com/username/my_image

六、Docker Swarm

Docker Swarm 是 Docker 自带的容器编排工具。它可以快速构建一个由多个 Docker 容器组成的集群。

1、初始化 Docker Swarm:

docker swarm init --advertise-addr IP_ADDRESS

2、在 Swarm 中使用数据卷:

// docker-compose.yml
version: '3'
services:
  my_service:
    image: my_image
    volumes:
      - my_volume:/data
volumes:
  my_volume:
    driver: local

3、在 Swarm 中使用配置文件:

// docker-compose.yml
version: '3'
services:
  my_service:
    image: my_image
    configs:
      - my_config
configs:
  my_config:
    file: ./config.ini

原创文章,作者:QCBNZ,如若转载,请注明出处:https://www.506064.com/n/333177.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
QCBNZQCBNZ
上一篇 2025-01-27 13:34
下一篇 2025-01-27 13:34

相关推荐

  • docker-ce-18.03.1.ce-1.el7.centos.x86_64需要pigz这个依赖的解决方案

    当我们在linux centos系统中安装docker-ce-18.03.1.ce-1.el7.centos.x86_64时,有时可能会遇到“nothing provides pi…

    编程 2025-04-29
  • ORM持久层

    ORM(对象关系映射)是一种编程技术,它将面向对象的编程语言中的对象与关系型数据库中的表进行映射。通过ORM,我们可以用面向对象的方式操作数据库,减少了手写SQL语句的复杂度以及对…

    编程 2025-04-28
  • Java持久层框架的复合主键实现

    用Java持久层框架来操作数据库时,复合主键是常见的需求。这篇文章将详细阐述javax.persistence复合主键的实现方式,并提供完整的示例代码。 一、复合主键的定义 复合主…

    编程 2025-04-27
  • 如何解决Docker+k8s报错413 Request Entity Too Large

    对于使用Docker容器和Kubernetes集群的开发人员,在处理HTTP请求时,常常会遇到413 Request Entity Too Large的报错。这通常是由于请求的大小…

    编程 2025-04-27
  • docker-compose编写用法介绍

    本文将详细介绍docker-compose编写的各个方面,包括语法、常见命令等等,旨在帮助读者更好的了解如何使用docker-compose。 一、docker-compose的语…

    编程 2025-04-27
  • Docker 垃圾电脑的解决方案

    Docker 是一种轻量级的容器化技术,可以在一个操作系统中,同时运行多个独立的应用。在使用 Docker 的过程中,可能会出现 Docker 占用大量硬盘空间,导致电脑变得极其缓…

    编程 2025-04-27
  • Docker挂载目录–graph用法介绍

    本文将从如下几个方面详细阐述Docker挂载目录–graph: 一、基本概念 在Docker中,镜像是由一系列只读层组成的文件系统。当我们启动一个容器时,Docker会…

    编程 2025-04-27
  • Docker批量删除容器详解

    一、前言 Docker是一个开源的应用容器引擎,提供了一种轻量级容器化技术,方便快捷的进行应用打包、发布、运行。作为广泛应用的技术之一,Docker是开发、测试、运维的得力助手。但…

    编程 2025-04-25
  • Docker镜像管理

    一、查看所有镜像 使用docker命令可以很轻松地查看所有已经构建好的镜像,命令如下: docker images 该命令将列出所有本地docker主机上所有的镜像: REPOSI…

    编程 2025-04-25
  • Docker内网穿透全解析

    一、什么是Docker内网穿透 Docker是一个优秀的容器化技术,可以将应用程序和服务打包成轻量级的容器进行管理和部署。但是,Docker容器默认只能在内网环境中进行通信,如果需…

    编程 2025-04-25

发表回复

登录后才能评论