先看一個Nginx dockerfilehtml
FROM nginx WORKDIR /usr/nginx/html COPY index.html index.html
咱們想吧容器裏的工做目錄掛載到咱們 服務器 的數據捲上,以避免容器刪除後數據丟失。mysql
docker build -t saniii/my-nginx-mount .
docker run -d -p 3331:80 -v $(pwd):/usr/nginx/html --name nginx1 saniii/my-nginx-mount -d 後臺運行 -p 綁定主機端口到容器端口 3331:表示服務器的端口 :80 表示容器裏的端口 -v 數據綁定 $(pwd) 表明當前路徑 :/usr/nginx/html 爲要綁定的容器裏的路徑 --name 容器命名爲 nginx 1 saniii/my-nginx-mount 運行的容器名
docker exec -it nginx1 /bin/bash 交互式運行容器 咱們在容器裏建立一個文件,退出
當咱們回到主機後,發現主機綁定的目錄也多了這個文件
咱們能夠在dockerfile中定義咱們數據的在容器中的持久化路徑nginx
https://github.com/docker-library/mysql/blob/9d1f62552b5dcf25d3102f14eb82b579ce9f4a26/5.7/Dockerfilegit
上面是 mysql 官方dockerfile中的最佳實踐 mysql在容器中運行的時候數據持久化在如下的路徑github
命令 sudo docker run -d -v mysql:/var/lib/mysql --name mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql:5.7 -v 數據綁定 將咱們數據volume命名爲mysql /var/lib/mysql容器中數據卷的路徑 -e MYSQL_ALLOW_EMPTY_PASSWORD=true 設置mysql無密碼
正在運行的Volume docker volume ls
查看Volume在主機上的持久化地址 docker volume inspect mysql
交互式運行容器 docker exec -it mysql1 /bin/bash
登陸mysql 查看數據庫 mysql -uroot -hlocalhost -psql
咱們建立一個數據庫docker
退出容器並刪除。數據庫
docker rm -f mysql1 -f 強制刪除正在運行的容器
咱們再啓動一個mysql容器,使用以前的Volume mysqlbash
sudo docker run -d -v mysql:/var/lib/mysql --name mysql2 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql:5.7
咱們發現數據仍是存在的。服務器
這樣咱們就能夠作到數據的持久化了。