Docker快速创建MySQL实例

很多同学如果不会安装MySQL或者懒得安装MySQL,可以使用一下命令快速运行一个MySQL5.7实例,当然前提是你要有docker环境…

一.安装docker

1.查看内核,版本必须高于3.10

uname -r

2.移除旧的版本

sudo yum remove docker*

3.yum 包更新到最新

sudo yum update

4.安装需要的软件包, yum-util 提供yum-confifig-manager功能,另外两个是devicemapper驱动依赖的

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

5.设置yum源为阿里云

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker- ce.repo

6.安装docker

sudo yum -y install docker-ce

7.安装后查看docker版本

docker -v

8.启动 Docker 后台服务

sudo systemctl start docker

二、docker安装MySQL

安装前,先设置阿里云镜像加速,,强烈推荐....否则那个速度实在感人

注册一个阿里云账号,进入阿里云镜像加速模块

1.查找MySQL的可用镜像

docker search mysql

或者去下面网址里查找版本

mysql hubdocker下载地址

获取版本号


安装5.7.31版本的mysql

mysql新建文件夹和配置文件

创建本地文件夹

mkdir -p $PWD/mysql57/conf && mkdir -p $PWD/mysql/data

或者

mkdir -p $PWD/mysql57/{conf,data,log} #推荐

新建配置文件

vim $PWD/mysql57/conf/my.cnf

内容如下:

[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
lower_case_table_names=1 #实现mysql不区分大小(开发需求,建议开启)
# By default we only accept connections from localhost
#bind-address = 127.0.0.1
# Disabling symbolic-links is recommended to prevent assorted security risks
default-time_zone = '+8:00' # 更改字符集 如果想Mysql在后续的操作中文不出现乱码,则需要修改配置文件内容
symbolic-links=0
character-set-server=utf8mb4
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4

创建 MySQL 容器并启动

docker run --name mysql57 \
--restart always \
--privileged=true \
-p 3307:3306 \
-v $PWD/mysql57/log:/var/log/mysql \
-v $PWD/mysql57/conf/my.cnf:/etc/mysql/my.cnf \
-v $PWD/mysql57/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD="123456" \
-e MYSQL_USER="haima" \
-e MYSQL_PASSWORD="123456" \
-d mysql:5.7.31

解释说明

--name:为容器指定一个名字
–restart always:开机启动
–privileged=true:提升容器内为root权限
-v 宿主机里的log:容器里log : 挂载日志文件夹
-v 宿主机里的my.cnf:容器里的配置文件的my.cnf:挂载配置文件
-v 宿主机里的数据目录data:容器里的数据目录data:挂载数据文件夹
-e MYSQL_USER=”haima”:添加用户
-e MYSQL_PASSWORD=”123456”:设置用户的密码为123456
-e MYSQL_ROOT_PASSWORD=”123456”:设置root账号的密码为123456
-d:后台运行容器,并返回容器 id

进入Docker容器内

docker exec -it mysql-service5.7 /bin/bash

登录mysql

mysql -uroot -p123456

查看mysql字符集命令

show variables like '%char%';

mysql> show variables like '%char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

表示系统使用的时区

mysql> show VARIABLES like '%time_zone%'; system_time_zone :
+------------------+--------+
| Variable_name | Value |
+------------------+--------+
| system_time_zone | UTC |
| time_zone | +08:00 |
+------------------+--------+

查看确定Docker内 MySQL 文件相关路径

查找Docker内,MySQL配置文件my.cnf的位置

mysql --help | grep my.cnf

退出mysql

exit

操作容器

docker restart mysql-service5.7
docker stop mysql-service5.7
docker start mysql-service5.7
docker rm mysql-service5.7 #容器停止时才能删除

navicat 连接mysql

连接方式一:

连接宿主机的公网IP

启动navicat, 连接宿主机的公网IP ,指定端口为配置的33306,,账户root,密码123456

这里的宿主机ip起始就是服务器(或者是虚拟机)的ip

至此已经mysql已经安装成功了,mysql的数据和配置文件已经挂载到宿主机的/root/docker/mysql目录里了,

即使删除容器数据也不会丢了,

下次再重新挂载到宿主机的/root/docker/mysql目录里了,数据就又回来了.

连接方式二:

ssh连接

查看docker容器的ip

docker inspect 容器ID


安装mysql:8

下面尝试同时启动两个mysql8的服务

启动第一个服务

mkdir -p $PWD/mysql8one/{conf,data,log}
vim $PWD/mysql8one/conf/my.cnf

my.cnf的内容

[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
secure_file_priv=/var/lib/mysql
default-time_zone = '+8:00'
# Custom config should go here
!includedir /etc/mysql/conf.d/ # 更改字符集 如果想Mysql在后续的操作中中文不出现乱码,则需要修改配置文件内容 character-set-server=utf8mb4
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4

启动服务

docker run \
--name mysql8one \
--restart=always \
--privileged=true \
-v $PWD/mysql8one/conf/my.cnf:/etc/mysql/my.cnf \
-v $PWD/mysql8one/log:/var/log/mysql \
-v $PWD/mysql8one/data/mysql:/var/lib/mysql \
-p 13306:3306 \
-e MYSQL_USER="haima" \
-e MYSQL_PASSWORD="123456" \
-e MYSQL_ROOT_PASSWORD="123456" -d mysql

如果要外网连接,需要进入mysql里开权限

docker exec -it mysql bash
mysql -uroot -p ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
FLUSH PRIVILEGES;

Navicat连接



到此已经ok了


启动第二个服务

mkdir -p $PWD/mysql8two/{conf,data,log}
vim $PWD/mysql8two/conf/my.cnf

my.cnf里的内容和第一个服务的一样

启动服务

docker run \
--name mysql8two \
--restart=always \
--privileged=true \
-v $PWD/mysql8two/conf/my.cnf:/etc/mysql/my.cnf \
-v $PWD/mysql8two/log:/var/log/mysql \
-v $PWD/mysql8two/data/mysql:/var/lib/mysql \
-p 13309:3306 \
-e MYSQL_USER="haima" \
-e MYSQL_PASSWORD="123456" \
-e MYSQL_ROOT_PASSWORD="123456" -d mysql

三.设置开机自动启动容器

在运行docker容器时可以加如下参数来保证每次docker服务重启后容器也自动重启:

docker run --restart=always CONTAINER ID

如果已经启动了,没有设置开机启动,则可以使用如下命令:

docker update --restart=always CONTAINER ID

参考文章

参考文章

docker安装Mysql挂载数据卷 实现容器配置本地化的更多相关文章

  1. docker安装mysql挂载外部配置和数据目录

    从docker hub上可以找到mysql外挂配置和数据目录的一些文档说明 https://hub.docker.com/_/mysql 从该文档中可以了解到,mysql的默认配置为/etc/mysq ...

  2. 35.Docker安装Mysql挂载Host Volume

    连个文件系统有块区域Area,我们要做的是把两个Area做文件映射 jesse腾讯云上有个linux的环境,版本比较老了 简书的地址: https://www.jianshu.com/p/b3bf64 ...

  3. docker安装mysql挂载宿主本地目录资源后无法启动的问题

    可能是权限问题,添加--privileged=true参数: docker run -p : --name zsmysql -v $PWD/data:/var/lib/mysql -v $PWD/lo ...

  4. Docker 数据卷与容器互联

    Docker是基于Go语言实现的开源容器项目,Docker让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制, ...

  5. Docker 使用指南 (四)—— 数据卷的使用

    一.数据卷的使用 有时候需要使用数据库,但是又希望它的数据能保存在本地,Docker中提供了数据卷可以供你方便的操作数据.数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用 ...

  6. Docker系列教程05-Docker数据卷(Data Volume)学习

    引言 在Docker中,容器的数据读写默认发生在容器的存储层,当容器被删除时其上的数据将会丢失.要想实现数据的持久化,需要将数据从宿主机挂载到容器中.目前Docker提供了三种方式将数据从宿主机挂载到 ...

  7. Docker安装MySQL 8.0并挂载数据及配置文件

    安装部署环境 Ubuntu 18.04.3 LTS Docker 19.03.2 MySQL latest(8.0.17) 下载镜像 # docker从仓库中拉取最新版的mysql镜像,如果没加标签的 ...

  8. 安装docker及使用docker安装其他软件(手动挂载数据卷)

    中秋明月,豪门有,贫家也有,极慰人心 Linux安装docker 可以参考官方的安装文档 centos安装docker: https://docs.docker.com/engine/install/ ...

  9. 『现学现忘』Docker基础 — 32、通过DockerFile的方式挂载数据卷

    目录 1.简单了解一下DockerFile 2.通过DockerFile的方式挂载数据卷 (1)创建DockerFile文件 (2)编辑Dockerfile文件 (3)构建Dokcer镜像 (4)启动 ...

  10. 基于Ceph分布式集群实现docker跨主机共享数据卷

    上篇文章介绍了如何使用docker部署Ceph分布式存储集群,本篇在此基础之上,介绍如何基于Ceph分布式存储集群实现docker跨主机共享数据卷. 1.环境准备 在原来的环境基础之上,新增一台cen ...

随机推荐

  1. Kingbase ES 游标跨事务及其案例一则

    前言 本文介绍游标在PLSQL和SQL层跨事务使用案例,及其案例一则. 本文验证版本: db0=# select version(); db0-# / version ---------------- ...

  2. 如何安装和使用Docker

    本文深入解析Docker,一种革命性的容器化技术,从其基本概念.架构和组件,到安装.配置和基本命令操作.文章探讨了Docker在虚拟化.一致性环境搭建及微服务架构中的关键作用,以及其在云计算领域的深远 ...

  3. 【转载】Vue路由 hash与history 的区别

    [转载]Vue路由 hash与history 的区别 两种路由模式原因 对于 Vue 这类渐进式前端开发框架, 为了构建 SPA(单页面应用), 需要引入前端路由系统, 这也就是 Vue-Router ...

  4. 测试开发之前端篇-Web前端简介

    自从九十年代初,人类创造出网页和浏览器后,Web取得了长足的发展,如今越来越多的企业级应用也选择使用Web技术来构建.前面给大家介绍网络协议时讲到,您在阅读这篇文章时,浏览器是通过HTTP/HTTPS ...

  5. win10/11 暂停更新

    1. win+R 输入regeidt 进入注册表编辑器 2.在"计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Sett ...

  6. #线段树,离散#nssl 1476 联

    分析 由于下标过大,考虑离散,不仅仅是区间左右端点 假设只有一个区间从1到\(x\),那么修改后答案应该是\(x+1\) 所以说还要记录右端点+1的位置,你以为这就能A了吗 为了避免标记被覆盖,无论是 ...

  7. #状压dp#JZOJ 3853 帮助Bsny

    题目 一共有\(n\)本书,混乱值是连续相同高度书本的段数. 可以取出\(k\)本书随意放回,问最小混乱值,高度\([25\sim 32]\) 分析 设\(f[i][j][k][mask]\)表示前\ ...

  8. OpenHarmony 3.1 Release版本关键特性解析——OpenHarmony新音视频引擎——HiStreamer

    OpenAtom OpenHarmony(以下简称"OpenHarmony")是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的开源项目,目标是面向全场景 ...

  9. 安装pnpm 和报错解决,亲测可行

    安装pnpm 和报错解决,亲测可行 pnpm 是一款磁盘空间高效的软件包管理器. 当使用 npm 或 Yarn 时,如果你有 1000个项目,并且所有项目都有一个相同的依赖包,那么, 你在硬盘上就需要 ...

  10. 如何在HarmonyOS对数据库进行备份,恢复与加密

    数据库备份与恢复 场景介绍 当应用在处理一项重要的操作,显然是不能被打断的.例如:写入多个表关联的事务.此时,每个表的写入都是单独的,但是表与表之间的事务关联性不能被分割. 如果操作的过程中出现问题, ...