linux安装docker教程+mysql安装 二、使用docker安装mysql

这篇具有很好参考价值的文章主要介绍了linux安装docker教程+mysql安装 二、使用docker安装mysql。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、linux安装docker教程

第一步、关闭SELINUX服务

linux安装docker教程+mysql安装
二、使用docker安装mysql

 修改文件后的重启linux,重启命令为:reboot 

注意此处虚拟机里修改重启无法启动linux系统成功,处理方法:
1、重启Linux按e进入系统启动项修改参数

linux安装docker教程+mysql安装
二、使用docker安装mysql

2、在linux16的行位添加 selinux=0
按ctrl + x之后启动linux系统

linux安装docker教程+mysql安装
二、使用docker安装mysql

 3、启动之后,修改/etc/selinux/config文件

第二步、安装Docker服务

linux安装docker教程+mysql安装
二、使用docker安装mysql

第三步、DockerHub是Docker公共镜像仓库 

linux安装docker教程+mysql安装
二、使用docker安装mysql

linux安装docker教程+mysql安装
二、使用docker安装mysql

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
该脚本可以将 --registry-mirror 加入到你的 Docker 配置文件 /etc/docker/daemon.json 中。适用于 Ubuntu14.04、Debian、CentOS6 、CentOS7、Fedora、Arch Linux、openSUSE Leap 42.1,其他版本可能有细微不同。这里需要重启docker才会生效

daemon.json 内容后面如果有,号就的去除
{“registry-mirrors”: [“http://f1361db2.m.daocloud.io”]}

--------------------------------------------------------------------------------------------------------------------

CentOS安装Docker,启动时候报错Failed to start docker.service: Unit docker.service not found.(如下:),原因是CentOS默认使用podman代替docker,所以需要将podman卸载.

linux安装docker教程+mysql安装
二、使用docker安装mysql

解决办法:

问题描述:在Centos8系统中,使用docker run时,出现如下报错:
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
Error: open /proc/self/uid_map: no such file or directory

解决办法:
1,卸载podman软件(可以使用rpm -qa|grep docker)
yum remove docker
2,下载docker-ce源
curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo
3,安装docker-ce
yum install docker-ce -y

问题原因分析:
Centos 8使用yum install docker -y时,默认安装的是podman-docker软件
 

二、使用docker安装mysql

1.在docker hub上查看要下载的mysql镜像名称:

docker hub镜像仓库中为我们开发要
打开docker hub 网站
dockerHub官网地址dockerHub官网地址dockerHub官网地址:https://registry.hub.docker.com/
在上方搜索栏里输入mysql  找到要拉取的镜像版本,在tag下找到版本

linux安装docker教程+mysql安装
二、使用docker安装mysql

回到虚拟机界面,执行下面命令来拉取mysql镜像
不指定版本号,默认下载最新版本docker pull mysql

指定版本号:docker pull mysql:5.7

 linux安装docker教程+mysql安装
二、使用docker安装mysql

2.镜像拉取完成后,用该镜像创建mysql实例,使用下面的命令来创建

docker run --privileged=true -p 5306:3306 -v /usr/local/mysql/conf:/etc/mysql/conf.d:rw -v /usr/local/mysql/data:/var/lib/mysql -v /usr/local/mysql/log:/var/log/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql3 -d mysql:5.7

这里对上面的参数做下简单的介绍:
配置端口映射:-p 3306:3306
将容器的3306端口映射到主机的3306端口

配置mysql数据卷挂载
-v /usr/local/mysql/log:/var/log/mysql(日志文件挂载)
将容器中的日志文件夹挂载到主机对应的/var/log/mysql文件夹中
-v /usr/local/mysql/data:/var/lib/mysql(数据文件挂载)
将容器中的数据文件夹挂载到主机对应的/var/lib/mysql文件夹中
-v /usr/local/mysql/conf:/etc/mysql/conf.d:rw(配置文件挂载)
将容器的配置文件夹挂载到主机对应的/etc/mysql文件夹中(容易出错看错误2)
注(这里所提的主机指的是当前的linux主机)

配置用户:-e MYSQL_ROOT_PASSWORD=root
设置初始化root用户的密码

命名:--name mysql3

指定镜像资源:-d mysql:5.7
-d:以后台方式运行实例
mysql:5.7:指定用这个镜像来创建运行实例

下面演示是用root用户来执行的命令,如果当前不是root用户,要在命令前加 sudo,以管理员方式来运行, 创建成功后使用下面命令查看下创建好的mysql实例:docker ps -a

linux安装docker教程+mysql安装
二、使用docker安装mysql

 相关命令:

查看容器状态:docker ps -a
启动容器mysql3:docker start mysql3
停用容器mysql3:docker stop mysql3
重新进入容器:docker exec -it mysql3 bash
删除mysql3容器:docker rm mysql3

三、遇到无法启动的问题时,查看日志发现的错误

docker logs --tail -n mysql3

错误1、You need to specify one of the following as an environment variable:
    - MYSQL_ROOT_PASSWORD
    - MYSQL_ALLOW_EMPTY_PASSWORD
    - MYSQL_RANDOM_ROOT_PASSWORD

linux安装docker教程+mysql安装
二、使用docker安装mysql

解释: 由于mysql没有指定root的登录密码导致无法启动,默认mysql配置是不允许空密码登录的

原因:上面执行命令的时候写错了环境变量, MYSQL_SERVICE_PASSWORD 应该修改成 MYSQL_ROOT_PASSWORD

错误2、mysqld: Can't read dir of '/etc/mysql/conf.d/' (Errcode: 2 - No such file or directory)

linux安装docker教程+mysql安装
二、使用docker安装mysql

解释:可能由于不同的mysql版本,/etc/mysql目录下的结构不一样

原因: 由于mysql的配置目录/etc/mysql下有两个空目录, 上面的执行命令仅挂载了当前目录,导致里面的两个目录没有权限挂载到宿主机内, 应该将挂载目录指定到具体的目录下: -v /usr/local/mysql/conf:/etc/mysql/conf.d:rw

错误3-1、mysqld: Can't create/write to file '/var/lib/mysql/is_writable' (OS errno 13 - Permission denied)

错误3-2、chown: changing ownership of '/var/lib/mysql': Permission denied

 linux安装docker教程+mysql安装
二、使用docker安装mysql

 原因: 启动时没有足够的权限, /var/lib/mysql目录没有写权限, 可能是部署docker时指定了--user xxx某个权限不足的用户

解决方法有三个:

1.在docker run中加入 --privileged=true 给容器加上特定权限

2.关闭selinux csdn

3.在selinux添加规则,修改挂载目录

本人使用的是第1种解决方案

四、使用docker安装mysql配置主从(待本人自测成功)

1、创建主库(绿色字改成自己对应的数据)

1-1、创建主库:

docker run --privileged=true -p 4307:3306 -v /usr/local/docker_mysql/4307master/conf:/etc/mysql/conf.d:rw -v /usr/local/docker_mysql/4307master/data:/var/lib/mysql -v /usr/local/docker_mysql/4307master/log:/var/log/mysql -e MYSQL_ROOT_PASSWORD=root4307 --name mysql4307master -d mysql:5.7

linux安装docker教程+mysql安装
二、使用docker安装mysql

1-2、进入主库复制my.cnf配置文件

docker exec -it mysql4307master bash

linux安装docker教程+mysql安装
二、使用docker安装mysql

1-3、找到文件并进行复制:

docker cp mysql4307master:/etc/my.cnf /usr/local/docker_mysql/4307master/conf

linux安装docker教程+mysql安装
二、使用docker安装mysql

1-4、编辑my.cnf文件:

[mysqld]
#日志设置
#这里是容器里myslq里目录对应日志输出到挂载目录的
log-error = /var/log/mysql/db-err.log   #错误日志路径
slow-query-log-file = /var/log/mysql/db-slow.log  #慢SQL日志路径
long-query-time = 3 #怎样才算是慢sql,单位是秒

server_id=4307                            #server_id唯一
binlog-ignore-db=mysql                   #指定不需要同步的数据库名称
log-bin=mall-mysql-bin                   #开启二进制日志功能
binlog_cache_size=10M                     #设置二进制日志使用内存大小(事务)
binlog_format=mixed                      #设置使用的二进制日志的格式(mixed,statement,row)
expire_logs_days=7                       #二进制日志过期清理时间,默认值为0,表示不自动清理
slave_skip_errors=1062     #跳过主从复制中遇到的所有的错误或指定类型的错误,避免slave端复制中断
                           #1062错误是指一些组件重复,1032错误是主从数据库数据不一致 


!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

 重启下:docker restart mysql4307master

1-6、创建数据同步账号:

create user 'slave'@'%' identified by 'slave123';

grant replication slave,replication client on *.* to 'slave'@'%';

linux安装docker教程+mysql安装
二、使用docker安装mysql

2、 从服务器配置

2-1、创建从库(步骤和1-1、1-2、1-3相同)

2-2、编辑my.cnf文件:

[mysqld]

#日志设置
long-query-time = 3
#这里是容器里myslq里目录对应日志输出到挂载目录的
slow-query-log-file=/var/log/mysql/db-slow.log  
log-error=/var/log/mysql/db-err.log

server_id=4308
binlog-ignore-db=mysql
log-bin=mall-mysql-bin
binlog_cache_size=1M
binlog_format=mixed
expire_logs_days=7
slave_skip_errors=1062
#replay_log=mall-mysql-replay-bin    #配置中级日志
log_slave_updates=1                 #1代表slave写进自己的二进制
read_only=1                         #设置只读,super权限除外

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

三、配置主从

1、进入主数据库,查看主从同步状态

docker exec -it mysql4307master bash

登录mysql后台:mysql -uroot -p

然后查看主库状态:show master status;

linux安装docker教程+mysql安装
二、使用docker安装mysql

注意:后面配置主从需要这个

2、进入从数据库,配置主从

docker exec -it mysql4308 bash

登录mysql后台:mysql -uroot -p

配置主从:change master to master_host='192.168.3.150',master_user='slave',master_password='slave123',master_port=4307,master_log_file='mall-mysql-bin.000002',master_log_pos=617,master_connect_retry=30;

linux安装docker教程+mysql安装
二、使用docker安装mysql

 参数说明:

linux安装docker教程+mysql安装
二、使用docker安装mysql

 查看主从状态:

start slave;
show slave status\G

linux安装docker教程+mysql安装
二、使用docker安装mysql

 此处正常显示为Slave_IO_Running: Yes,Slave_SQL_Running: Yes

四、验证

验证我就不验证啦 大家自己验证自己的吧

错误1:安装mysql后无法远程连接,命令连接无需密码

linux安装docker教程+mysql安装
二、使用docker安装mysql

 上图看到没  我根本没输入密码就自动登录的,但此时我无法用Navicat连接mysql

解决如下:如果是我这样那就进行如下操作:

重新设置下root密码:set password for 'root'@'localhost'=password('mysql4307');

 为避免麻烦,再次设置远程访问:GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY 'mysql4307' WITH GRANT OPTION;

错误2:

Last_IO_Errno: 2061,Last_IO_Error: error connecting to master 'slave@192.168.10.150:3307' - retry-time: 30 retries: 1 message: Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection.

解决如下:

mysql> alter user 'slave'@'%' identified with mysql_native_password by'slave123';
mysql> flush privileges;

这时又会抛出一个问题

Last_IO_Errno: 13117
Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the --replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it).

解决方法如下 

#进入从数据库容器
mysql> show variables like 'server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id     | 101   |
+---------------+-------+
1 row in set (0.04 sec)
 
mysql> set global server_id=102;
mysql> stop slave;
mysql> start slave;

错误3:Slave_SQL_Running: No

linux安装docker教程+mysql安装
二、使用docker安装mysql

 在从库上停止slave:mysql> stop slave;

重置同步:mysql> reset slave;

重新设置同步节点:change master to master_host='192.168.3.150',master_user='slave',master_password='slave123',master_port=4307,master_log_file='mall-mysql-bin.000002',master_log_pos=617,master_connect_retry=30;

开启slave:mysql> start slave;

查看slave状态:mysql> show slave status\G;文章来源地址https://www.toymoban.com/news/detail-492828.html

到了这里,关于linux安装docker教程+mysql安装 二、使用docker安装mysql的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux下安装和使用MySQL的详细教程

    ✅作者简介:2022年 博客新星 第八 。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:MySQL数据库学习之旅 ✨特色专栏:国学周更-心性养成之路 🥭本文内容:Linux下安装和使用

    2024年02月08日
    浏览(45)
  • Linux环境使用docker安装MySQL(简单粗暴,复制即用)

    –name指定容器名字 -v目录挂载 -p指定端口映射 -e设置mysql参数 -d后台运行 将以下内容复制到文本

    2024年01月17日
    浏览(39)
  • Linux aarch64架构中使用docker安装mysql8

    1、遇到问题: 官网下载mysql包,安装完成后,启动mysql一直显示-bash: ./mysqld: 无法执行二进制文件。 网上找了各种资料,但是都没有作用,怀疑自己操作姿势不正确,以为是自己包下错了(其实也是包不对),重新下载了不同的各种包,换了各种安装方法,发现仍旧启动不了

    2024年02月14日
    浏览(49)
  • 手把手教程:Linux使用docker安装ElasticSearch8.2.3和配套Kibana

    前言 之前用的es一直是比较老的版本,最近做项目的时候觉得该用一个稍微新一点的了,就琢磨了一下新版本的使用,顺便整理下安装流程。之所以要整理这个,是因为新版本的ES跟老版本的安装过程差别太大了,特别是要配套Kibana的情况下。 开放端口 在云服务器控制台配置

    2024年02月11日
    浏览(48)
  • Docker安装MySQL教程

    前言 虽然 docker 安装 mysql 不是一个很好的方案,但是为了个人使用方便,使用 docker 安装 mysql 还是没什么问题的。 本文为了方便,我们直接通过yum方式安装。所以,我们在安装之前需要电脑可以联网,不然我们这种方式是安装不了的。 当然,你也可以自行下载mysql镜像,然

    2024年02月09日
    浏览(39)
  • docker下安装mysql5.7教程

    准备好Linux系统机器,并安装好docker,阅读这篇文章前请先了解清楚docker的基本知识并且会熟悉运用docker的常用命令。学习docker基础知识可以参考这篇博文 安装好并启动docker后就可以开始安装mysql了 执行以下命令直接下载mysql5.7版本镜像 安装好后再执行 docker images命令,查看

    2024年02月05日
    浏览(47)
  • linux环境docker安装mysql

    2024年02月12日
    浏览(44)
  • Linux 安装Docker教程

    目录 Docker 简介 什么是Docker Docker理念 Docker用途 centos安装docker 安装docker 启动docker 修改docker数据目录 普通用户赋权Docker Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也

    2024年02月10日
    浏览(61)
  • ①【Docker】Linux安装Docker容器教程

    个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ 查看系统内核版本 : [root@localhost ~]# uname -r 3.10.0-957.el7.x86_64 x86 64位系统,如果是32位则无法安装docker 更新

    2024年03月23日
    浏览(56)
  • Linux下安装docker教程

    目录 一、安装CentOS系统 二、安装Docker 1.卸载之前安装过的旧版本: 2.安装docker 3.启动docker 4.配置docker镜像仓库  三、Docker的使用 1.docker容器常用指令: 2.运行案例:docker拉取并运行nignx  3.查看容器日志 浏览器访问,下载CentOS映射文件: http://iso.mirrors.ustc.edu.cn/centos/7.9.2009

    2024年02月08日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包