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/zh-tw/n/333177.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
QCBNZ的頭像QCBNZ
上一篇 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

發表回復

登錄後才能評論