上节回顾:docker(部署常见应用):docker部署nginx

docker部署mysql:5.7.26

# 下载镜像
docker pull mysql:5.7. # 查看镜像
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. "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

# 登录mysql
root@5291ed3fe987:/# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is
Server version: 5.7. MySQL Community Server (GPL) Copyright (c) , , 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 |
+--------------------+
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 |
+-----------+---------------+
rows in set (0.00 sec) # 设置root用户在任何地方进行远程登录,并具有所有库任何操作权限,(公司绝对不能这么做,暴露的攻击面太大),这里只是做测试。
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '' WITH GRANT OPTION;
Query OK, rows affected, warning (0.00 sec) # 刷新权限
mysql> FLUSH PRIVILEGES;
Query OK, rows affected (0.00 sec) # 退出mysql
mysql> exit
Bye

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

mysql之权限管理

Mysql权限控制 - 允许用户远程连接

远程登录测试

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

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

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

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

# 查看容器
[root@cbov10-sso55- mysql]# docker ps|grep mysql
5291ed3fe987 mysql:5.7. "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- mysql]# docker stop 5291ed3fe987
5291ed3fe987 # 删除容器
[root@cbov10-sso55- 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 : --name my-mysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD= -d mysql:5.7.
74c91431533ebb9bbfd3a1123b3f910f54770a08ad08c3c37cbbb996d29e0428 # 这里可以看出容器id已经发生了变化
[root@cbov10-sso55-xxx mysql]# docker ps |grep mysql
74c91431533e mysql:5.7. "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
Server version: 5.7. MySQL Community Server (GPL) Copyright (c) , , 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 |
+--------------------+
rows in set (0.00 sec)

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

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

说明:

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

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

推荐

docker官网

kubernetes官网

感谢您的观看和支持。

docker(部署常见应用):docker部署mysql的更多相关文章

  1. docker(部署常见应用):docker部署redis

    上节回顾:docker(部署常见应用):docker部署mysql docker部署redis:4.0 # 下载镜像 docker pull redis:4.0 # 查看下载镜像 docker ima ...

  2. docker(部署常见应用):docker部署nginx

    上回说到centos安装docker. 这次用实战,docker部署运行常见的应用. docker常用命令 参看:docker命令大全.这里不做赘述. docker部署nginx 1.docker h ...

  3. Docker 部署 halo 启动时,MySql 连接不上

    原因 halo 是部署在 docker 容器内部的,而 MySql 是部署在"宿主机"上的,docker默认的网络模式是bridge,容器内127.0.0.1访问不到的,把网络模式 ...

  4. django 本地项目部署uwsgi 以及云服务器部署 uwsgi+Nginx+Docker+MySQL主从

    一 .django 本地项目部署uwsgi 1 本地部署项目 uwsgi安装测试 通过uwsgi 进行简单部署 安装uwsgi命令:pip install uwsgi -i http://pypi.d ...

  5. 【Docker】 使用Docker 在阿里云 Centos7 部署 MySQL 和 Redis (二)

    系列目录: [Docker] CentOS7 安装 Docker 及其使用方法 ( 一 ) [Docker] 使用Docker 在阿里云 Centos7 部署 MySQL 和 Redis (二) [D ...

  6. Docker —— 用于统一开发和部署的轻量级 Linux 容器【转】

    转自:http://www.oschina.net/translate/docker-lightweight-linux-containers-consistent-development-and-d ...

  7. 【原创】运维基础之Docker(5)docker部署airflow

    部署方式:docker+airflow+mysql+LocalExecutor 使用airflow的docker镜像 https://hub.docker.com/r/puckel/docker-ai ...

  8. docker 部署nginx 使用keepalived 部署高可用

    一.体系架构 在Keepalived + Nginx高可用负载均衡架构中,keepalived负责实现High-availability (HA) 功能控制前端机VIP(虚拟网络地址),当有设备发生故 ...

  9. docker swarm overlay stack 服务部署记录

    项目xxx(后端),xxx-ui前端(前后端分离的项目) 依赖mysql,elasticsearch.分别制作了四个镜像来做这件事.希望可以制作跨主机的部署,使用了swarm,以下是学习记录. 参考 ...

随机推荐

  1. 相机标定:PNP基于单应面解决多点透视问题

              利用二维视野内的图像,求出三维图像在场景中的位姿,这是一个三维透视投影的反向求解问题.常用方法是PNP方法,需要已知三维点集的原始模型. 本文做了大量修改,如有不适,请移步原文:  ...

  2. Maven常见异常及解决方法

    异常1: [ERROR] Failed to execute goal on project biz_zhuhai: Could not resolve dependencies for projec ...

  3. 02 java学习安装jdk及其环境配置

    SUN公司1995年正式推出的一款语言 其实之前,Sun公司1991年,James Gosling等人就开始开发Oak语言,希望用于控制嵌入有效电视交换盒,1994年更名为Java,之前来自 与jav ...

  4. javeee 字节Buffered

    package Zy; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io. ...

  5. 在vue中,让表格td下的textraea自适应高度

    1.效果图 2.数据是动态获取的,因此存在一个异步的问题,解决的思路是数据获取到渲染在textarea中以后,获取文字的真实高度,然后把这个高度给textarea 3.具体代码以及步骤 (1)再cre ...

  6. 有关微信小程序

    每个页面都要在app.json中配置 "pages": [ "pages/index/index", "pages/list/list", ...

  7. Linux 僵尸进程如何处理

    Linux 允许进程查询内核以获得其父进程的 PID,或者其任何子进程的执行状态.例如,进程可以创建一个子进程来执行特定的任务,然后调用诸如 wait() 这样的一些库函数检查子进程是否终止.如果子进 ...

  8. Top English interview Q&A part 2.

    https://www.zhihu.com/question/19666878 1.how do you handle failure? I have always lived by the maxi ...

  9. JUnit单元测试实践:测试工具类和方法(EmptyUtils)

    以前的时候(读大学时),我认为写单元测试太费事了.现在,我改变看法了. 工作中,为了提高Web开发的质量和效率,近期又为了保证自己的工具类等一系列可复用组件的质量,我煞费苦心地开始认真学习和撰写单元测 ...

  10. 通过fmt标签格式化el表达式中的日期、小数

    首先引入fmt外部文件包 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" % ...