docker部署mysql

cat Dockerfile 
FROM custom/base
MAINTAINER bjbaixiaoyu@easycreate.com
# add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added
RUN groupadd mysql
RUN useradd -M -g mysql my3306
RUN yum install perl-Module-Install.noarch libev vim lrzsz cronie screen bind-utils  rsync openssh-clients nfs-utils rpcbind lvm2 ntpdate lsof sysstat tree telnet unzip zip  -y
COPY mysql-5.6.25-linux-glibc2.5-x86_64.tar.gz /root
RUN tar xzvf /root/mysql-5.6.25-linux-glibc2.5-x86_64.tar.gz -C /root
RUN mv /root/mysql-5.6.25-linux-glibc2.5-x86_64 /usr/local/mysql-5.6.25
#RUN mkdir -p /data/mysql_3306
RUN mkdir -p /data/mysql_3306/tmp
ADD  my3306.cnf /data/mysql_3306

ENV MYSQL_MAJOR 5.6
ENV MYSQL_VERSION 5.6.25
#VOLUME ["/data/mysql_3306"]

EXPOSE 3306
RUN cd /usr/local/mysql-5.6.25/scripts && ./mysql_install_db --datadir=/data/mysql_3306 --basedir=/usr/local/mysql-5.6.25
#RUN chown -R my3306:mysql /data/mysql_3306/
CMD cd /usr/local/mysql-5.6.25 && ./bin/mysqld_safe --defaults-file=/data/mysql_3306/my3306.cnf --user=root

构建dockerfile

docker build -t custom/my3306 /data/baixyu/mysql/myfile/

启动容器

docker run -p 3306:3306 –name mysql_3306 -v /data/baixyu/mysql/data:/data/mysql_3306/ -d custom/my3306

容器在后台运行的情况下,进入控制台
docker exec -it mysql_3306 /bin/bash

mysql启动后,宿主机上是无法访问的,

/usr/local/mysql-5.6.25/bin/mysql -u root -h 127.0.0.1 -P3306
ERROR 1130 (HY000): Host ‘172.17.0.1’ is not allowed to connect to this MySQL server

需要进入控制台,然后在 127.0.0.1登录,授权。
测试
创建一个库baixyu,建一个表t
在宿主机上的目录下看是有对应的文件生成了

pwd
/data/baixyu/mysql/data/baixyu
[root@ baixyu]# ls
db.opt  t.frm  t.ibd

需要考虑的问题:
1 目录的问题,安装mysql的数据文件目录本不是root,但测试时候发现无法修改,暂时没找到解决方法。
2网络ip的问题,真到了线上ip怎么配置需要考虑。
3每个容器使用的资源需要控制

在制作完成mysql镜像后,把对应的数据文件夹下的所有文件保存一下。这样就可以使用这个镜像启动多个实例,需要把之前保存的文件拷贝到新的宿主机目录里面,这样启动是没有问题的。这样就可以使用一个镜像在多个机器上快速启动多个实例。对于大量需要部署的情况下很有用

你可能感兴趣的:(linux)