雲端容器化技術與資源調度

認識 Volume 的使用

可以透過 -v 選項讓容器外的資料夾,掛載入容器內的一個位置,例如:

$ docker run --name my-nginx-with-vol -p 8080:80 -d -v ~/hello-site/:/usr/share/nginx/html nginx:1.17.4

bind mount

掛載類型

簡單來說,Docker 容器支援的掛載模式分為:

  1. Bind Mount: 把 Host 機器上既有的資料夾/檔案,直接掛入容器內。
  2. Named Volume: 將一個完全由 Docker 管理的來源,掛載入容器內。這裡的來源定義很廣泛,可能是普通資料夾、NFS、VMDK…等。
  3. tmpfs Mount: Docker 將一段記憶體區塊掛在入容器內,從容器內看起來像是個普通資料夾,但實則資料夾內的檔案都是 In-Memory 保存。容器停止時所有資料都會揮發消失。

types of mounts

資料與軟體的徹底分離

Docker 資料與軟體分離的思維,大幅的降低維運人員的維運時間時間,我們來看看下面的例子:

$ docker stop my-nginx-with-vol
$ docker rm my-nginx-with-vol
$ docker run --name my-nginx-with-vol -p 8080:80 -d -v ~/hello-site/:/usr/share/nginx/html nginx:1.17.5

有了容器之後,我們一點都不留戀舊環境,一行指令就上完PATCH。而且我根本不擔心新版本會出錯,因為我們一樣可以一行指令回到舊版本 Nginx。

結尾

docker stop my-nginx-with-vol
docker rm my-nginx-with-vol