关于docker环境下mysql的使用相关
生活随笔
收集整理的這篇文章主要介紹了
关于docker环境下mysql的使用相关
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
一.在docker容器中運(yùn)用mysql與外界交互方法一:使用Dockerfile一鍵創(chuàng)建
1.第一步創(chuàng)建Dockerfile文件
Dockerfile:
FROM ubuntu:14.04 #使用的系統(tǒng)版本
MAINTAINER gaoze #主要標(biāo)簽
#RUN apt-get update #更新軟件庫(kù)
RUN apt-get -y install mysql-server #安裝mysql
RUN /etc/init.d/mysql start \&& mysql -uroot -p123456 -e "grant all privileges on *.* to 'root'@'%' identified by '123456';" \&& mysql -uroot -p123456 -e "grant all privileges on *.* to 'root'@'localhost' identified by '123456';"
#以上為登陸mysql并授權(quán)允許root賬戶(hù)遠(yuǎn)程與本地登陸
RUN sed -Ei 's/^(bind-address|log)/#&/' /etc/mysql/my.cnf \&& echo 'skip-host-cache\nskip-name-resolve' | awk '{ print } $1 == "[mysqld]" && c == 0 { c = 1; system("cat") }' /etc/mysql/my.cnf > /tmp/my.cnf \&& mv /tmp/my.cnf /etc/mysql/my.cnf
#以上重新配置my.cnf文件
EXPOSE 3306 #關(guān)聯(lián)到3306端口
CMD ["/usr/bin/mysqld_safe"] 2.第二步shell下開(kāi)始執(zhí)行命令
(1)#指定docker image的名字為docker-mysql
docker build -t docker-mysql . //開(kāi)始執(zhí)行Dockerfile文件,”-t”表示標(biāo)簽,“.”代表當(dāng)前目錄,因?yàn)槭窃诰€安裝要下載很多東西時(shí)間會(huì)比較長(zhǎng)(2)#啟動(dòng)這個(gè)image,-d代表后臺(tái)執(zhí)行,-p代表端口映射
docker run -d -p 50001:3306 docker-mysql(3)#讓我們?cè)L問(wèn)mysql試試,先看看container的運(yùn)行狀況
docker ps (4)#發(fā)現(xiàn)port寫(xiě)的是 0.0.0.0:50001 -> 3306/tcp
mysql -h 0.0.0.0 -P 50001 -uroot -p123456ok,可以訪問(wèn)了,由于0.0.0.0是localhost(雖然hosts中已經(jīng)屏蔽了,然而還是可以訪問(wèn)本地),試試mysql -h ${本機(jī)IP地址} -P 50001 -uroot -p123456那么,這樣便創(chuàng)建了一個(gè)可用的docker image方法二:下載mysql的docker鏡像-〉運(yùn)行-〉授權(quán)
(1)#從官方下載docker鏡像,這里選擇的5.6.35版本
sudo?docker pull mysql:5.6.35 (2)#創(chuàng)建鏡像容器并保持在后臺(tái)運(yùn)行狀態(tài),需要指定端口關(guān)系,否則會(huì)隨機(jī)分配,無(wú)法與外界交互
sudo?docker run --name mysql -p 12345:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:5.6.35(3)#連接到容器的bash終端
sudo docker exec -it mysql bash(4)#連接到mysql數(shù)據(jù)庫(kù),my-secret-pw是root的默認(rèn)密碼,可以在運(yùn)行鏡像時(shí)定義
mysql -uroot -pmy-secret-pw(5)#修改root的登陸密碼
-〉set password for root@localhost = password('123456');(6)#退出mysql連接,在mysql容器bash中執(zhí)行
a)mysql -uroot -p123456 -e "grant all privileges on *.* to 'root'@'%' identified by '123456';"
b)mysql -uroot -p123456 -e "grant all privileges on *.* to 'root'@'localhost' identified by '123456';"
c)sed -Ei 's/^(bind-address|log)/#&/' /etc/mysql/my.cnf && echo 'skip-host-cache\nskip-name-resolve' | awk '{ print } $1 == "[mysqld]" && c == 0 { c = 1; system("cat") }' /etc/mysql/my.cnf > /tmp/my.cnf
d)mv /tmp/my.cnf /etc/mysql/my.cnf
(7)#在主機(jī)bash中遠(yuǎn)程登陸測(cè)試,“-P”大寫(xiě)表示映射的端口,可以通過(guò)sudo docker ps查看
mysql -h 192.168.161.129 -P 12345 -uroot -p123456二.在docker容器中進(jìn)行鏡像遷移方法:運(yùn)行原始鏡像-〉在容器中配置-〉保存容器為新的鏡像-〉導(dǎo)出/push到云端
1.使用docker commit 命令來(lái)提交更新后的副本
#sudo docker commit -m "此處是文本說(shuō)明" -a "指定的更新用戶(hù)" 0b2616b0e5a8[]創(chuàng)建鏡像的容器ID] 倉(cāng)庫(kù)名:tag標(biāo)簽2.1使用 docker save 命令導(dǎo)出鏡像到本地文件
sudo docker save -o ubuntu_14.04.tar ubuntu:14.042.2使用 docker load 載入保存的鏡像
sudo docker load --input ubuntu_14.04.tar 或者是
sudo docker load < ubuntu_14.04.tar3.運(yùn)行鏡像文件,必需指定映射端口
Sudo docker run --name mysqlv1 -p 12345:3306 -d docker-mysl:v1
?
轉(zhuǎn)載于:https://my.oschina.net/urlove/blog/1544546
總結(jié)
以上是生活随笔為你收集整理的关于docker环境下mysql的使用相关的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 程序员的灯下黑:重知识轻技术(转)
- 下一篇: 园友们大家好,我是“一只酷酷的恺”