iT邦幫忙

2022 iThome 鐵人賽

DAY 8
0

因為今天參加 Google Developers 的 Community Leads Summit 到很晚又忘記屯稿,今天就用比較簡短的方式來介紹docker volume 吧!如果有缺什麼內容就日後再補。

什麼是docker volume

container 在執行的時候使用的是虛擬環境(虛擬的file system),當container被刪除、或是 image 移到不同的地點時,舊有的(執行過的)資料便會消失、移除;這裡可以用資料庫舉例,當container被刪除時,因為資料庫的資料是依賴container的file system儲存,因此容器刪除必會一起消失;若是image更新,container整個被置換,container的file system也被改動,舊有的資料也會跟著被消失。以上,就是docker volume 存在的理由:我們將必要的、欲儲存的資料指定儲存在一個固定的卷宗 volume 上,且此 volume 獨立於 container (存在Host 上),當container被刪除時,資料不會遺失,當新的 container 想要利用其資料時,便可以利用指定目錄的方式存取。

How to use?

建立卷宗最簡單的方式便是使用指令:

docker volume create my-vol

使用上面的指令過後,docker就會建立一個名叫 my-vol 的卷宗,我們可以使用線面這個指令來查看:

docker volume ls

也可以查看卷宗的詳細資料:

docker volume inspect my-vol

要移除則使用:

docker volume rm my-vol

掛載卷宗到 container

使用 -v--mount

docker run -d \
  --name devtest \
  --mount source=myvol2,target=/app \
  nginx:latest

以上指令會指定執行devtest的image,並掛載卷宗到container /app的位置,使用--mount則是這樣打:

docker run -d \
  --name devtest \
  -v myvol2:/app \
  nginx:latest

docker-compose

我們也可以在docker-compose.yml的service區段指定volume的位址來存取:

version: "3.9"
services:
  frontend:
    image: node:lts
    volumes:
      - myapp:/home/node/app
volumes:
  myapp:
    external: true

誒等等,什麼是docker-compose???這就是明天的文章啦


上一篇
第七天-Multi-stage build
下一篇
第九天-docker compose -1
系列文
從認識Docker到精通30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言