一. 拉取镜像

#  docker   pull   mysql:5.6.

创建docker数据库容器

创建数据库容器启动所需要的目录
# mkdir -p /app/docker_web/mysql_data/zmn/{data,conf}
#  cat   /app/docker_web/mysql_data/conf/my.cnf  //代码有需要可以,再优化
[mysqld]
user=mysql
port=3306
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
pid-file=/var/run/mysql/mysql.pid
log_error=/var/log/mysql/error.log
character_set_server = utf8
server-id = 1
log-bin=/var/lib/mysql/mysql-bin
max_connections=3600
启动容器
# docker run -d --name zmn -m 4096m  -p 3340:3306 -v /app/docker_web/mysql_data/zmn/conf/:/etc/mysql/conf.d -v  /app/docker_web/mysql_data/zmn/data/:/var/lib/mysql -e  MYSQL_ROOT_PASSWORD=admin  mysql:5.6.35
   //此命令是映射3306(容器)--->3340(宿主机)
注:MYSQL_ROOT_PASSWORD 这个是区分大小写的,后面是初始密码,进入数据库后,最好修改

直接以client 端登陆mysql

# yum install -y mysql
# mysql -h172.17.0. -uroot -padmin 注:这里默认是连接docker mysql容器的3306端口

# mysql -h $IP -uroot -P 3340 -padmin 注:这里的IP 为 宿主机IP

二. 创建数据卷

1. 在运行容器之前,先使用docker volume create 创建一个数据卷,用于挂载映射mysql容器数据文件:

# docker volume create mysql_data

2. 用docker volume inspect 命令看下刚创建的mysql_data 数据卷的详细信息:

# docker volume inspect mysql_data
[
{
"CreatedAt": "2018-02-12T09:14:45+08:00",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/mysql_data/_data",
"Name": "mysql_data",
"Options": {},
"Scope": "local"
}
]

  

大家注意到这一行"Mountpoint": "/var/lib/docker/volumes/mysql_data/_data" 这是数据卷mysql_data 在宿主机上的目录路径,没有容器进行挂载,默认里面是空的

三.  利用数据卷运行mysql 容器

mysql版本选用较为流行的5.x 系列, 使用docker run 运行mysql容器:

# docker run -d --name mysql5. -e MYSQL_ROOT_PASSWORD=  -p : -v mysql_data:/var/lib/mysql  mysql:5.7

注意上面命令中的 -v mysql_data:/var/lib/mysql ,它会将前面我们创建好的数据卷mysql_data 挂载到mysql容器内部的/var/lib/mysql 目录

先检查下刚创建的mysql容器正常与否,使用docker exec 命令连到mysql服务器:

# docker exec -it mysql5. mysql -uroot -p

四. 扩展

  创建mysql8.0.20数据库服务

1. 配置文件

# mkdir -p  /app/docker_web/mysql_data/pd/{conf,data}
# cat > /app/docker_web/mysql_data/pd/conf/my.cnf << EOF
[clinet]
default-character-set=utf8 [mysqld]
character-set-server=utf8
# 修改默认的密码字符串插件
default-authentication-plugin=mysql_native_password
user=mysql
port=3306
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
pid-file=/var/run/mysqld/mysqld.pid
log_error=/var/lib/mysql/error.log
server-id = 1
log-bin=/var/lib/mysql/mysql-bin
max_connections=3600 secure-file-priv= NULL
symbolic-links=0
#!includedir /etc/mysql/conf.d/
EOF

  

2. 运行容器

docker run -d --name pdjy-db -m 4096m \
-p 4340:3306 \
-v /etc/localtime:/etc/localtime \
-v /etc/timezone:/etc/timezone \
-v /app/docker_web/mysql_data/pd/conf:/etc/mysql \
-v /app/docker_web/mysql_data/pd/data/:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=admin \
docker.io/mysql

docker数据库的更多相关文章

  1. 使用第三方工具连接docker数据库

    一.背景 ​ 为了把测试环境迁移至docker上,我在centos7上安装了docker,具体安装方法可参考<CentOS7下安装docker>本文不再论述.有些同学可能会有疑问,为什么要 ...

  2. 不知道密码情况下 进行docker数据库可视化连接

    1. 通过命令 docker inpect mysql容器id ,查询mysql容器的密码和绑定的端口号 2.通过vscode插件或者navicat等可视化工具,进行连接即可. 有问题请进群联系我,或 ...

  3. docker命令脚本

    第一版: 1 #!/bin/bash #this is input docker continer shell! #this is -- # v1.1.2 read -p "请输入要执行do ...

  4. Docker技术入门与实战 第二版-学习笔记-7-数据管理(volume)

    Docker 数据管理 为什么要进行数据管理呢?因为当我们在使用container时,可能会在里面创建一些数据或文件,但是当我们停掉或删除这个容器时,这些数据或文件也会同样被删除,这是我们并不想看见的 ...

  5. docker微服务部署之:六、Rancher管理部署微服务

    docker微服务部署之:五.利用DockerMaven插件自动构建镜像 一. 什么是Rancher Rancher是一个开源的企业级容器管理平台.通过Rancher,企业再也不必自己使用一系列的开源 ...

  6. Docker运行oracle12c注意事项

    title: docker运行oracle12c注意事项 date: 2019-03-27 13:42:34 categories: 数据库 author: mrzhou tags: docker 数 ...

  7. docker快速部署本地项目到服务器(tomcat8+mysql8)

    目标是:将本地运行的spring项目,部署到服务器上 为什么使用docker? 环境隔离 服务器上,各种环境交杂,使用docker,能清楚的把各个项目进行隔离,不单维护的人员方便,也会省去很多维护这些 ...

  8. Docker 中卷组管理

    一.概念 数据卷是一个可供一个或多个容器使用的特殊目录实现让容器的一个目录和宿主机中的一个文件或者目录进行绑定.数据卷 是被设计用来持久化数据的,对于数据卷你可以理解为NFS中的哪个分享出来的挂载点, ...

  9. 22. docker 数据持久化 Data Volume

    1 . 使用场景 在docker 容器被删除的时候  希望数据不丢失 2 . Volume 的使用 * 注意 在 mysql 的 Dockerfile 内 定义了 VOLUME ["var/ ...

随机推荐

  1. 如何将阿里云mysql RDS备份文件恢复到自建数据库

    参考地址:https://help.aliyun.com/knowledge_detail/41817.html PS:目前恢复只支持 Linux 下进行.Linux下恢复的数据文件,无论 Windo ...

  2. navicat的简单使用

    navicat的简单使用: 连接: 输入ip地址,端口,用户名,密码 新建数据库: 数据库名,字符编码一定要选择utf-8 新建表: 字段,约束条件 双击表名,自己打开表,点击空列,添加数据,ctl+ ...

  3. 爬取知名社区技术文章_setting_5

    # -*- coding: utf-8 -*- # Scrapy settings for JobBole project # # For simplicity, this file contains ...

  4. Python--socketserve源码分析(一)

    class ThreadingTCPServer(ThreadingMixIn, TCPServer): pass 实现原理: s =socketserver.ThreadingTCPServer(参 ...

  5. Linux Shell 编程语法

    原文地址:http://www.cnblogs.com/fhefh/archive/2011/04/13/2014967.html.感谢作者的无私分享 编写代码 在计划好要程序干什么以及如何使用程序的 ...

  6. Windows 产品激活状态、密钥等信息查看

    目前,大多PC都是预装了微软家的桌面级系统 Windows ,这也算是微软一大得意之作.可是 Windows 产品可不是免费的,是要 $ 的.可能在中国,大多数系统可能是盗版过来的,像当年的雨林木风( ...

  7. 控制器没有足够的带宽可利用为USB大容量存储设备的解决方法

    伴随网盘时代的没落,最近刚入手了一个移动硬盘.现在的移动硬盘都是USB3.0,传输速度比USB2.0要快很多.但是链接笔记本电脑后发现传输速度在20MB/s左右,跟USB2.0速度差不多,并不能达到传 ...

  8. 重拾Python(1):使用Anaconda搭建Python开发环境(Windows7)

    1.为什么选择Anaconda? Anaconda解决了Python使用痛点. Python好用但是令人头疼的就是库管理与Python不同版本的问题,特别是Windows环境下. 2.什么是Anaco ...

  9. PDO错误调试

    在服务器上用PDO操作数据库,怎么都获取不到数据,query语句返回null,但是同样的代码在本地运行无误.SO,开始找bug. <?php $host='localhost'; $dbname ...

  10. gb_tree平衡树源码

    1.平衡树简称AVL,出名的有红黑树,这里介绍一下gb_tree的实现 gb_tree的原理比红黑树简单,没有过多的旋转跳跃闭着眼,是一种叫AA树的结构(Arne Andersson's Genera ...