一、过程说明

通过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镜像的更多相关文章

  1. Docker 制作mysql镜像

    # 拉取Ubuntu镜像 docker pull docker.io/ubuntu: # 运行一个容器 docker run --name mysql -p 33:3306 -v /mysql:/va ...

  2. Dockerfile介绍、Docker制作jdk镜像

    Dockerfile介绍.Docker制作jdk镜像 目标 1.Dockerfile简介 2.Docker制作jdk镜像 Dockerfile简介 dockerfile 是一个文本格式的配置文件, 用 ...

  3. Docker启动Mysql镜像

    date: 2020-03-14 17:00:00 updated: 2020-03-14 18:00:00 Docker启动Mysql镜像 管理员权限!!! docker run -p 3306:3 ...

  4. Docker安装mysql镜像并进行主从配置

    Docker安装mysql镜像并进行主从配置 1.下载需要的mysql版本镜像 docker pull mysql:5.6 2.启动mysql服务实例(基本启动) #启动主mysql docker r ...

  5. 使用docker中mysql镜像

    1.拉取mysql镜像 docker pull mysql:5.6 2.运行mysql的镜像生成一个正在运行的容器,可以通过docker contain ls得到容器的id信息 docker run ...

  6. docker 创建mysql镜像,并成功进行远程连接

    1.安装 1.1 拉取镜像 docker pull mysql 拉取成功可以验证一下 docker images 1.2 创建并启动一个mysql容器 docker run --name ly-mys ...

  7. Docker下载mysql镜像

    1.使用命令查看mysql NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL [OK] mariadb MariaDB [OK] mysql/ ...

  8. 用Docker构建MySQL镜像

    构建MySQL镜像 本文目的不仅仅是创建一个MySQL的镜像,而是在其基础上再实现启动过程中自动导入数据及数据库用户的权限设置,并且在新创建出来的容器里自动启动MySQL服务接受外部连接,主要是通过D ...

  9. docker封装mysql镜像

    一.概述 直接使用官方的镜像 docker pull mysql:5.7 但是mysqld.cnf并没有优化,还是默认的. 二.封装镜像 创建目录 # dockerfile目录 mkdir -p /o ...

随机推荐

  1. 安装nginx并安全地配置和启动

    一.安装nginx >>参考文章<< 安装教程,看代码&注释 # .sh # 如果centos服务器是最低安装,则先安装weget yum install -y wge ...

  2. 团队项目6——Alpha阶段项目复审

    复审团队 广东靓仔六强选手 复审员 钟俊豪(3118005122) 复审内容 小组名称和链接 优点 缺点&Bug报告 最终排名 代码敲不队https://www.cnblogs.com/pip ...

  3. js动态加载js文件(js异步加载之性能优化篇)

    1.[基本优化] 将所有需要的<script>标签都放在</body>之前,确保脚本执行之前完成页面渲染而不会造成页面堵塞问题,这个大家都懂. 2.[合并JS代码,尽可能少的使 ...

  4. WPF页面刷新

    WPF页面刷新: 在WPF项目中,类的属性变了,但界面值没有变,且我们也没有对类的属性做PropertyChanged的set处理. 如何实现呢? 首先我们需要实现一个INotifyPropertyC ...

  5. 【APIO2018】选圆圈(平面分块 | CDQ分治 | KDT)

    Description 给定平面上的 \(n\) 个圆,用三个参数 \((x, y, R)\) 表示圆心坐标和半径. 每次选取最大的一个尚未被删除的圆删除,并同时删除所有与其相切或相交的圆. 最后输出 ...

  6. 题解-Enemy is weak

    Enemy is weak 求序列 \(a\{n\}\) 中的三元逆序对数量. 数据范围:\(3\le n\le 1e6\). 这题真是一道又好又水的题,可是我看别人的题解做法真是玄学难懂,于是蒟蒻要 ...

  7. Array的简单使用(Boost和STL通用)

    目录 目录 介绍 使用 Boost和STL的区别 介绍 本来这一次是想简单介绍一下Boost里面的协程库的使用的,但是Boost.Coroutine已经被废弃了,而Boost.Coroutine2目前 ...

  8. 《深入理解计算机系统》实验三 —— Buf Lab

    这是CSAPP的第三个实验,主要让我们熟悉GDB的使用,理解程序栈帧的结构和缓冲区溢出的原理. 实验目的   本实验的目的在于加深对IA-32函数调用规则和栈结构的具体理解.实验的主要内容是对一个可执 ...

  9. python 安装相关

    一.安装python 1.官网下载python 1.1 可下载绿色版 2.2 也可下载安装版,安装时可自动安装pip 和 自动配置环境变量 2.手动配置环境变量,我的电脑>属性>高级> ...

  10. Java中的命名规范。

    类:所有单词的首字母大写,如:TestJava. 方法:第1个单词的首字母小写,之后每个单词的首字母大写,如:getInfo(). 属性:第1个单词的首字母小写,之后每个单词的首字母大写,如:stud ...