Docker07-數據管理

將數據保存在容器外部

容器在運行項目時會產生數據,好比運行的mysql容器,那麼必定會有數據產生。
若是將數據保存在容器內部,那麼也就意味着咱們改變了原有鏡像,這種作法是不可取的,由於在後期的鏡像升級將變得不可能了。也就是說,運行的鏡像,最好不要改變,若是必須改變,在改變後記得commit提交打成一個新的鏡像mysql

顯然,數據是應該保持在容器的外部,也就是說保持在主機上了。那麼容器如何讀取主機中的數據呢?redis

掛載參數 -v

在create或者run容器時,經過-v參數指定主機的目錄,掛載在容器中的某一個目錄上,這樣容器就在這個目錄讀寫數據了,從而實現了容器和數據的分離。sql

案例:運行mysql容器,將mysql的數據放在主機/data/mysql-data中。

  1. 下載mysql鏡像
docker pull mysql:5.5
  1. 建立容器
docker create --name mysql -v /data/mysql-data:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.5

參數解釋:
--name mysql: 指定容器的名稱爲mysql
-v /data/mysql-data:/var/lib/mysql:將主機目錄/data/mysql-data掛載到容器的目錄/var/lib/mysql上
-p 3306:3306 :設置端口映射,前面的端口3306是主機端口,後面的端口3306是容器內部端口
-e MYSQL_ROOT_PASSWORD=root: 設置容器參數,設置root用戶的密碼爲root
mysql:5.5:指定鏡像名:版本docker

  1. 啓動容器 dockert start <鏡像ID>
root@ubuntu:/home/guanfuchang# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                   PORTS                     NAMES
6b0589fb6196        mysql:5.5           "docker-entrypoint.s…"   10 seconds ago      Created                                            mysql
5f3e056f65d1        hello-world         "/hello"                 3 hours ago         Exited (0) 3 hours ago                             kind_wescoff
07bf73ec9f73        redis:5.0           "docker-entrypoint.s…"   23 hours ago        Up About a minute        0.0.0.0:16379->6379/tcp   redis
root@ubuntu:/home/guanfuchang# 
root@ubuntu:/home/guanfuchang# docker start 6b0589fb6196
6b0589fb6196
root@ubuntu:/home/guanfuchang# 
root@ubuntu:/home/guanfuchang# docker ps 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                     NAMES
6b0589fb6196        mysql:5.5           "docker-entrypoint.s…"   57 seconds ago      Up 6 seconds        0.0.0.0:3306->3306/tcp    mysql
07bf73ec9f73        redis:5.0           "docker-entrypoint.s…"   23 hours ago        Up About a minute   0.0.0.0:16379->6379/tcp   redis
  1. 測試鏈接,建立數據


    ubuntu

  2. 檢查主機上的數據
root@ubuntu:/home/guanfuchang# 
root@ubuntu:/home/guanfuchang# ls /data/mysql-data/
6b0589fb6196.pid  ibdata1  ib_logfile0  ib_logfile1  mt_gff  mysql  performance_schema
root@ubuntu:/home/guanfuchang# ls /data/mysql-data/mt_gff/
db.opt  student.frm
root@ubuntu:/home/guanfuchang#

經過上面的查詢結果可見,在主機目錄/data/mysql-data中已經保存了mysql的數據。微信


:-:
微信掃一掃,關注「python測試開發圈」,瞭解更多測試教程!tcp

相關文章
相關標籤/搜索