• Docker 部署mysql8(arm64)


    镜像地址:

    Docker Hub

    由于目标B服务器无法连接互联网,无法直接在线安装docker和下载镜像,所以需要一台可连接互联网的中转服务器A导出镜像。

    1、在服务器A上安装docker

    1. yum -y install docker
    2. service docker start 或者 systemctl start docker

    2、下载mysql镜像到服务器A

    docker pull arm64v8/mysql

    3、将镜像下载到服务器A本地目录:

    docker save -o mysql.tar arm64v8/mysql:latest

    4、目标B服务器离线安装docker

    arm64版本docker 文件下载地址:

    Index of linux/static/stable/aarch64/

    这里选择版本:docker-20.10.9.tgz ,将文件下载后上传到服务器B。

    docker安装配置参考如下博客:

    离线安装Docker_洒家肉山大魔王的博客-CSDN博客_离线安装docker

    如果需要手动修改docker安装目录,需要在docker.service配置,ExecStart=中添加

    --graph /自定义目录

    docker启停命令:

    1. systemctl daemon-reload
    2. systemctl start docker
    3. systemctl stop docker
    4. systemctl status docker
    5. systemctl enable docker #开机启动

    5、目标B服务器导入镜像

    将服务器A中导出的mysql.tar镜像上传到目标服务器。

    然后执行镜像导入:

    docker load -i mysql.tar

    操作镜像命令:

    1. docker images #镜像列表
    2. docker rmi 镜像id #删除镜像
    3. docker rm 容器id #删除容器

    6、启动mysql容器

    docker run --name docker-mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d arm64v8/mysql:latest --lower-case-table-names=1 --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci

    检查容器状态:

    docker ps -a

    如果容器未启动,可以尝试手动启动:
     

    docker run -it docker-mysql

    如果仍然未启动,可以查看日志,确定问题:

    docker logs 容器id

    配置容器随docker启动:
     

    1. docker container update --restart=always 容器名称
    2. -- docker container update --restart=no 容器名称 # 关闭

    7、在容器中操作mysql

    进入容器命令行:

    1. docker exec -it docker-mysql /bin/bash
    2. #检查Mysql的默认配置文件
    3. cat /etc/mysql/my.conf

    登录mysql:

    mysql -uroot -p  #密码是刚刚设置的123456

    修改mysql密码:

    1. mysql> use mysql;
    2. mysql> update user set Host='%' where User='root';
    3. mysql> alter user 'root'@'%' identified by '新密码';
    4. mysql> alter user 'root'@'localhost' identified by '新密码';
    5. mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'; -- mysql8
    6. mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost'; -- mysql8
    7. mysql> -- alter user 'root'@'%' identified with mysql_native_password by '新密码'; -- mysql5.7
    8. mysql> flush privileges;

    如果使用旧的客户端连接mysql8出现错误:mysql -h127.0.0.1 -uroot -p,

    “ERROR 2061 (HY000): Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection.”

    如要执行如下SQL:

    1. mysql> use mysql;
    2. mysql> ALTER USER 'root'@'%' IDENTIFIED WITH 'mysql_native_password' BY '123456';
    3. mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH 'mysql_native_password' BY '123456';
    4. mysql> FLUSH PRIVILEGES;

    然后使用命令行连接mysql使用如下:

    mysql -h127.0.0.1 -uroot -p --ssl-mode=DISABLE

    另操作容器相关命令:

    1. docker container start 容器id前3
    2. docker container stop 容器id前3
    3. docker container rm 容器id前3

    8、补充:mysql数据备份及恢复

    linux下操作:

    1. # 查询mysql数据库大小
    2. SELECT table_schema AS `Database`, ROUND(SUM(data_length + index_length)/1024/1024/1024,2) AS `Size`
    3. FROM information_schema.TABLES
    4. GROUP BY table_schema;
    5. # 备份
    6. nohup mysqldump -h127.0.0.1 -uroot -p'密码' --ssl-mode=DISABLE --opt -R --events --routines --single-transaction data_center >/data/download/data_center.bak &
    7. # 恢复
    8. nohup mysql -h127.0.0.1 -uroot -p'密码' --ssl-mode=DISABLE data_center < data_center.bak &

    docker下操作:

    1. #备份
    2. docker exec -it 容器id mysqldump --all-databases -uroot -p123456 >/root/back.sql
    3. #恢复
    4. mysql > source /databak/data_center.bak

    将linux系统下文件复制到容器目标目录:

    docker cp /data/download/data_center.bak 容器id:/databak/

    9、补充:docker的跨平台解释

    docker容器所谓的“跨平台”其实跨的就是Linux发行版。只要的区别在于CPU架构,
    通常有amd64和arm64,这些是指令集的区别,镜像是不一样的。

    1. 使用如下命令拉取:
    2. docker pull --platform arm64 镜像名:版本号
    3. 如拉取es的7.9.0版本
    4. docker pull --platform arm64 elasticsearch:7.9.3
    5. 如果出现--platform没有这个参数,并且配置无效时可以如下,从镜像的tag里找需要的版本:
    6. docker pull mongo:lastest@sha256:xxxx

    10、补充:docker run

    1. #启动容器
    2. # -d 后台运行
    3. docker run -d -it --name 容器别名 -p 主机端口:容器端口 容器名称
    4. # -v 主机的目录 /data 映射到容器的 /data
    5. docker run -p 80:80 -v /data:/data -d nginx:latest
    6. #进入容器
    7. docker attach 容器名称/id
    8. #如果是通过 attach 进入的容器,在退出容器的时候,如果不想让容器停止运行的话,就不能使用exit命令或者Ctrl+D快捷键的形式退出,而是使用 Ctrl + P + Q 组合键退出容器。
    9. docker exec -it 容器名称/id/bin/bash
    10. #如果是通过 exec 命令进入的容器,在退出容器的时候,就可以使用exit或者Ctrl+D快捷键退出容器,同时容器不会停止运行,这也是exec与attach的最大区别。当然,你也可以使用Ctrl + P + Q 组合键退出容器,容器一样不会停止运行。

  • 相关阅读:
    CentOS7.6安装Rabbitmq
    项目管理中的三大误区
    常用的容易遗忘的java代码
    求告知识图谱构建工具
    实现图像处理和分析的关键技术
    games101——作业5
    李迟2022年8月工作生活总结
    6、React脚手架
    pip快速安装torch、opencv、scipy库
    每日一题 494目标和(0-1背包)(灵神笔记)
  • 原文地址:https://blog.csdn.net/sinat_37138973/article/details/126384356