Dockerfile 基于centos7镜像搭建MySQL服务

Dockerfile

mkdir mysql
cd mysql
vim Dockerfile
将软件包考入当前目录:mysql-5.6.26.tar.gz
FROM centos:7
MAINTAINER This is MySQL
#更新yum源安装软件包
RUN yum -y update && yum -y install gcc gcc-c++ make pcre-devel expat-devel perl ncurses ncurses-devel bison cmake autoconf
#解压mysql包
ADD mysql-5.6.26.tar.gz /opt/
#创建系统用户
RUN useradd -s /sbin/nologin mysql
#进入源码包,执行cmake文件,指定工作目录
WORKDIR /opt/mysql-5.6.26
RUN cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DSYSCONFIDIR=/etc \
-DMYSQL_DATADIR=/home/mysql/ \
-DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock   
#make编译
RUN make && make install
#复制默认配置文件到/etc目录下
RUN cp -f support-files/my-default.cnf /etc/my.cnf
RUN mkdir -p /usr/local/mysql/
RUN chown -R mysql:mysql /usr/local/mysql/
#配置mysql环境变量
ENV PATH /usr/local/mysql/bin:$PATH
#初始化数据库
RUN /usr/local/mysql/scripts/mysql_install_db \
--user=mysql \
--ldata=/var/lib/mysql \
--basedir=/usr/local/mysql \
--datadir=/home/mysql
#暴露服务端口
EXPOSE 3306
#启动
RUN cp support-files/mysql.server /etc/init.d/mysqld
RUN chmod 755 /etc/init.d/mysqld
RUN sed -i '/^basedir=/s#basedir=#basedir=/usr/local/mysql#' /etc/init.d/mysqld  
RUN sed -i '/^datadir=/s#datadir=#basedir=/home/mysql#' /etc/init.d/mysqld
#建立软链接
RUN ln -s /var/lib/mysql/mysql.sock /home/mysql/mysql.sock
ENTRYPOINT ["/usr/local/mysql/bin/mysqld_safe"]

容器运行测试

#容器创建
docker build -t centos7:mysql .
#容器运行
docker run -d -P centos7:mysql --privileged
#进入容器
docker exec -it 557a1908cee1 bash
#登录MySQL
mysql -u root -p 
#grant授权
grant all privileges on *.* to 'root'@'%' identified by '123456';    
grant all privileges on *.* to 'root'@'localhost' identified by '123456';   
#刷新权限
flush privileges; 
  • 在host上下载mariadb测试:
mysql -h 容器IP -P 端口号 -u 用户 -p 密码

在这里插入图片描述

报错总结

  • 如果mysql容器启动容易闪退:
  • 虚拟内存不够,无法启动mysql
  • 解决方法:
  • 启动swap
dd if=/dev/zero of=/swapfile bs=1M count=1024
mkswap /swapfile
swapon /swapfile
  • 重启容器
docker start 557a1908cee1
  • 1
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
要使用Dockerfile构建CentOS 7镜像,可以按照以下步骤进行操作: 1. 首先,确保已经在系统上安装了Docker环境。可以使用以下命令来检查和安装Docker服务: - 检查CentOS 7内核版本和存储驱动 - 卸载之前安装的Docker服务(如果有) - 安装Docker依赖包 - 安装最新版本的Docker核心服务 2. 创建一个名为Dockerfile的文件,用于定义构建镜像的指令和配置。Dockerfile是一个文本文件,可以使用编辑器创建。在Dockerfile中,可以使用一些常用的命令来定义构建过程,比如FROM、RUN、COPY等。具体的Dockerfile格式可以参考官方文档。 3. 在Dockerfile所在的目录下,执行以下命令来构建镜像: - 使用docker build命令,指定镜像名称和Dockerfile所在的目录路径。例如:`docker build -t mycentosimage .` 这将在当前目录下使用Dockerfile构建一个名为mycentosimage的镜像。 4. 构建完成后,可以使用docker images命令来查看已构建的镜像列表。例如:`docker images` 通过以上步骤,你就可以使用Dockerfile构建CentOS 7镜像了。请注意,在构建过程中要确保Dockerfile的语法正确,并按照需求进行配置和安装所需的软件包。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [CentoOS7系统下使用DockerFile构建镜像](https://blog.csdn.net/smxzsp/article/details/110537368)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值