# Docker Volume 指令
### 主講人:黃夙賢
---
## Docker指令

---
## Docker指令概覽
- docker image
- docker container
- <font color=red>docker volume</font>
- docker network
---
## Docker Volume 資料卷
- docker volume資料卷是用來儲存容器資料,可以把資料跟容器執行程式分開來,獨立管理資料。即使容器不在,只要資料卷存在,依舊可以回復容器狀態。

---
## create 新增資料卷
- docker volume create \<資料卷\>
- 新增資料卷
```
docker volume ls (查詢現有的資料卷)
docker volume create test_volume (新增test_volume資料卷)
docker volume ls
docker run -d --name devtest -v test_volume:/app nginx:latest
(nginx是輕量級的網頁伺服器,把test_volume資料卷掛載在/app的目錄下)
docker ps
```

---
## 應用題
- 刪除容器,測試資料卷是否存在
```
docker ps
docker exec -it devtest bash (利用bash介面進入到devtest)
cd /app
ls
echo “I am in test volume” > abc (在app目錄下,寫入文字至abc檔案)
ls
cat abc (觀看abc檔案內容)
exit
docker rm -f devtest (把devtest容器刪掉)
docker ps –a
docker volume ls (證明容器刪掉,資料卷還是存在)
```
---

---
## 應用題
- 開一個ubuntu,利用tar壓縮命令,把test_volume的內容備份成backup.tar
```
docker run --rm -v test_volume:/app -v $PWD:/backup ubuntu tar cvf /backup/backup.tar /app
(開一個執行tar備份的ubuntu
1.run一個ubuntu來備份檔案
2.把test_volume掛上/app目錄
3.把目前所在目錄($PWD)掛上backup目錄
4.把/app目錄壓縮到backup目錄下的backup.tar
因為/app目錄就是test_volume,/backup目錄就是目前所在目錄
因此等於把test_volume的資料備份到目前工作目錄下)
```

---
## Docker Volume 範例
```
mkdir web
cd web
wget https://raw.githubusercontent.com/shhuangmust/html/111-1/immust_7_footer.html
(powershell版本命令) wget -Uri https://raw.githubusercontent.com/shhuangmust/html/111-1/immust_7_footer.html -Outfile a.html
```

---
```
docker run -d --name web -p 80:80 -v /home/ansible/web:/var/www/html tutum/apache-php
(如有修正連結請按n)
```

- http://localhost:8080/immust_7_footer.html

---
{"metaMigratedAt":"2023-06-17T18:27:25.772Z","metaMigratedFrom":"YAML","title":"Docker Volume 指令","breaks":true,"contributors":"[{\"id\":\"ef0225b9-6c2a-4012-82c9-fa1031d2c4db\",\"add\":2020,\"del\":4}]"}