Docker学习过程 (10-实战-MySQL)

前言:在关系型数据库中,MySQL 是当下最流行的开源数据库软件。

准备

MySQL源配置

下载MySQL源的deb包,因为包会更新,所有可能会更新地址。deb 包在MySQL源的页面的最下方,如下图所示:
在这里插入图片描述
下载 deb 包,放在 Dockerfile 所在的文件夹。
安装 MySQL 的操作系统用 debian:stretch ,为了加快软件更新,换用国内163源,源在 Dockerfile 文件所在文件夹下面的 sources.list 文件,通过 ADD 加入容器中。sources.list 内容如下:

deb http://mirrors.163.com/debian/ stretch main non-free contrib
deb http://mirrors.163.com/debian/ stretch-updates main non-free contrib
deb http://mirrors.163.com/debian/ stretch-backports main non-free contrib
deb-src http://mirrors.163.com/debian/ stretch main non-free contrib
deb-src http://mirrors.163.com/debian/ stretch-updates main non-free contrib
deb-src http://mirrors.163.com/debian/ stretch-backports main non-free contrib
deb http://mirrors.163.com/debian-security/ stretch/updates main non-free contrib
deb-src http://mirrors.163.com/debian-security/ stretch/updates main non-free contrib
Dockerfile 内容
# MySQL
# VERSION 0.0.1

# 基础镜像
FROM debian:stretch
# 维护者信息
MAINTAINER Geng Li

ADD sources.list /etc/apt/sources.list
ADD mysql-apt-config_0.8.11-1_all.deb /
# 增加安装源
RUN apt-get update \
    && apt-get -y install wget gnupg lsb-release \
    && dpkg -i /mysql-apt-config_0.8.11-1_all.deb  \
    && rm /mysql-apt-config_0.8.11-1_all.deb \
    && apt-get update \
    && apt-get install -y --no-install-recommends mysql-server

# 增加运行用户
RUN userdel mysql && groupadd -rf mysql &&  useradd -r -g  mysql mysql \
    && { \
        echo mysql-community-server mysql-community-server/root-pass password ''; \
        echo mysql-community-server mysql-community-server/re-root-pass password ''; \
    } | debconf-set-selections \
    && apt-get install -y mysql-server \
    && mkdir -p /var/lib/mysql /var/run/mysqld \
    && chown -R mysql:mysql /var/lib/mysql /var/run/mysqld \
    && chmod 777 /var/run/mysqld

# 以数据卷的形式挂载MySQL存储目录
VOLUME /var/lib/mysql

# 暴露 MySQL 默认端口
EXPOSE 3306

# 启动MySQL
CMD ["mysqld", "--user", "mysql"]

之前报错E: gnupg, gnupg2 and gnupg1 do not seem to be installed, but one of them is required for this operation… 加入安装 wget, gnupg 就好了,具体见 Dockerfile 文件。

构建镜像
sudo docker build -t gengli/mysql:0.0.1 ./Mysql

gengli/mysql:0.0.1 换成你想要的镜像名字, ./Mysql 换成你的 Dockerfile 文件所在的实际目录。
因为我之前构建过一次镜像,利用之前的一些信息,下图的构建过程就很快,几乎只要几秒钟。如果是第一次构建,需要的几分钟甚至更多。

展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

测试
sudo docker run -d --name mysql -p 3306:3306 gengli/mysql:0.0.1
sudo docker run -it --rm --name mysql-client --link mysql gengli/mysql:0.0.1 /bin/bash

不知为什么报错,书上是可以的。具体的以后再来看。根据网上其他一些资料,感觉不是容器的安装过程中的问题,可能是容器间的网络通信等问题造成的。成功的话会出现: Welcome to the MySQL monitor. 等内容。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/gengli2017/article/details/86510178