技术交流QQ群:①185473046   ②190706903   ③203744115   网站地图
登录

下次自动登录
现在的位置: 首页Linux>正文
Docker下使用Dockerfile基于centos基础镜像构建mysql-5.7容器镜像
2021年09月03日 Linux 暂无评论 ⁄ 被围观 1,320次+

一、CentOS 7.x 安装Docker-ce社区版本

https://www.osyunwei.com/archives/11592.html

二、准备安装软件包

cd /usr/local/src #建议先把需要安装的软件包下载到本地目录

1、下载mysql(自带boost版本)

https://cdn.mysql.com/archives/mysql-5.7/mysql-boost-5.7.34.tar.gz -O mysql-5.7.34.tar.gz

2、下载cmake(编译工具)

https://cmake.org/files/v3.21/cmake-3.21.1.tar.gz

三、构建mysql容器镜像

1、从docker hub拉取官方基础镜像

#我们用centos系统进行构建

https://hub.docker.com/_/centos?tab=tags&page=1&ordering=last_updated

选择centos:7.9.2009版本

docker pull centos:7.9.2009 #拉取系统镜像

docker image ls #查看docker镜像

docker run -itd --name centos7.9 centos:7.9.2009 #运行容器

docker ps #查看容器

[root@master01 src]# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

5ec501bf0524 centos:7.9.2009 "/bin/bash" 7 seconds ago Up 6 seconds centos7.9

docker exec -it 5ec501bf0524 /bin/bash #进入容器

exit #退出容器

2、编写Dockerfile构建文件

cd /usr/local/src #进入目录

vi /usr/local/src/dockerfile #dockerfile文件必须和上一步下载的软件包在同一目录

#基于这个镜像进行操作

FROM centos:7.9.2009

#作者和邮箱

MAINTAINER osyunwei osyunwei@osyunwei.com

#设置时区

RUN \cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone && echo 'Zone=Asia/Shanghai' >/etc/sysconfig/clock

#安装依赖包

RUN set -xe \

&& buildDeps=" \

gcc \

gcc-c++ \

make \

bison \

ncurses \

ncurses-devel \

openssl \

openssl-devel \

perl-Data-Dumper \

perl \

perl-devel \

" \

&& yum install -y ${buildDeps} \

&& yum clean all

#设置变量

ENV mysql=mysql-5.7.34 \

cmake=cmake-3.21.1

#安装cmake

#指定容器里面的路径,为后面的RUN、CMD或者ENTERPOINT操作指定目录

WORKDIR /usr/local/src

COPY $cmake.tar.gz ./

RUN tar zxvf $cmake.tar.gz

WORKDIR /usr/local/src/$cmake

RUN ./configure && make && make install \

&& rm -rf /usr/local/src/$cmake

#编译安装mysql

#创建mysql运行用户和组

RUN groupadd mysql && useradd -g mysql mysql -s /bin/false \

#创建mysql安装目录

&& mkdir -p /usr/local/mysql \

#创建mysql数据库存放目录及权限

&& mkdir -p /data/mysql \

&& chown -R mysql:mysql /data/mysql

#安装mysql

#指定容器里面的路径,为后面的RUN、CMD或者ENTERPOINT操作指定目录

WORKDIR /usr/local/src

COPY $mysql.tar.gz ./

RUN tar zxvf $mysql.tar.gz

WORKDIR /usr/local/src/$mysql

RUN cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/usr/local/mysql/etc -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DMYSQL_USER=mysql -DWITH_INNOBASE_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DENABLED_LOCAL_INFILE=ON -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 -DWITH_EMBEDDED_SERVER=OFF -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/src/$mysql/boost && make && make install \

&& rm -rf /usr/local/src/$mysql

#配置mysql

RUN rm -rf /etc/my.cnf \

&& mkdir -p /usr/local/mysql/etc/ \

&& /usr/local/mysql/bin/mysqld --user=mysql --initialize-insecure --basedir=/usr/local/mysql --datadir=/data/mysql \

&& ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql \

&& ln -s /usr/local/mysql/include/mysql /usr/include/mysql \

&& mkdir /var/lib/mysql \

&& ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock \

&& echo 'export PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile \

&& source /etc/profile \

&& echo 'source /etc/profile'>> /root/.bashrc

#切换到根目录

WORKDIR /root

#设置mysql运行端口

EXPOSE 3306

#设置mysql前台方式运行

CMD ["/usr/local/mysql/bin/mysqld_safe"]

:wq! #保存退出

3、构建容器

docker build --no-cache -t osyunwei/mysql:5.7.34 /usr/local/src

或者

docker build -t osyunwei/mysql:5.7.34 .

4、运行容器

docker image ls #查看docker镜像

docker run -itd --name mysql osyunwei/mysql:5.7.34 #运行容器

docker ps #查看容器

[root@master01 src]# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

6ee23831ebe1 osyunwei/mysql:5.7.34 "/usr/local/mysql/bi…" 8 seconds ago Up 6 seconds 3306/tcp mysql

docker exec -it 6ee23831ebe1 /bin/bash #进入容器

exit #退出容器

5、上传mysql容器镜像到阿里云容器仓库

docker image ls #查看镜像id

[root@master01 src]# docker image ls

REPOSITORY TAG IMAGE ID CREATED SIZE

osyunwei/mysql 5.7.34 4447d429dc4e 48 minutes ago 1.86GB

5.1重命名镜像标签

docker tag a6b08fecfcc6 registry.cn-hangzhou.aliyuncs.com/osyunwei/mysql:5.7.34

#registry.cn-hangzhou.aliyuncs.com是阿里云容器仓库地址

#osyunwei是自己创建的命名空间

#mysql是自己创建的仓库名称

#:5.7.34是自定义php-fpm镜像的版本号

5.2登录阿里云仓库

docker login --username=你的阿里云登录账号 registry.cn-hangzhou.aliyuncs.com

[root@master01 src]# docker login --username=你的阿里云登录账号 registry.cn-hangzhou.aliyuncs.com

Password:刚才设置的固定密码

WARNING! Your password will be stored unencrypted in /root/.docker/config.json.

Configure a credential helper to remove this warning. See

https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

[root@master01 src]#

5.3上传镜像到阿里云仓库

docker push registry.cn-hangzhou.aliyuncs.com/osyunwei/mysql:5.7.34

5.4拉取阿里云容器镜像

docker pull registry.cn-hangzhou.aliyuncs.com/osyunwei/mysql:5.7.34

至此,Docker下使用Dockerfile基于centos基础镜像构建mysql-5.7容器镜像教程完成。

     

  系统运维技术交流QQ群:①185473046 系统运维技术交流□Ⅰ ②190706903 系统运维技术交流™Ⅱ ③203744115 系统运维技术交流™Ⅲ

给我留言

您必须 [ 登录 ] 才能发表留言!



Copyright© 2011-2021 系统运维 All rights reserved
版权声明:本站所有文章均为作者原创内容,如需转载,请注明出处及原文链接