docker mysql 版本_把MySQL放进docker总共分几步

news/2024/7/8 7:12:12

aa39a024bf625fd137cd5c2624f27464.png

看完帮忙关注一下公众号 谢谢咯。

把MySQL放进Docker,总共需要几步?本次就通过社区版容器安装2个mysql实例,看一下部署有多简单。

1、 安装docker

操作系统我使用的Centos7 x64系统,而Docker 目前看仅CentOS 7 及以上版本。本次采用Docker 仓库进行安装 ,具体步骤如下:

1.1 设置仓库

因本机首次安装 Docker,所以需要先设置 Docker 仓库,以后的安装可以直接从仓库安装。

 /* 安装所需的软件包 */ yum install -y yum-utils    
device-mapper-persistent-data    
lvm2

使用以下命令来设置稳定的仓库

yum-config-manager  > --add-repo  > https://download.docker.com/linux/centos/docker-ce.repo

d8104553446e9764d8f78f851fcacb5a.png

1.2 安装Docker Engine-Community

安装最新版本的 Docker Engine-Community 和 containerd

 yum install docker-ce docker-ce-cli containerd.io

这一步有的包下载可能比较慢,要耐心等待,如果失败再重新执行几遍。

如果有同学配置了多个 Docker 仓库,而且在 yum install 或 yum update 命令中未指定版本时,则会安装或更新最新版本的包,如果对稳定性 或版本有要求,则安装时一定要指定特定版本。

1.3 启动docker

经过上述安装后,启动docker服务即可

systemctl start docker

1.4 测试docker 部署是否成功

可以运行经典的hello-world 来测试

4f3530d85fb2ae4d8788f548b01da8b1.png

可见docker已部署成功并可以正常运行。

2、 部署MySQL

2.1 查看可用的mysql镜像

[root@c7_2 local]# docker search mysql 

884bd5a41b1996717ad1d0edd05f8457.png

2.2 部署最新版本mysql

拉取最新版本mysql,不指定版本默认拉取最新版

[root@c7_2 local]# docker pull mysql 

e738d11b8efa95900f558eec22d74403.png

注: 拉取镜像的时候容易出现如下超时错误

Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled (Client.Timeout exceeded while awaiting headers)

建议修改国内镜像地址,例如修改为网易或阿里云的镜像地址(我采用的是个人阿里镜像的方式, 下载速度很理想,基本一分钟内下载完毕)

修改源的方法:

vim /etc/docker/daemon.json
/*  添加如下内容 */
{
  "registry-mirrors": ["http://hub-mirror.c.163.com","https://registry.docker-cn.com"]
}

使用阿里云镜像需要自己登录到阿里云,配置后复制自己的地址再使用,需要的小伙伴可以联系我获取指引。

2.3 查看已下载的镜像

[root@c7_2 containers]# docker image ls # 或使用 docker images 查看

a0d13ab679be43a6006109ef1fcb8c91.png

2.4 运行mysql容器

[root@c7_2 local]# docker run -di --name=mysql  -p 3306:3306 -e MYSQL_ROOT_PASSWORD=Admin@123  mysql 9f6668b5d0292b30308cfc5c6a6b88a34c4d62d9e5c70dff9bfce9f090117968

其中主要参数说明如下:

  • --name 后面配置容器名
  • -p代表端口映射, 格式为 宿主机映射端口:容器运行端口
  • -e代表添加环境变量 MYSQL_ROOT_PASSWORD 是root用户的登陆密码
  • 最后的mysql代码容器镜像名

启动成功后

2.5 进入mysql容器

指定进入mysql容器中

[root@c7_2 local]# docker exec -it mysql  /bin/bash 
root@9f6668b5d029:/#

在容器内登录mysql

root@9f6668b5d029:/# mysql -u root -p'Admin@123'

结果见如下截图,可以看到部署的是最新的MySQL8.0.20版本

5868206e00b4c39ca6b754ac17548c85.png

注: MySQL8.0 用户的加密组件做了变更,低版本客户端登录会报错。处理的方式有多种,主要的方式有2种:

  • 修改对应用户的密码加密方式
  • 升级客户端或驱动

具体方式可参考 MySQL8.0用户登录那些事

2.6 再部署一个mysql5.7的容器

上面部署的是最新版mysql8.0.20,想部署5.7版本该如何部署?其实就是拉取镜像的时候指定选择MySQL5.7版本的即可。具体步骤如下:

拉取mysql5.7版本镜像 
[root@c7_2 local]# docker pull centos/mysql-57-centos7
Using default tag: latest
latest: Pulling from centos/mysql-57-centos7
d8d02d457314: Pull complete 
a11069b6e245: Pull complete 
596303fb1aa3: Pull complete 
a29499e779a7: Pull complete 
17d1a52c2e00: Pull complete 
ed24591227fe: Pull complete 
de0ad46e3ed9: Pull complete 
c62e4a984a9c: Pull complete 
01d54c6bda68: Pull complete 
Digest: sha256:e08ee4d43b7356607685b69bde6335e27cf20c020f345b6c6c59400183882764
Status: Downloaded newer image for centos/mysql-57-centos7:latest
docker.io/centos/mysql-57-centos7:latest

0bfe6dba420e1b652e64dff226e4d8a4.png

运行mysql5.7的docker

docker run -di --name=mysql5.7  -p 3307:3306 -e MYSQL_ROOT_PASSWORD=Admin@123 centos/mysql-57-centos7

4faf4885a121ed951dbf44c90eace238.png

不进入容器,在本地或其他机器上登录mysql5.7

[root@c7_2 local]# /usr/local/mysql5.7/bin/mysql -uroot -p'Admin@123' -P3307 -h 192.168.28.129
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 11
Server version: 5.7.24 MySQL Community Server (GPL)

Copyright (c) 2009-2019 Percona LLC and/or its affiliates
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

mysql> select version();
+-----------+
| version() |
+-----------+
| 5.7.24    |
+-----------+
1 row in set (0.01 sec)

mysql> 

可以看到 该版本为MySQL 社区版的5.7.24

a1955781bf0f29317d373dc4bdc32a05.png

2.7 查看正在运行的docker

查看一台机器上运行的docker信息可以通过 docker ps 命令查看

c8d8a6a16892f9892fb8afe70285da78.png

本地端口信息如下

f1b0e4a1ea7762b8e23e355f7c563f80.png

3、结语

将MySQL放进docker主要就这几步。不过其中修改数据库配置文件等相关内容本次来不及细说,有兴趣的同学可以自行测试,相对也必将简单,可以在启动的时候指定。

另外,将MySQL放在docker后与本地直接运行之间的有什么差别,各自的优缺点是什么?欢迎大家在技术群里讨论。

8d88187f39782fab93eaaa6fd6dd2317.png

http://www.niftyadmin.cn/n/4151905.html

相关文章

大数据统计分析平台之二、ElasticSearch 6.2.1的安装与使用

# 下载文件cd /usr/local/software wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.1.zip yum install unzip -yunzip elasticsearch-6.2.1.zipcd elasticsearch-6.2.1/ #添加用户adduser elasticsearch#给用户赋值echo elasticsearch | passw…

mysql找出两个结果集不同数据_【每周一议】干货讨论 如何合并两个查询的结果集的数据...

ORACLE 9i 调试通过。create table TEMP1(RDATA DATE,RUSER VARCHAR2(10));create table TEMP2(RDATA DATE,RUSER VARCHAR2(10));insert into TEMP1 (RDATA, RUSER)values (to_date(05-11-2012, dd-mm-yyyy), NEW);insert into TEMP1 (RDATA, RUSER)values (to_date(02-11-2012…

Ajax 基础笔记

Ajax内容: 同步交互与异步交互  同步交互:客户端向服务器端发送请求,服务器端向客户端进行响应,这个过程中客户端不能做其他事情  异步交互:客户端向服务器端发送请求,服务器端向客户端进行响应&#x…

python turtle库输出文字_Python 海龟 turtle 画图讲解 (五):输入/输出文字及鼠标与键盘交互设计...

一、输入/输出文字 在 1. 输出文字 输出文字可以使用 write() 方法来实现,语法如下: def write(self, arg, move=False, align="left", font=("Arial", 8, "normal")) 参数说明: arg:必选参数,用于指定要输出的文字内容,该内容会输出到当前…

python3程序下载_从Python中下载文件3

如果你想获取一个网页的内容到一个变量,只是读取urllib.request.urlopen的响应:import urllib.request...url http://example.com/response urllib.request.urlopen(url)data response.read() # a bytes objecttext data.decode(utf-8) # a str; thi…

linux的shell脚本介绍、shell脚本结构和执行、date命令用法、shell脚本中的变量

Shell脚本介绍 shell是一种脚本语言可以使用逻辑判断、循环等语法可以自定义函数shell是系统命令的集合shell脚本可以实现自动化运维,能大大增加我们的运维效率Shell脚本结构和执行 开头需要加#!/bin/bash以#开头的行作为解释说明脚本的名字以.sh结尾,用…

14 Java do while循环语句

14.1 语法 初始语句; do{循环体;条件控制语句; }while(条件判断语句); 14.2 实验 package demo;public class Demo7 {public static void main(String[] args) {int i 0;do {System.out.println("hello");i; }while (i<5);} }

mysql查询缓存到redis_php查询mysql并缓存到redis

首先安装redis&#xff0c;并在php环境中开启php_redis扩展。下面不多说了&#xff0c;直接上代码$redis new redis();$redis->connect(127.0.0.1, 6379);$blog $redis->get(redisrow);//如果$blog数组为空&#xff0c;则去数据库中查询&#xff0c;并加入到redis中if(…