MySQL是流行的開源關系數(shù)據(jù)庫實現(xiàn),因為其高性能、可靠性和適應性而得到廣泛應用和關注欠肾。
下載文件
從GitHub Dockerpool社區(qū)下載mySQL鏡像項目:
# git clone https://github.com/DockerPool/mysql.git
Dockerfile 內容為:
# 參考 tutum 的 Dockerfile
FROM sshd:dockerfile
# 作者信息
MAINTAINER Waitfish <dwj_zz@163.com>
# 安裝軟件
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update &&\
apt-get -yq install mysql-server-5.6 pwgen &&\
rm -rf /var/lib/apt/lists/*
# 刪除預安裝的數(shù)據(jù)庫文件
RUN rm -rf /var/lib/mysql/*
# 添加文件夾下的MYSQL 配置文件
ADD my.cnf /etc/mysql/conf.d/my.cnf
ADD mysqld_charset.cnf /etc/mysql/conf.d/mysqld_charse.cnf
# 添加 MYSQL 的腳本
ADD import_sql.sh /import_sql.sh
ADD run.sh /run.sh
RUN chmod 755 /*.sh
# 設置環(huán)境變量凿叠,用戶名以及密碼
ENV MYSQL_USER admin
ENV MYSQL_PASS **Random**
# 設置主從復制模式下的環(huán)境變量
ENV REPLICATION_MASTER **False**
ENV REPLICATION_SLAVE **False**
ENV REPLICATION_USER replica
ENV REPLICATION_PASS replica
# 設置允許掛載的卷昧识,可以用來備份數(shù)據(jù)庫和配置文件
VOLUME ["/etc/mysql"攻臀, "/var/lib/mysql"]
# 設置可以映射的端口焕数,如果是從我們的sshd鏡像繼承的話,默認還會開啟22端口
EXPOSE 3306
CMD ["/run.sh"]
創(chuàng)建鏡像
使用docker build命令來創(chuàng)建鏡像mysql:latest:
# sudo docker build -t mysql:latest .
使用鏡像
使用默認方式啟動后臺容器刨啸,不添加環(huán)境變量堡赔,并使用-P參數(shù)自動映射容器的22和3306端口。
# sudo docker run -d -P mysql
檢查容器進程啟動情況和端口映射情況设联,可見容器的22端口被映射到本地的49153端口善已。
# sudo docker ps
通過映射的本地49153端口SSH登錄容器,并查看運行的進程离例。
# ssh 127.0.0.1 -p 49153
# ps -ef |grep mysql
默認情況下换团,容器內的MySQL提供了root賬號和admin賬號,其中root賬號無需密碼宫蛆,但只允許本地訪問艘包。
mysql>select host, user耀盗, password from mysql.user;
admin賬號擁有遠程訪問權限想虎。其密碼可以使用docker logs命令來查看獲取:
# sudo docker logs eef
指定admin 賬號用戶名和密碼
$ sudo docker run -d -P -e MYSQL_PASS="mypass" mysql
掛載目錄到容器
掛載本地主機的目錄到容器內叛拷,例如:
# docker run -d -P -v /opt/mysqldb:/var/lib/mysql mysql
啟用主從模式
利用主從模式舌厨,可以為數(shù)據(jù)庫提供更好的可靠性。
首先忿薇,創(chuàng)建一個名稱為mysql的主容器:
# sudo docker run -d -e REPLICATION_MASTER=true -P --name mysql mysql
創(chuàng)建從容器裙椭,并連接到剛剛創(chuàng)建的主容器:
sudo docker run -d -e REPLICATION_SLAVE=true -P --link mysql:mysql mysql
注意,這里的主mysql服務器的名字必須為mysql署浩,否則會收到錯誤提示:
`Cannotconfigure slave揉燃,please link it to another MySQL container with alias as 'mysql'。
查看容器互聯(lián)信息:
# sudo docker ps
現(xiàn)在筋栋,就可以通過相應的端口來直接連接主或者從MySQL服務器了你雌。