一、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容器镜像教程完成。