須要搞清楚一個概念的是,docker的容器設計理念是能夠即開即用,用完能夠隨意刪除,而新建容器是根據鏡像進行渲染,容器的修改是不會影響到鏡像,可是有時候容器裏面運行的產生的數據(如mysql)或者配置項(如nginx的nginx.conf)咱們又須要保存起來的,於是咱們須要對容器某些修改的數據進行掛載。php
下面介紹三種持久化數據的方式mysql
docker run -v 宿主目錄:容器掛載的目錄 鏡像
這時候docker會自動在對應的目錄下進行掛載,值得注意的是,若是容器裏面沒有宿主機對應的目錄,那麼容器會自動建立對應的目錄。若是沒有指定宿主目錄,那麼會自動在/var/lib/docker/volumes/下進行掛載。nginx
能夠選擇建立docker容器,來做爲共享數據的容器。sql
# 建立數據容器 docker create -v 宿主目錄:容器目錄 --name 數據容器名字 基於的環境 # 掛載 docker run --volumes-from 數據容器名字 鏡像
適用於鏡像裏的某些運行環境的修改,如php-fpm裏面還須要多安裝一個php-pdo之類的東西。docker
# 保存更改並生成爲一個新的image文件 $ docker commit -m "mess" 鏡像id 鏡像名字
# 查看所有volume docker volume ls # 刪除對應的volume docker volume rm volumeid