一、过程说明

通过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. PyQt学习随笔:重写setData方法截获Model/View中视图数据项编辑的注意事项

    根据<PyQt学习随笔:Model/View中视图数据项编辑变动实时获取变动数据的方法>可以重写从PyQt的Model类继承的setData方法来实时截获View中对数据的更改,但需要注意 ...

  2. PyQt(Python+Qt)学习随笔:Designer中的QDialogButtonBox的按钮改变缺省文字的方法

    在Qt Designer中可以预先定义标准按钮,相关支持的标准按钮请见<PyQt(Python+Qt)学习随笔:Designer中的QDialogButtonBox的StandardButton ...

  3. PyQt(Python+Qt)学习随笔:toolButton的autoRaise和arrowType属性

    autoRaise属性 autoRaise属性表示toolButton按钮是否自动凸出,类型为布尔类型.默认值为False,可以通过autoRaise().setAutoRaise(bool enab ...

  4. Mysql 存储过程(变量、定义条件、处理程序、光标、流程控制构造)

    最近由于有同事编写了存储函数,需要进行验证,但是对存储过程一直不是很了解,所以抽时间了解了一下存储过程的基本语法.本篇文章主要包括介绍了存储过程的5个小语法:declare语句的变量.定义条件.处理程 ...

  5. Scrum冲刺_Day07

    一.团队展示: 1.项目:light_note备忘录 2.队名:删库跑路队 3.团队成员 队员(不分先后) 项目角色 黄敦鸿 后端工程师.测试 黄华 后端工程师.测试 黄骏鹏 后端工程师.测试 黄源钦 ...

  6. Linux下安装视频转换工具ffmpeg

    ffmpeg下载地址:http://ffmpeg.org/releases/ 1.首先需要安装解码器集合(包含安装ffmpeg用到的所有解码器)下载地址: 链接:https://pan.baidu.c ...

  7. 前端webSocket和后台php

    HTTP协议的特性:属于"请求-响应"模型,只有客户端发起了请求消息,服务器才能给出响应消息,没有请求,就没有响应:一个请求消息,服务器只能返回一个响应消息.有些特殊应用场景中,如 ...

  8. react路由初探(1)

    import React from 'react'; import logo from './logo.svg'; import './App.css'; class About extends Re ...

  9. 在虚拟机中安装Linux系统CentOS7详细教程!!!超详细!!!!一看就会!!!手把手教学!!!

    一.CentOS的下载 CentOS是免费版,推荐在官网上直接下载.https://www.centos.org/download/ DVD ISO:普通光盘完整安装版镜像,可离线安装到计算机硬盘上, ...

  10. django 验证码

    1.django 缓存设置 django的六种缓存(mysql+redis) :https://www.cnblogs.com/xiaonq/p/7978402.html#i6 1.1 安装Djang ...