# 1. docker數據持久化的幾種方式
> 數據持久化:數據不隨著容器的結束而消失。需要將數據映射到宿主機中的文件當中去。實現數據目錄映射有以下三種方式。
## 1.1 `volume: -v relative-path(宿主機):absolute-path(容器)`
**-v: 指定宿主機的相對路徑(基于宿主機的/var/lib/docker/volumes目錄)映射到容器目錄**
> **1.如果沒有通過-v指定,那么Docker會默認幫我們創建匿名數據卷進行映射和掛載**,例如:
```
docker run -d --name=nginx-volume2 -p 8802:80 -v /usr/share/nginx/html nginx
```

```
[root@bogon html]# ls /var/lib/docker/volumes/386bf552a60df639a728e40230da5d1ea8595f0806ed625da3cf333c9982f669/_data
50x.html index.html
```
> 2. 使用卷
```
docker pull nginx
```
```
docker run -d --name=nginx-volume1 -p 8801:80 -v volume:/usr/share/nginx/html nginx
```

如下會把容器的內容映射到主機
[root@bogon html]# ls /var/lib/docker/volumes/volume/_data
50x.html index.html
**docker容器在啟動的時候,如果不指定端口映射參數,在容器外部是無法通過網絡來訪問容器內的網絡應用和服務的。**
## 1.2 bind mounts
意為著可以存儲在宿主機系統的**任意位置**,而不是相對docker默認的相對路徑;(**比較常用的方式**)但是,bind mount在不同的宿主機系統時不可移植的,比如Windows和Linux的目錄結構是不一樣的,bind mount所指向的host目錄也不能一樣。這也是為什么bind mount不能出現在Dockerfile中的原因,因為這樣Dockerfile就不可移植了。
**容器中的數據參考主機目錄,主機有什么數據容器就有什么**,與卷掛載正好相反
~~~
docker run -d --name=nginx-volume -p 8800:80 -v /data/html:/usr/share/nginx/html nginx
~~~

**vim index.html在主機目錄中添加一個index.html**


此時修改主機的文件就會影響容器
## 1.3 tmpfs
> 掛載存儲在宿主機系統的內存中,而不會寫入宿主機的文件系統;(**一般都不會用的方式**)
- docker
- docker安裝
- 數據持久化
- 鏡像管理
- Dockerfile
- 鏡像的分層
- add copy
- 構建實例
- 鏡像的導入導出
- 清理構建空間
- 配置阿里云加速器
- docker網絡模型
- 本地倉庫
- registry
- harbor
- IDEA部署docker
- 軟件安裝
- 安裝es
- 安裝MongoDB
- 安裝rabbitmq
- 安裝redis
- 安裝nacos
- 安裝mysql
- Minio
- 鏡像中心
- kubernetes
- 1. 安裝k8s
- 2.主要組件
- 3.污點
- 4.pod
- 5.控制器
- 6.網絡
- 7.探針
- 8.安裝Dashbord
- 9.secret
- 9.serviceAccount
- 10.service
- 資源清單
- kube-proxy
- flannel源文件
- 服務升級
- 筆記
- 鏡像