一、CentOS 7.x 安装Docker-ce社区版本
https://www.osyunwei.com/archives/11592.html
二、准备安装软件包
cd /usr/local/src #建议先把需要安装的软件包下载到本地目录
1、下载mysql
https://cdn.mysql.com/archives/mysql-5.5/mysql-5.5.62.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
dfe6db7c2e06 centos:7.9.2009 "/bin/bash" 10 seconds ago Up 8 seconds centos7.9
docker exec -it dfe6db7c2e06 /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、CMD或者ENTERPOINT操作指定目录
WORKDIR /usr/local/src
#设置时区
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 \
" \
&& yum install -y ${buildDeps}
#设置变量
ENV mysql=mysql-5.5.62 \
cmake=cmake-3.21.1
#将本地的一个文件或目录拷贝到容器的某个目录里
COPY $mysql.tar.gz \
$cmake.tar.gz ./
#解压软件包
RUN ls *.tar.gz | xargs -n1 tar xzvf
#安装cmake
WORKDIR /usr/local/src/$cmake
RUN ./configure && make && make install
#编译安装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
WORKDIR /usr/local/src/$mysql
RUN cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/usr/local/mysql/etc && make && make install
#配置mysql
RUN rm -rf /etc/my.cnf \
&& mkdir -p /usr/local/mysql/etc/ \
&& cp /usr/local/mysql/support-files/my-huge.cnf /usr/local/mysql/etc/my.cnf \
&& /usr/local/mysql/scripts/mysql_install_db --user=mysql --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
#清理安装包
RUN rm -rf /usr/local/src/* && yum clean all
#设置mysql运行端口
EXPOSE 3306
#设置mysql前台方式运行
CMD ["/usr/local/mysql/bin/mysqld_safe"]
:wq! #保存退出
3、构建容器
docker build -t osyunwei/mysql:5.5.62 /usr/local/src
或者
docker build -t osyunwei/mysql:5.5.62 .
4、运行容器
docker image ls #查看docker镜像
docker run -itd --name mysql osyunwei/mysql:5.5.62 #运行容器
docker ps #查看容器
[root@master01 src]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0c7ea0f51d53 osyunwei/mysql:5.5.62 "/usr/local/mysql/bi…" 9 seconds ago Up 6 seconds 3306/tcp mysql
docker exec -it 0c7ea0f51d53 /bin/bash #进入容器
exit #退出容器
5、上传mysql容器镜像到阿里云容器仓库
docker image ls #查看镜像id
[root@master01 src]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
osyunwei/mysql 5.5.62 4b9e66be9fe0 6 days ago 2.03GB
5.1重命名镜像标签
docker tag 4b9e66be9fe0 registry.cn-hangzhou.aliyuncs.com/osyunwei/mysql:5.5.62
#registry.cn-hangzhou.aliyuncs.com是阿里云容器仓库地址
#osyunwei是自己创建的命名空间
#mysql是自己创建的仓库名称
#:5.5.62是自定义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.5.62
5.4拉取阿里云容器镜像
docker pull registry.cn-hangzhou.aliyuncs.com/osyunwei/mysql:5.5.62
至此,Docker下使用Dockerfile基于centos基础镜像构建mysql-5.5容器镜像教程完成。