前言 容器的鏡像是個由多個鏡像堆積起來的分層結構, 當容器啟動時容器層會被加載到所有鏡像層的頂部, 這是所有鏡像層中唯一的可寫層, 容器執行過程中的所有檔案變化都會被寫入到這一層中, 但是當容器生命週期結束時, 容器層也會跟著被消滅 若想要將這些改變保存下來的話, 可以使用docker的儲存卷功能, 將宿主機上的某個目錄掛載起來, 任何動態產生的資料就能被寫入到宿主機上保存 以下介紹兩種方法 1. 掛載匿名卷 使用Dockerfile FROM node:8.11.1 WORKDIR /app ADD . /app RUN npm install VOLUME /app/upload_folder EXPOSE 1337 CMD npm start 如果沒有特別想要指定宿主機上的某個目錄, 可以讓docker自動建立一個匿名卷掛載到容器內, 這個方法會在/var/lib/docker/volumes/<id>路徑下, 建立_data的資料夾, 容器內所有在upload_folder裡的寫入都會被保存到_data裡面 掛載匿名卷也可以使用docker -v 指令 docker -v /app/upload_folder 2. 掛載命名卷 當然我們也可以明確的告訴docker去掛載宿主機上的某個資料夾到容器內 docker -v /home/andy/upload_folder:/upload_folder