Docker系列(二十二)——Docker实例四Docker安装MySQL实例

                                   《 Docker实例三Docker安装MySQL实例 》

前言

在前面一篇文章种,完成了 《 Docker安装Tomcat实例 》,本篇将继续镜像安装教程,并完成Docker安装MySQL实例。

 

Docker实例三Docker安装MySQL实例

第一种:使用 docker pull 镜像名 拉取镜像

1、查询星级数大于30的MySQL镜像(注:星级数越高,越受欢迎的,默认在 Docker Hub 查询的),

输入命令 “ docker search -s 300 mysql” ,查询内容如下:

[root@localhost ~]# docker search -s 300 mysql
Flag --stars has been deprecated, use --filter=stars=3 instead
NAME                 DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
mysql                MySQL is a widely used, open-source relation…   7474                [OK]                
mariadb              MariaDB is a community-developed fork of MyS…   2410                [OK]                
mysql/mysql-server   Optimized MySQL Server Docker images. Create…   557                                     [OK]

 

2、拉取第一个镜像,也是官方版的镜像,输入命令 “ docker pull mysql”,默认拉取的为最新版本 latest ,内容如下:

[root@localhost ~]# docker pull mysql
Using default tag: latest
latest: Pulling from library/mysql
f17d81b4b692: Already exists 
c691115e6ae9: Pull complete 
41544cb19235: Pull complete 
254d04f5f66d: Pull complete 
4fe240edfdc9: Pull complete 
0cd4fcc94b67: Pull complete 
8df36ec4b34a: Pull complete 
720bf9851f6a: Pull complete 
e933e0a4fddf: Pull complete 
9ffdbf5f677f: Pull complete 
a403e1df0389: Pull complete 
4669c5f285a6: Pull complete 
Digest: sha256:811483efcd38de17d93193b4b4bc4ba290a931215c4c8512cbff624e5967a7dd
Status: Downloaded newer image for mysql:latest

 

3、拉取完成后,输入命令 “ docker images mysql ”,可以在本地镜像列表里查到REPOSITORY为mysql的镜像,内容如下:

[root@localhost ~]# docker images mysql
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mysql               latest              2dd01afbe8df        5 weeks ago         485MB

 

第二种:通过 Dockerfile 构建Docker镜像

1、新建 MySQL 的 Dockerfile 文件存放目录,输入命令 “ mkdir -p /opt/dockerfile/mysql ” ,并进入到目录下。

[root@localhost ~]# mkdir -p /opt/dockerfile/mysql
[root@localhost ~]# cd /opt/dockerfile/mysql/
[root@localhost mysql]# 

2、创建dockerfile文件,输入命令 “ vi mysqldockerfile ” ,并键入如下内容:

Ubuntu 版本:

# base 基础镜像
FROM debian:stretch-slim

# 首先添加我们的用户和组,以确保一致地分配他们的id
RUN groupadd -r mysql && useradd -r -g mysql mysql

RUN apt-get update && apt-get install -y --no-install-recommends gnupg dirmngr && rm -rf /var/lib/apt/lists/*

# add gosu for easy step-down from root
ENV GOSU_VERSION 1.7
RUN set -x \
	&& apt-get update && apt-get install -y --no-install-recommends ca-certificates wget && rm -rf /var/lib/apt/lists/* \
	&& wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture)" \
	&& wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture).asc" \
	&& export GNUPGHOME="$(mktemp -d)" \
	&& gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \
	&& gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu \
	&& gpgconf --kill all \
	&& rm -rf "$GNUPGHOME" /usr/local/bin/gosu.asc \
	&& chmod +x /usr/local/bin/gosu \
	&& gosu nobody true \
	&& apt-get purge -y --auto-remove ca-certificates wget

RUN mkdir /docker-entrypoint-initdb.d

RUN apt-get update && apt-get install -y --no-install-recommends \
# for MYSQL_RANDOM_ROOT_PASSWORD
		pwgen \
# for mysql_ssl_rsa_setup
		openssl \
# FATAL ERROR: please install the following Perl modules before executing /usr/local/mysql/scripts/mysql_install_db:
# File::Basename
# File::Copy
# Sys::Hostname
# Data::Dumper
		perl \
	&& rm -rf /var/lib/apt/lists/*

RUN set -ex; \
# gpg: key 5072E1F5: public key "MySQL Release Engineering <mysql-build@oss.oracle.com>" imported
	key='A4A9406876FCBD3C456770C88C718D3B5072E1F5'; \
	export GNUPGHOME="$(mktemp -d)"; \
	gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \
	gpg --batch --export "$key" > /etc/apt/trusted.gpg.d/mysql.gpg; \
	gpgconf --kill all; \
	rm -rf "$GNUPGHOME"; \
	apt-key list > /dev/null

ENV MYSQL_MAJOR 8.0
ENV MYSQL_VERSION 8.0.13-1debian9

RUN echo "deb http://repo.mysql.com/apt/debian/ stretch mysql-${MYSQL_MAJOR}" > /etc/apt/sources.list.d/mysql.list

# the "/var/lib/mysql" stuff here is because the mysql-server postinst doesn't have an explicit way to disable the mysql_install_db codepath besides having a database already "configured" (ie, stuff in /var/lib/mysql/mysql)
# 设置 debconf 键,使 APT 更安静
RUN { \
		echo mysql-community-server mysql-community-server/data-dir select ''; \
		echo mysql-community-server mysql-community-server/root-pass password ''; \
		echo mysql-community-server mysql-community-server/re-root-pass password ''; \
		echo mysql-community-server mysql-community-server/remove-test-db select false; \
	} | debconf-set-selections \
	&& apt-get update && apt-get install -y mysql-community-client="${MYSQL_VERSION}" mysql-community-server-core="${MYSQL_VERSION}" && rm -rf /var/lib/apt/lists/* \
	&& rm -rf /var/lib/mysql && mkdir -p /var/lib/mysql /var/run/mysqld \
	&& chown -R mysql:mysql /var/lib/mysql /var/run/mysqld \
# 确保 /var/run/mysqld(用于 socket 和 lock 文件)是可写的,不管 mysqld 实例在运行时的UID是什么
	&& chmod 777 /var/run/mysqld

VOLUME /var/lib/mysql
# 相关配置文件
COPY config/ /etc/mysql/
COPY docker-entrypoint.sh /usr/local/bin/
RUN ln -s usr/local/bin/docker-entrypoint.sh /entrypoint.sh # backwards compat
ENTRYPOINT ["docker-entrypoint.sh"]

# 暴露 mysql 端口
EXPOSE 3306 33060
CMD ["mysqld"]

 

3、通过 Dockerfile 的 docker build 构建一个 MySQL 镜像,这儿可以自定义镜像名,输入命令 “ docker build -f /opt/dockerfile/mysql/mysqldockerfile -t huazai/db/mysql:v1.0 . ” 进行构建,部分构建内容如下:

 

构建成功后,输入命令 “ docker images huazai/db/mysql  ” ,可以在本地的镜像列表种查找到方才构建 tomcat 镜像,内容如下:

 

 

 

 


 好了,关于 Docker系列(二十二)——Docker实例四Docker安装MySQL实例 就写到这儿了,如果还有什么疑问或遇到什么问题欢迎扫码提问,也可以给我留言哦,我会一一详细的解答的。 
歇后语:“ 共同学习,共同进步 ”,也希望大家多多关注CSND的IT社区。


作       者:华    仔
联系作者:who.seek.me@java98k.vip
来        源:CSDN (Chinese Software Developer Network)
原        文:https://blog.csdn.net/Hello_World_QWP/article/details/84764231
版权声明:本文为博主原创文章,请在转载时务必注明博文出处!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值