docker 部署mysql

http://www.reibang.com/p/530d00f97cbf
https://blog.csdn.net/qq_32616177/article/details/80452456
http://www.reibang.com/p/6a1b06ab8734
http://www.reibang.com/p/33f7a3333118
1、加上-v參數(shù)
$ docker run -d -e MYSQL_ROOT_PASSWORD=admin --name mysql -v /data/mysql/data:/var/lib/mysql -p 3306:3306 mysql
還可以指定配置文件
docker run -d -e MYSQL_ROOT_PASSWORD=admin --name mysql -v /data/mysql/my.cnf:/etc/mysql/my.cnf -v /data/mysql/data:/var/lib/mysql -p 3306:3306 mysql

這樣较剃,即可修改配置文件渐苏,還能把數(shù)據(jù)存在本地目錄,一舉兩得骄呼,-v 參數(shù)可以多次使用共苛,每次映射一個目錄,通過這種方式蜓萄,很容易進行配置隅茎。。

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

Docker MySQL 把數(shù)據(jù)存儲在本地目錄绕德,很簡單患膛,只需要映射本地目錄到容器即可

1、加上-v參數(shù)

$ docker run -d -e MYSQL_ROOT_PASSWORD=admin --name mysql -v /data/mysql/data:/var/lib/mysql -p 3306:3306 mysql

還可以指定配置文件

docker run -d -e MYSQL_ROOT_PASSWORD=admin --name mysql -v /data/mysql/my.cnf:/etc/mysql/my.cnf -v /data/mysql/data:/var/lib/mysql -p 3306:3306 mysql

這樣耻蛇,即可修改配置文件踪蹬,還能把數(shù)據(jù)存在本地目錄,一舉兩得臣咖,-v 參數(shù)可以多次使用跃捣,每次映射一個目錄,通過這種方式夺蛇,很容易進行配置疚漆。。

docker run -d -e MYSQL_ROOT_PASSWORD=admin --name mysql -v /data/mysql/my.cnf:/etc/mysql/my.cnf -v /data/mysql/data:/var/lib/mysql -p 3306:3306 mysql --lower_case_table_names=1

解釋如下:

-d 容器在后臺運行

-e MYSQL_ROOT_PASSWORD=admin 配置mysql root的密碼

-v 對mysql 的配置文件和數(shù)據(jù)存儲路徑進行映射到宿主機刁赦,對數(shù)據(jù)持久化

-p 端口映射

--name 定義容器的名稱

--lower_case_table_names=1 定義數(shù)據(jù)庫不區(qū)分表名大小寫

通過上一節(jié)的學(xué)習(xí)娶聘,我們知道了如何部署一個不帶數(shù)據(jù)庫的靜態(tài)nginx頁面;但一般的web應(yīng)用中甚脉,還需要部署mysql數(shù)據(jù)庫丸升,本節(jié)我們將學(xué)習(xí)如何使用容器部署mysql數(shù)據(jù)庫。

01

mysql獨立部署

我們可以將mysql與web應(yīng)用部署在同一個容器內(nèi)牺氨,但更一般的用法是將mysql獨立部署一個容器狡耻。

獲取mysql5.6.36官方鏡像

(mysql5.7變動較大墩剖,推薦使用5.6)

docker pull mysql:5.6.36

我們可以進入mysql:5.6.36容器進行mysql遠程登錄的相關(guān)設(shè)置。

運行mysql:5.6.36容器,-p映射為宿主機3306端口

docker run -it -p 3306:3306 mysql:5.6.36 /bin/bash

開啟mysql進程

root@0950cf64b8e6:/# service mysql start

進入mysql

root@0950cf64b8e6:/# mysql

修改root用戶密碼為123456

mysql> update user set password=password("123456") where user='root';

允許遠程用戶訪問(一般應(yīng)當設(shè)置為白名單IP夷狰,此處為所有IP)

mysql> GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

驗證是否設(shè)置成功岭皂,host中含有%

mysql> select host, user from user;

保存退出

mysql> flush privileges;

mysql> exit;

停止容器后,保存當前鏡像為webmysql

root@0950cf64b8e6:/# docker stop 0950cf64b8e6

root@0950cf64b8e6:/# docker commit 0950 webmysql

以上設(shè)置完成后沼头,我們在宿主機上安裝mysql客戶端爷绘,就可以通過宿主機的IP進行mysql數(shù)據(jù)庫的使用了。

02

mysql數(shù)據(jù)持久化

對于容器數(shù)據(jù)庫來說瘫证,一旦容器停止揉阎,容器中的數(shù)據(jù)就會消失,不利于數(shù)據(jù)存儲背捌,雖然我們可以通過定時commit的方法來保存容器中的數(shù)據(jù)毙籽,但我們有更好的實現(xiàn)方法。

使用-v共享存儲

mysql默認的數(shù)據(jù)存儲目錄為/var/lib/mysql,我們可以通過宿主機共享容器/var/lib/mysql目錄的方式來實現(xiàn)數(shù)據(jù)的持久化毡庆。

帶-v參數(shù)啟動webmysql

docker run -it -v /var/mysql/data:/var/lib/mysql -p 3306:3306 mysql:5.6.36 /bin/bash

鏡像啟動后坑赡,我們啟動mysql服務(wù),發(fā)現(xiàn)mysql無法啟動么抗。查找官方文檔毅否,因SElinux服務(wù)開啟,需要在宿主機執(zhí)行如下命令:

chcon -Rt svirt_sandbox_file_t /var/mysql/data

或者關(guān)閉SElinux也可以蝇刀。

臨時關(guān)閉

setenforce 0

修改配置文件螟加,需要重啟

vim /etc/selinux/config

SELINUX=disabled

上述配置完成后,仍然無法啟動mysql吞琐,結(jié)合mysql日志查看可能是文件權(quán)限的問題捆探,在宿主機上給予共享文件夾對應(yīng)的權(quán)限:

賦予本地存儲對應(yīng)的權(quán)限,單讀寫權(quán)限不行

chmod 777 -R /var/mysql/data/

設(shè)置完成后站粟,容器可以啟動mysql服務(wù)黍图。

在宿主機查看/var/mysql/data/文件夾下,發(fā)現(xiàn)已經(jīng)將/var/lib/mysql/文件夾內(nèi)容同步奴烙,使用stop關(guān)閉容器后助被,文件夾數(shù)據(jù)不會消失。再次啟動容器mysql后切诀,數(shù)據(jù)庫內(nèi)容仍然存在揩环。數(shù)據(jù)持久化設(shè)置完成。

03

連接mysql容器

3.1 mycentos容器使用link連接

啟動mysql容器

docker run --name=mysql_server -it -v /var/mysql/data:/var/lib/mysql -p 3306:3306 webmysql /bin/bash

--name=mysql_server指定了容器運行的name

啟動mycentos容器

docker run --link=mysql_server:db -it -p 80:80 mycentos /bin/bash

--link=mysql_server:db幅虑,指定了能夠與mysql數(shù)據(jù)庫容器繼續(xù)連接丰滑,db指定了一個連接的別名

在mycentos上安裝mysql客戶端后就可以使用命令行登錄mysql:

mysql -h db -uroot -p123456

MySQL [(none)]>

在web應(yīng)用的配置文件中,更改數(shù)據(jù)庫的配置即可:

host: db

username: root

password: 123456

3.2 宿主機使用IP連接

部分情況下翘单,我們可能需要使用宿主機連接登錄mysql容器吨枉,這樣顯然不能使用link的方法。

容器與宿主機之間是通過bridge進行的網(wǎng)絡(luò)連接哄芜,我們可以通過使用內(nèi)網(wǎng)IP地址連接容器mysql貌亭。

查看webmysql容器的IP地址,e79dd0dc4f1f為其docker ps顯示的ID

docker inspect --format '{ { .NetworkSettings.IPAddress } }' e79dd0dc4f1f

172.17.0.a

其地址為172.17.0.a认臊,我們可以使用該IP地址登錄容器mysql

mysql -h 172.17.0.a -uroot -p123456

MySQL [(none)]>

值得注意的是圃庭,這種使用IP的方法也適用于容器與容器之間的mysql的連接,容器連接宿主機mysql失晴。

04

更多主題探討

通過這幾節(jié)的學(xué)習(xí)剧腻,我們能夠使用容器部署網(wǎng)站與數(shù)據(jù)庫,然而對于docker技術(shù)而言涂屁,這只是其中最基礎(chǔ)的使用书在。以下是與web部署強相關(guān)的主題:

1、通過commit拆又,我們能夠保存對容器的更改存儲在宿主機儒旬,但當宿主機出現(xiàn)問題時,就需要進行使用鏡像恢復(fù)帖族。這涉及到如何備份與恢復(fù)images鏡像栈源。

2、我們創(chuàng)建容器mycentos與webmysql竖般,都是通過手動的方式甚垦,而docker更一般的用法是使用Dockerfile,我們可以嘗試這種更簡便的使用方法涣雕。

05

參考資料

1艰亮、MySQL 官方 Docker 鏡像的使用,https://www.cnblogs.com/cfrost/p/6241892.html

2胞谭、自己學(xué)Docker:8.容器的持久化,http://blog.csdn.net/mungo/article/details/51472130

3垃杖、mysql,https://hub.docker.com/_/mysql/

4、查看 SELinux狀態(tài)及關(guān)閉SELinux,http://blog.51cto.com/bguncle/957315

5丈屹、docker容器鏈接宿主機mysql调俘,https://segmentfault.com/a/1190000008701796

6、Docker中容器的備份旺垒、恢復(fù)和遷移彩库,http://www.linuxidc.com/Linux/2015-08/121184.htm

7、Docker使用link建立容器之間的連接先蒋,http://www.reibang.com/p/13752117ff97

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末骇钦,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子竞漾,更是在濱河造成了極大的恐慌眯搭,老刑警劉巖窥翩,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異鳞仙,居然都是意外死亡寇蚊,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門棍好,熙熙樓的掌柜王于貴愁眉苦臉地迎上來仗岸,“玉大人,你說我怎么就攤上這事借笙“遣溃” “怎么了?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵业稼,是天一觀的道長盗痒。 經(jīng)常有香客問我,道長盼忌,這世上最難降的妖魔是什么积糯? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮谦纱,結(jié)果婚禮上看成,老公的妹妹穿的比我還像新娘。我一直安慰自己跨嘉,他們只是感情好川慌,可當我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著祠乃,像睡著了一般梦重。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上亮瓷,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天琴拧,我揣著相機與錄音,去河邊找鬼嘱支。 笑死蚓胸,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的除师。 我是一名探鬼主播沛膳,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼汛聚!你這毒婦竟也來了锹安?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎叹哭,沒想到半個月后忍宋,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡风罩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年讶踪,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片泊交。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖柱查,靈堂內(nèi)的尸體忽然破棺而出廓俭,到底是詐尸還是另有隱情,我是刑警寧澤唉工,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布研乒,位于F島的核電站,受9級特大地震影響淋硝,放射性物質(zhì)發(fā)生泄漏雹熬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一谣膳、第九天 我趴在偏房一處隱蔽的房頂上張望竿报。 院中可真熱鬧,春花似錦继谚、人聲如沸烈菌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽芽世。三九已至,卻和暖如春诡壁,著一層夾襖步出監(jiān)牢的瞬間济瓢,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工妹卿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留旺矾,地道東北人。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓纽帖,卻偏偏與公主長得像宠漩,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子懊直,可洞房花燭夜當晚...
    茶點故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內(nèi)容