docker 部署mysql详细过程(docker部署常见应用)

之前给大家介绍过:docker(部署常见应用):docker部署nginx

docker部署mysql:5.7.26

# 下载镜像
docker pull mysql:5.7.26

# 查看镜像
docker images|grep mysql

# 启动容器镜像,建议在/usr/local/workspace/mysql  下执行以下docker  run  命令
  docker run -p 13306:3306 --name my-mysql -v $PWD/conf:/etc/mysql -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.26
 
  # 建议写死路径
  docker run -p 13306:3306 --name my-mysql -v /usr/local/workspace/mysql/conf:/etc/mysql -v /usr/local/workspace/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.26

命令说明:

-p 13306:3306             将容器的 3306 端口映射到主机的 3306 端口

--name my-mysql            启动后容器名为my-mysql

-v $PWD/conf:/etc/mysql          将主机当前目录下的 conf/ 挂载到容器的 /etc/mysql (conf目录为mysql的配置文件,不挂载也没问题)

-v $PWD/logs:/logs               将主机当前目录下的 logs 目录挂载到容器的 /logs (logs目录为mysql的日志目录,不挂载也没影响)

-v $PWD/data:/var/lib/mysql           将主机当前目录下的data目录挂载到容器的 /var/lib/mysql (data目录为mysql配置的数据文件存放路径,这个还是建议挂载,是存储数据的,容器down掉,还能再次挂载数据。)

-e MYSQL_ROOT_PASSWORD=123456     初始化 root 用户的密码

查看容器启动情况

[xxx@xxx-xx-xxx  mysql]# docker ps|grep mysql
5291ed3fe987        mysql:5.7.26                                        "docker-entrypoint.s??   5 minutes ago       Up 5 minutes        33060/tcp, 0.0.0.0:13306->3306/tcp   my-mysql

进入mysql容器

# 登录容器[root@cbov10-sso55-xxx ~]# docker exec -it my-mysql bash
root@5291ed3fe987:/# ls
bin   dev              entrypoint.sh  home  lib64  media  opt   root  sbin  sys  usr
boot  docker-entrypoint-initdb.d  etc         lib   logs   mnt    proc  run     srv   tmp  var
# 登录mysqlroot@5291ed3fe987:/# mysql -uroot -p --default-character-set=utf8
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.26 MySQL Community Server (GPL)

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> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

设置能远程登录mysql

mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select host,user from user;
+-----------+---------------+
| host      | user          |
+-----------+---------------+
| %         | root          |
| localhost | mysql.session |
| localhost | mysql.sys     |
| localhost | root          |
| localhost | test          |
+-----------+---------------+
5 rows in set (0.00 sec)

# 设置root用户在任何地方进行远程登录,并具有所有库任何操作权限,(公司绝对不能这么做,暴露的攻击面太大),这里只是做测试。
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
Query OK, 0 rows affected, 1 warning (0.00 sec)

# 刷新权限
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

# 退出mysql
mysql> exit
Bye

关于mysql授权,各位可自行百度,这里推荐

mysql之权限管理

Mysql权限控制

远程登录测试

使用数据库连接工具连接 宿主机ip+宿主机暴露的端口。

前面我们启动容器的时候-p13306:3306 标识宿主机端口 13306 映射 到容器的 3306 ,假如我们宿主机,就是服务器的ip地址为10.10.10.11

应该连接 10.10.10.11:13306 连接的数据库这里推荐新建test 数据库 做测试,如下

docker ,mysql重启问题(数据会不会丢失?)

# 查看容器
[root@cbov10-sso55-113 mysql]# docker ps|grep mysql
5291ed3fe987        mysql:5.7.26                                        "docker-entrypoint.s??   4 hours ago         Up 4 hours          33060/tcp, 0.0.0.0:13306->3306/tcp   my-mysql

# 停止容器 ( 5291ed3fe987 这里是mysql容器id)
[root@cbov10-sso55-113 mysql]# docker stop 5291ed3fe987
5291ed3fe987

# 删除容器
[root@cbov10-sso55-113 mysql]# docker rm 5291ed3fe987
5291ed3fe987

去我们原先挂载目录下查看

挂载宿主机目录是 /usr/local/workspace/mysql,

[root@cbov10-sso55-xxx mysql]# cd data/
[root@cbov10-sso55-xxx data]# ls
auto.cnf    ca.pem           client-key.pem  ibdata1      ib_logfile1  performance_schema  public_key.pem   server-key.pem  test
ca-key.pem  client-cert.pem  ib_buffer_pool  ib_logfile0  mysql        private_key.pem     server-cert.pem  sys

数据文件还在!我们再重新执行

# 这里要注意和挂载的宿主机目录一定要一致,第一次在 /usr/local/workspace/mysql 下执行的命令,这次也应该在同目录

# 当然,写成固定路径就没有上面的问题

[root@cbov10-sso55-xxx mysql]#   docker run -p 13306:3306 --name my-mysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.26
74c91431533ebb9bbfd3a1123b3f910f54770a08ad08c3c37cbbb996d29e0428

# 这里可以看出容器id已经发生了变化
[root@cbov10-sso55-xxx mysql]# docker ps |grep mysql
74c91431533e        mysql:5.7.26                                        "docker-entrypoint.s??   16 seconds ago      Up 15 seconds       33060/tcp, 0.0.0.0:13306->3306/tcp   my-mysql

# 进入容器
[root@cbov10-sso55-xxx mysql]# docker exec -it bash 74c91431533e
Error: No such container: bash
[root@cbov10-sso55-xxx mysql]# docker exec -it  74c91431533e bash
root@74c91431533e:/# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.26 MySQL Community Server (GPL)

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> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
5 rows in set (0.00 sec)

发现建的test数据库也在!mysql容器删除前后,data文件大小也可以验证,读者壳自行尝试。

宿主机文件保存好的话,数据可以不丢失。

说明:

其实 生产比做的这个测试要复杂的多,mysql集群,主备,数据同步,网络 等等问题,用docker解决确实为难

mysql 容器 的管理或者说,有状态应用的管理还得一个比较流弊的东西,这个项目是 大名鼎鼎的kubernetes。

推荐

docker官网

kubernetes官网

到此这篇关于docker 部署mysql(docker部署常见应用)的文章就介绍到这了,更多相关docker 部署mysql内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Linux系统Docker 部署 ASP.NET Core应用的流程分析

    一.系统环境 1.腾讯云轻量应用服务器CentOS7.6 二.操作流程及途中遇到的问题 1.SSH方式远程Linux ssh <username>@<IP address or domain name> 如果遇到下图问题: 出现这个问题的原因:known_hosts是记录远程主机的公钥的文件,之前重装个系统,而保存的公钥还是未重装系统的系统公钥,在ssh链接的时候首先会验证公钥,如果公钥不对,那么就会报错 解决方法:使用shh-keygen 命令ssh-keygen -R IP,执

  • Docker部署MySQL8集群(一主二从)的实现步骤

    目录 一.CentOS7.9安装Docker20 二.部署MySQL集群(一主二从) 三.结果 一.CentOS7.9安装Docker20 1.安装yum-utils工具 yum install -y yum-utils 2.设置docker的依赖源 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 注释:CentOS直接使用yum命令安装的Docker版本为1.13.1属于

  • Docker部署Microsoft Sql Server详细步骤

    目录 1 背景 2 创建容器 3 修改SA密码 4 链接mssql 5 容器外链接mssql 总结 1 背景 自 SQL Server 2019 CU3 起,支持 Ubuntu 18.04. 自 SQL Server 2019 CU10 起,支持 Ubuntu 20.04. Docker 引擎 1.8+ 至少 2 GB 的磁盘空间 至少 2 GB 的 RAM 博主机器: Welcome to Ubuntu 20.04.3 LTS (GNU/Linux 5.11.0-37-generic x86_

  • Docker部署Mysql,.Net6,Sqlserver等容器

    Centos8安装Docker 1.更新一下yum [root@VM-24-9-centos ~]# yum -y update 2.安装containerd.io # centos8默认使用podman代替docker,所以需要containerd.io [root@VM-24-9-centos ~]# yum install https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/containerd.io-1.2

  • 部署.Net6项目到docker

    部署.net6项目到docker [1]新建.net6 mvc或webapi项目: [2]在mvc或webapi项目的根目录下创建Dockerfile文件,并设置为始终复制: Dockerfile文件内容为: #添加.net6基础镜像 FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base #容器工作目录 WORKDIR /app #指定项webapi或mvc站点的内部启动端口,默认是80 #ENV ASPNETCORE_URLS http://+:50

  • docker部署Asp.net core应用的完整步骤

    1 容器概念 使用Docker前我们首先要简单了解一下容器的概念.MSDN上有一张虚拟机和容器的对比图,很好的展示了虚拟机和容器的区别,如下所示,虚拟机包括应用程序.必需的库或二进制文件以及完整的来宾操作系统,每台虚拟机都有一个单独的内核,我们完全可以把虚拟机看做是一台真实的物理机.容器包括应用程序及其所有依赖项,与其他容器共享 OS 内核,容器在主机操作系统上作为独立进程运行,我们可以把容器看做是一个应用沙盒. 我们经常会遇到"我机器上可以运行"的问题吧,然后部署到其他机器时就遇到了

  • Linux CentOS下docker部署Asp.Net6 Core

    1.项目设置 设置dockerfile属性为"始终复制", 修改dockerfile文件内容为: FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base WORKDIR /web COPY . . EXPOSE 80 EXPOSE 443 FROM base AS final ENTRYPOINT ["dotnet", "OneZhanMVC.dll"] ps:若项目没有dockerfile右键项目,点击

  • docker上部署MySQL的示例

    容器云的概念现在很火,现在很多公司都把MySQL部署在容器上,开始今天内容之前,我们先来看看容器云的概念吧. 1 容器云是什么? 要理解容器云的概念,首先需要了解容器,容器的介绍过程中,需要引入虚拟机来进行对比. 虚拟机: VMware或者Virtual BoX这种虚拟机想必大家在日常工作中都有用到过,它是模拟计算机操作系统的软件,你可以在windows计算机上安装Virtual BoX软件,然后在Virtual Box上安装Centos或者Ubuntu这种Linux操作系统,从而在一台机器上运

  • docker 部署mysql详细过程(docker部署常见应用)

    之前给大家介绍过:docker(部署常见应用):docker部署nginx docker部署mysql:5.7.26 # 下载镜像 docker pull mysql:5.7.26 # 查看镜像 docker images|grep mysql # 启动容器镜像,建议在/usr/local/workspace/mysql 下执行以下docker run 命令   docker run -p 13306:3306 --name my-mysql -v $PWD/conf:/etc/mysql -v

  • Docker安装LNMP环境的详细过程(可部署TP项目)

    目录 Docker安装LNMP环境 1.安装Docker 2. 安装nginx 3. 安装PHP 4. 查看nginx运行路径 5. 创建并运行php容器 6. 进入php容器,创建index2.php测试文件 7. 获取到phpfpm 这个容器的ip 8.配置nginx 以便支持php文件访问 9. 拉取Mysql镜像 10. 服务器文件放入容器中 Docker安装LNMP环境 1.安装Docker yum install docker # 启动并加入开机启动 sudo systemctl s

  • IntelliJ IDEA(2018版)安装docker插件的详细过程

    目录 一.开发环境 二.安装docker插件 1.Idea内安装 2.下载安装包安装 三.Spring Boot 服务docker部署 1.新建一个Spring Boot工程 2.配置Dockerfile文件 3.创建docker镜像 一.开发环境 开发工具 版本 IntelliJ IDEA 2018.1.6 (Community Edition) Docker integration 181.5087.20 二.安装docker插件 1.Idea内安装 打开Idea,从File->Settin

  • Deepin使用docker安装mysql数据库过程详解

    先查询MySQL源 docker search mysql 也可以去官网查看镜像tag,选择自己需要的版本,否则会下载最新版本:https://hub.docker.com/_/mysql/ 然后报错了!!! root@deepin-PC:/etc/apt# docker pull mysql:8.0.11 Error response from daemon: Get https://registry-1.docker.io/v2/library/mysql/manifests/8.0.11:

  • docker从安装入门到应用部署及私有仓库搭建基础命令

    目录 入门到精通 方法一 方法二 开启关闭 查找镜像 镜像操作 容器操作 文件拷贝 目录映射(数据卷) 查看容器信息 docker应用部署 容器打包成镜像 总结 docker file常用命令 eg:基于python3.6构建docker file镜像 容器部署项目,用 nuginx做负载均衡 Docker 入门到精通 ssh root@39.101.184.220 """ 1)docker就是Linux上及其轻量的虚拟机 2)虚拟机是存在宿主系统中,通过镜像给宿主系统拓展子

  • Docker启动mysql配置实现过程

    目录 实战过程 前言 可以通过官网查询其mysql如何启动 以及对mysql中的一些解读 附上官网地址 启动另一个mysql容器实例并运行mysql命令mysql是世界上最流行的开源数据库. 由于其经过验证的性能,可靠性和易用性,MySQL已经成为基于web的应用程序的领先数据库选择,涵盖了从个人项目和网站,通过电子商务和信息服务,一路到高知名度的web属性,包括Facebook, Twitter, YouTube, Yahoo! 和许多更多. 实战过程 通过查询官网具体白皮书 可得知使用这条命

  • Docker安装mysql并解决中文乱码问题

    目录 1.拉取mysql镜像 2.查看是否下载完成 3.MySQL挂载本地目录&解决中文乱码 4.创建容器并查看 1.拉取mysql镜像 网址:https://hub.docker.com/ 复制命令进行下载:docker pull mysql[:版本号] 不加版本号,默认是最新版 2.查看是否下载完成 docker images 3.MySQL挂载本地目录&解决中文乱码 因为在容器里面没有 vi 命令所以我们可以将 数据 和 配置 挂载在宿主机上,方便我们操作 创建分别创建文件夹 /tm

  • Docker安装部署分布式数据库 OceanBase的详细过程

    目录 前言 ️ 1.什么是OceanBase ️ 2.硬件要求 ️ 3.docker部署OceanBase 3.1 下载ob docker镜像 3.2 创建容器 3.3 obd工具查看集群及启动 3.4 登录ob数据库并创建租户 3.5 登录obmysql tenant并创建数据库及表等 前言 快速的体验 OceanBase 的 自动化部署过程,以及了解 OceanBase 集群安装成功后的目录特点和使用方法 ️ 1.什么是OceanBase OceanBase是由蚂蚁集团完全自主研发的国产原生

  • docker安装部署 onlyoffice的详细过程

    0. 系统要求 中央处理器 I5-10400F以上 内存 16 GB,最佳32G内存 硬盘 至少40 GB的可用空间 1:安装Docker Desktop 2:进入BIOS设置CPU的虚拟化 https://jingyan.baidu.com/article/ab0b56305f2882c15afa7dda.html 3:启动Docker desktop 报错解决:https://www.jb51.net/article/214820.htm 3:cmd进入,使用命令安装onlyoffice 安

  • idea整合docker快速部署springboot应用的详细过程

    目录 一.前言 二.环境及工具 三.安装docker以及配置远程连接 四.idea连接远程docker 一.前言 容器化一词相信大家已经不陌生了,听到它我们可能会想到docker.k8s.jenkins.rancher等等.那么今天我来说一下idea如何使用docker快速部署springboot应用. 二.环境及工具 windows10(开发) centos 7.6 (部署) idea docker xshell 三.安装docker以及配置远程连接 安装docker步骤网上有很多,在这里还是

随机推荐