使用docker制作Mysql镜像
一、过程说明
通过Dockerfile创建mysql镜像,使用的mysql软件包为mariadb二进制分发版,最终在宿主机启动mysql容器从而能在mysql容器外部访问mysql服务。
宿主机IP:172.20.236.106
宿主机操作系统:CentOS7.5(x86_64)
宿主机内核版本:3.10.0-327.el7.x86_64
Dockerfile相关
Dockerfile位置:/root/dockerfile/Dockerfile
MariaDB镜像位置:/root/dockerfile/mariadb-10.1.35-linux-x86_64.tar.gz
MariaDB所需依赖包及位置:/root/dockerfile/libaio-0.3.109-13.el7.x86_64.rpm
Dockerfile启动脚本:/root/dockerfile/setup.sh
二、Dockerfile文件
1、Dockerfile
# This dockerfile uses the centos image
# VERSION
# Author: JianJie
# Command format: Instruction [arguments / command] .. # Base image to use, this must be set as the first line
FROM centos:latest # Maintainer: docker_user <docker_user at email.com> (@docker_user)
MAINTAINER JianJie jie.jian@transwarp.cn # Command to update the image
WORKDIR /root
ENV MYSQL_DATA_DIR=/mydata/data
ENV MYSQL_USER=mysql
ENV MYSQL_EXTRACT_DIR=/usr/local
ENV MYSQL_PORT=3306 COPY libaio-0.3.109-13.el7.x86_64.rpm $MYSQL_EXTRACT_DIR
COPY mariadb-10.1.35-linux-x86_64.tar.gz $MYSQL_EXTRACT_DIR
COPY setup.sh /root
RUN chmod +x /root/setup.sh
RUN mkdir -p $MYSQL_DATA_DIR && cd $MYSQL_EXTRACT_DIR && yum install -y libaio-0.3.109-13.el7.x86_64.rpm && \
echo "Unpacking mysql ..." && tar xf mariadb-10.1.35-linux-x86_64.tar.gz && \
ln -sf mariadb-10.1.35-linux-x86_64 mysql && rm -rf mariadb-10.1.35-linux-x86_64.tar.gz
RUN groupadd -r -g 306 mysql && useradd -r -g 306 -u 306 mysql && cd $MYSQL_EXTRACT_DIR/mysql && \
chown -R mysql:mysql ./* && chown -R mysql:mysql $MYSQL_DATA_DIR
RUN cd $MYSQL_EXTRACT_DIR/mysql && cp support-files/mysql.server /etc/rc.d/init.d/mysqld && \
chkconfig --add mysqld && chkconfig mysqld on && echo "export PATH=$MYSQL_EXTRACT_DIR/mysql/bin:$PATH" >> /etc/profile.d/mysql.sh && \
source /etc/profile.d/mysql.sh
RUN mkdir -p /etc/mysql && cd $MYSQL_EXTRACT_DIR/mysql && cp support-files/my-large.cnf /etc/mysql/my.cnf && \
sed -i '/\[mysqld\]/a \datadir = '"$MYSQL_DATA_DIR"'\ninnodb_file_per_table = on\nskip_name_resolve = on' /etc/mysql/my.cnf RUN yum clean all
EXPOSE 3306 CMD ["/root/setup.sh"]
2、setup.sh
#!/bin/sh
chown -R mysql:mysql /mydata/data
cd /usr/local/mysql/scripts && ./mysql_install_db --user=mysql --datadir=/mydata/data --socket=/tmp/mysql.sock --pid-file=/mydata/data/mysqld.pid --log-error=/mydata/data/mysqld.log --basedir=/usr/local/mysql
cd /usr/local/mysql/bin && ./mysqld_safe --user=mysql --basedir=/usr/local/mysql --datadir=/mydata/data --socket=/mydata/data/mysql.sock
# sleep 5
# mysql < /root/password.sql
3、libaio-0.3.109-13.el7.x86_64.rpm
三、制作Dockerfile步骤
制作Dockerfile步骤:
mkdir -p /root/dockerfile // 创建Dockerfile目录
将官网下载的MariaDB二进制安装包下载至Dockerfile目录:/root/dockerfile;
将MariaDB所需依赖包libaio-0.3.109-13.el7.x86_64.rpm下载至至Dockerfile目录:/root/dockerfile;
编写Dockerfile和Dockerfile启动脚本setup.sh;
ls -l /root/dockerfile



根据Dockerfile构建mysql镜像:
docker build -t docker-user/mysql:v1 /root/dockerfile
构建Dockerfile过程:

成功通过Dockerfile构建mysql镜像:

查看成功构建的mysql镜像:

四、启动mysql容器
启动mysql容器:
docker run -d -p 13306:3306 -v /hadoop/mysql:/mydata/data docker-user/mysql:v1

说明:
-p参数用于将容器内mysql暴露的3306端口映射至本地主机的13306端口;-v参数将容器中mysql的数据目录挂载至本地主机的/hadoop/mysql目标。
五、连接mysql服务
mysql -P 13306 -S /hadoop/mysql/mysql.sock
在本地主机连接mysql服务:

使用docker制作Mysql镜像的更多相关文章
- Docker 制作mysql镜像
# 拉取Ubuntu镜像 docker pull docker.io/ubuntu: # 运行一个容器 docker run --name mysql -p 33:3306 -v /mysql:/va ...
- Dockerfile介绍、Docker制作jdk镜像
Dockerfile介绍.Docker制作jdk镜像 目标 1.Dockerfile简介 2.Docker制作jdk镜像 Dockerfile简介 dockerfile 是一个文本格式的配置文件, 用 ...
- Docker启动Mysql镜像
date: 2020-03-14 17:00:00 updated: 2020-03-14 18:00:00 Docker启动Mysql镜像 管理员权限!!! docker run -p 3306:3 ...
- Docker安装mysql镜像并进行主从配置
Docker安装mysql镜像并进行主从配置 1.下载需要的mysql版本镜像 docker pull mysql:5.6 2.启动mysql服务实例(基本启动) #启动主mysql docker r ...
- 使用docker中mysql镜像
1.拉取mysql镜像 docker pull mysql:5.6 2.运行mysql的镜像生成一个正在运行的容器,可以通过docker contain ls得到容器的id信息 docker run ...
- docker 创建mysql镜像,并成功进行远程连接
1.安装 1.1 拉取镜像 docker pull mysql 拉取成功可以验证一下 docker images 1.2 创建并启动一个mysql容器 docker run --name ly-mys ...
- Docker下载mysql镜像
1.使用命令查看mysql NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL [OK] mariadb MariaDB [OK] mysql/ ...
- 用Docker构建MySQL镜像
构建MySQL镜像 本文目的不仅仅是创建一个MySQL的镜像,而是在其基础上再实现启动过程中自动导入数据及数据库用户的权限设置,并且在新创建出来的容器里自动启动MySQL服务接受外部连接,主要是通过D ...
- docker封装mysql镜像
一.概述 直接使用官方的镜像 docker pull mysql:5.7 但是mysqld.cnf并没有优化,还是默认的. 二.封装镜像 创建目录 # dockerfile目录 mkdir -p /o ...
随机推荐
- Python模块是否支持自定义属性使用双下划线开头和结尾?
我们知道在Python中,变量名类似__xxx__的,也就是以双下划线开头并且以双下划线结尾的变量和方法,是特殊变量,特殊变量是可以直接访问的,不是私有变量,所以,一般实例变量和类变量以及方法不能用_ ...
- PyQt(Python+Qt)学习随笔:QTreeWidget中标题相关属性访问方法headerItem、setHeaderLabels
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 树型部件窗口可以有一个标题头,其中包含部件中每个列的节(即标题).QTreeWidget的标题属性包 ...
- Python正则表达式re.search(r'\*{3,8}','*****')和re.search('\*{3,8}','*****')的匹配结果为什么相同?
老猿做过如下测试: >>> re.search(r'\*{3,100}','*****') <re.Match object; span=(0, 5), match='**** ...
- 团队作业三——需求改进&系统设计
需求改进&系统设计 一. 需求&原型改进 1. 针对课堂讨论环节老师和其他组的问题及建议,对修改选题及需求进行修改 老师及其他组的同学在课堂讨论时尚未提出问题及修改意见,但是课后我们有 ...
- 补:冲刺Day2
每天举行站立式会议照片: 昨天已完成的工作: 各个成员在 Alpha 阶段认领的任务. 今天各个成员的任务安排. 冲刺Day1博客. 今天计划完成的工作: 成员 任务 高嘉淳 完成登陆.注册 覃泽泰 ...
- Markdown常用数学符号&公式
符号 代码 描述 \(\sim\) $\sim$ 波浪号 \(\sum\) $\sum$ 求和公式 \(\sum_{i=0}^n\) $\sum_{i=0}^n$ 求和上下标 \(\times\) $ ...
- Codeforces Round #631 (Div. 1) A-C
在 \(\text{Div. 2/3}\) 混了一个多月后,四个号终于都上紫了,也没用理由不打 \(\text{Div. 1}\) 了.这是我人生中的第一场 \(\text{Div .1}\) ,之前 ...
- Day5 - 02 定义函数
定义函数 Python中定义函数要使用def语句. 依次写出函数名.括号.括号中的参数和冒号,在缩进块中编写函数体,通过return语句返回函数返回值.如: ...
- springmvc中使用文件上传功能
项目代码:https://github.com/PeiranZhang/springmvc-fileupload Servlet3.0之前使用文件上传功能 Servlet3.0之前需要使用common ...
- mysql位函数的使用
查询每个月的访问天数 mysql> create table t1 (year YEAR(4),month int(2) unsigned zerofill,day int(2) u nsign ...