1. 程式人生 > 其它 >使用Docker部署MySQL(資料持久化)

使用Docker部署MySQL(資料持久化)

原文連結:http://walterinsh.github.io/2015/01/17/use-mysql-with-docker.html

本文簡述如何使用Docker部署mysql,同時持久化資料.我們會用到tutum-docker-mysql這個專案來搭建一個mysql,省去重頭寫Dockerfile的時間.

首先我們將tutum-docker-mysql跑起來.

docker run -d -p 3306:3306 --name mysql tutum/mysql

如果你本地沒有tutum/mysql的image,docker會先下載它的image,這一步可能會用些時間.待執行完畢我們檢查一下應該會有如下樣子

tutum-docker-mysql會自動幫我們建一個隨機的密碼供我們訪問,通過日誌可以檢視到.

我們通過日誌上的密碼登陸mysql

mysql -uadmin -pi6k5USp9Km9G -h127.0.0.1

理論上我們這個時候就登陸mysql成功了,你可以建立一個庫,一個張表,然後退出.但是當這個container停止再重啟後,你的資料就丟了. 如何使你的資料真的被儲存下來呢?

解決方案就是:掛載一個本地檔案到Container (Mount a local folder from the host on the container to store the database files).

首先我們停掉之前的Container

docker stop mysql

我們指定一個本地可以掛載的路徑,重新啟動tutum-docker-mysql.我們指定/home/walter/softwares/tutum-docker-mysql/data 掛到Container裡的/var/lib/mysql目錄(-v Bind mount a volume). 這樣子我們就可以將資料持久化在主機(Host)的目錄中了.

sudo docker run -d -p 3306:3306 -v /home/walter/softwares/tutum-docker-mysql/data:/var/lib/mysql -e MYSQL_PASS="mypass" tutum/mysql

我們在上面啟動的時候順便指定了建立密碼為mypass,我們現在登陸一下mysql建立一些資料,看看會不會被儲存下來

  1. shell>mysql -uadmin -pmypass -h127.0.0.1
  2. mysql>create database test;

退出mysql,重啟Container,我們發下我們做的操作將會被保留下來.我們之後每一次啟動這個mysql都可以使用下面的命令

docker run -d -p 127.0.0.1:3306:3306 -v /home/walter/softwares/tutum-docker-mysql/data:/var/lib/mysql tutum/mysql


**********************************
**********************************
儲存docker上的mysql資料
  • 獲取docker image

    docker pull mysql:5.6
    
  • 執行mysql映象,並指定mysql配置

    docker run -p 3306:3306 -v /Users/huangxiang/softData/docerData/mysql:/etc/mysql --name localmysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.6 
    
  • 進入myql

    docker exec -it localmysql bash
    
  • 登陸mysql

    mysql -uroot -p
    
  • 重新啟動建立的容器

    docker start localmysql
    

    下次需要的時候重啟容器,原有資料都能被載入