一、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-hk/n/333177.html