使用docker容器运行MySQL数据库并持久化数据文件

摘要:
-p: 指定MySQL容器到本地计算机的端口映射,并将容器3306端口映射到主机的33060端口。完成此设置后,我们可以在LAN上访问MySQL数据库。

1、下载mysql镜像

# docker pull mysql

2、启动mysql容器

# docker run -itd -v /data:/var/lib/mysql -p 33060:3306 --name mysqldb mysql bash
WARNING: IPv4 forwarding is disabled. Networking will not work.
25d047a99917c6420412f36e1d0e2e6af38fc86539b2184d1ea7e5a47b955011

3、这里我们发现启动mysql容器出现warning,排除警告方式如下:

# vi /etc/sysctl.conf

添加:net.ipv4.ip_forward = 1

生效配置:

# sysctl -p
vm.max_map_count = 262144
net.ipv4.ip_forward = 1

重启网路服务:

# service network restart
Restarting network (via systemctl):                        [  OK  ]

再次启动mysql容器,发现警告消失:

# docker run -itd -v /data:/var/lib/mysql -p 33060:3306 --name mysqldb mysql bash
bbde59a2921981218441851d7527d22be3a0e37d3164fd1e07c4653d5dccc94d

注意:从上面启动mysql容器命令中使用了-v、-p参数,具体意义解释如下:

-v:为启动的容器挂在volume,mysql数据库默认数据目录是容器中的/var/lib/mysql目录,该目录是容器自带的一个volume,如果不为mysql容器单独配置数据目录volume,那么我们会发现重启mysql容器后mysql数据库中数据都丢失了。为了持久化mysql数据,我们在启动mysql容器时添加了-v /data:/var/lib/mysql参数,把主机的/data目录挂载到容器的/var/lib/mysql下。

-p:指定mysql容器到本机的端口映射,将容器3306端口映射到主机的33060端口,这样设置后,我们就可以在局域网访问mysql数据库了。

4、进入mysql容器,启动mysql服务:

# docker exec -it mysqldb bash
root@ff3a4e6288c1:/# service mysql status
[info] MySQL Community Server 5.7.21 is not running.
root@ff3a4e6288c1:/# service mysql start 
No directory, logging in with HOME=/
..
[info] MySQL Community Server 5.7.21 is started.

5、登录mysql数据库,进行基本配置:

root@ff3a4e6288c1:/# mysql -uroot
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 3
Server version: 5.7.21 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, 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 |
| chavin             |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

mysql> grant all privileges on *.* to root@'%' identified by 'mysql';
Query OK, 0 rows affected, 1 warning (0.00 sec)

此时,可以在局域网内访问docker容器启动的mysql数据库了。

# mysql -uroot -pmysql -h192.168.177.129 -P33060

免责声明:文章转载自《使用docker容器运行MySQL数据库并持久化数据文件》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇数据科学家含金量最高的5个数据科学认证,先马后看!docker~环境变量到底怎么用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

EMQ X 插件持久化系列 (五)MySQL MQTT 数据存储

本文以在 CentOS 7.2 中的实际例子来说明如何通过 MySQL 来存储相关的 MQTT 数据。 MySQL 属于传统的关系型数据库产品,其开放式的架构使得用户的选择性很强,而且随着技术的逐渐成熟,MySQL 支持的功能也越来越多,性能也在不断地提高,对平台的支持也在增多,此外,社区的开发与维护人数也很多。当下,MySQL 因为其功能稳定、性能卓越,...

JAVA 容器

直接看一张图,理解图中的结构其实容器大概就可以理解了 这里就将三个常见的容器接口类:Set List Map 重点:多态的实现,父类的指针指向子类的对象 Set Set是Collection的子接口,实现Set接口的容器类的特点:无序,不重复 实现Set接口的类有:HashSet类 代码如下: package com.zpchcbd.comtainer;...

PostgreSQL在Linux上的RPM和源码安装

第一章 引言 此文档主要描述Postgre数据库,基于Red Hat Enterprise Linux Server release 6.5 的操作系统上安装Postgre数据库的文档衍生而来。此文档包括Postgre数据库的多种安装方式。 1.1 背景 本文档介绍Postgre 数据库基于linux 6.5平台的三种安装方式。 第二章 部署前规划...

Hibernate

Hibernate环境搭建 Hibernate的API Hibernate的CRUD EE三层结构: web层       业务逻辑层    持久层         jdbc,DBUTils,Hibernate    Hibernate简介: 一个开源的对象关系映射框架,对JDBC进行了轻量级封装,将pojo与数据库表建立映射关系,是一个全自动的O...

mysql通过mysql_install_db初始化数据目录时使用--user选项的作用是什么?

需求描述:   mysql数据库通过mysql_install_db初始化数据目录时,使用了--user选项,这里记录下该参数的作用 参数解释: 1.--user的作用:就是以哪个操作系统用户来执行mysqld进程(使用哪个用户来运行mysql server) 2.比如,指定了--user=mysql之后,那么通过mysqld创建的文件或者目录都是被mys...

powerbuilder连接oracle数据库

一、打开已经安装好的pb9.0,主界面菜单栏有个两个圆柱形就行数据库连接,点击database。 二、选择oracle版本,由于数据库版本是9i,可以使用084 oracle8/8i.右键--选择new profile。当然你也可以设置好的profile导入进去。也可以把设置好profile导出来。 三、弹出database profile setup界...