`

Docker创建Mysql容器

阅读更多

Docker创建Mysql容器并通过命令行连接到容器

 

拉取网易蜂巢的mysql-server:5.6

docker pull hub.c.163.com/nce2/mysql:5.6

创建mysql5.6容器 1master+3个slave

docker run --name mysql-master -d -P hub.c.163.com/nce2/mysql:5.6
docker run --name mysql-slave1 -d -P hub.c.163.com/nce2/mysql:5.6
docker run --name mysql-slave2 -d -P hub.c.163.com/nce2/mysql:5.6
docker run --name mysql-slave3 -d -P hub.c.163.com/nce2/mysql:5.6

验证容器状态

[root@bogon ~]# docker ps
CONTAINER ID        IMAGE                          COMMAND             CREATED             STATUS              PORTS               NAMES
907bbbf25d25        hub.c.163.com/nce2/mysql:5.6   "/run.sh"           5 minutes ago       Up 5 minutes        3306/tcp            mysql-slave3
a81df6c86808        hub.c.163.com/nce2/mysql:5.6   "/run.sh"           5 minutes ago       Up 5 minutes        3306/tcp            mysql-slave2
375eabd4c598        hub.c.163.com/nce2/mysql:5.6   "/run.sh"           5 minutes ago       Up 5 minutes        3306/tcp            mysql-slave1
1651d1cab219        hub.c.163.com/nce2/mysql:5.6   "/run.sh"           14 minutes ago      Up 14 minutes       3306/tcp            mysql-master

通过主机命令行进入master容器

docker exec -it mysql-master bash
[root@bogon ~]# docker exec -it mysql-master bash
root@1651d1cab219:/#

在master中创建一个数据库test_docker

root@1651d1cab219:/# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.6.19-v1-log MySQL Community Server (GPL)

Copyright (c) 2000, 2014, 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 |
| #bak_database      |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.02 sec)

mysql> create database test_docker;
Query OK, 1 row affected (0.06 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| #bak_database      |
| mysql              |
| performance_schema |
| test               |
| test_docker        |
+--------------------+
6 rows in set (0.00 sec)

在slave1中创建一个数据库test_docker

[root@bogon ~]# docker exec -it mysql-slave bash
Error response from daemon: No such container: mysql-slave
[root@bogon ~]# docker exec -it mysql-slave1 bash
root@375eabd4c598:/# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.6.19-v1-log MySQL Community Server (GPL)

Copyright (c) 2000, 2014, 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 |
| #bak_database      |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.00 sec)

通过以上的信息说明master与slave是数据隔离的,
所以我们可以通过docker创建N个mysql容器,
然后就能以很小的代价就能学习《高可用MySQL》中的数据模型 再也不用发愁机器不够用。

后续操作

登录到master容器

[root@bogon ~]# docker exec -it mysql-master bash
root@1651d1cab219:/#

怎么查看容器的操作系统环境
一般就是
uname -a
cat /etc/pro
cat /etc/lsb-release

很幸运我们的容器是ubuntu14.04

root@1651d1cab219:/# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.3 LTS"

但是执行 apt-get install时候却什么也装不了
需要更改

cd /etc/apt/

没有 vi vim ee 编辑器 只好追加内容到 sources.list

 echo deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse >> sources.list
 echo deb http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse >> sources.list
 echo deb http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse >> sources.list
 echo deb http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse >> sources.list
 echo deb http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse >> sources.list
 echo deb-src http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse >> sources.list
 echo deb-src http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse >> sources.list
 echo deb-src http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse >> sources.list
 echo deb-src http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse >> sources.list
 echo deb-src http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse >> sources.list

然后 更新源

apt-get update
apt-get install vim

然后通过vim把sources.list文件的前两行删除掉 再重新update一下。

apt-get update

安装一个网络工具获取ip

apt-get install net-tools

获取到master的ip地址

root@1651d1cab219:/# ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:ac:11:00:02
          inet addr:172.17.0.2  Bcast:0.0.0.0  Mask:255.255.0.0
          inet6 addr: fe80::42:acff:fe11:2/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:15119 errors:0 dropped:0 overruns:0 frame:0
          TX packets:12633 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:34197557 (34.1 MB)  TX bytes:897732 (897.7 KB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:22 errors:0 dropped:0 overruns:0 frame:0
          TX packets:22 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:2212 (2.2 KB)  TX bytes:2212 (2.2 KB)

slave也需要这么做

还有一种方法
可以创建Dockerfile依赖mysql镜像创建一个新的镜像。
上诉命令通过RUN来执行创建的新容器会有安装的软件。

最后通过slave的docker连接到master的容器mysql服务器上

master的服务器mysql账号root赋值权限

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

mysql>  flush privileges;
Query OK, 0 rows affected (0.02 sec)

slave服务器执行如下命令

[root@bogon ~]# mysql -uroot -p -h 172.17.0.2
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.6.19-v1-log MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]>

在master上将test_docker数据库删除,看slave的终端是否也不显示已删除的库

master操作

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| #bak_database      |
| mysql              |
| performance_schema |
| test               |
| test_docker        |
+--------------------+
6 rows in set (0.00 sec)

mysql> drop database test_docker;
Query OK, 0 rows affected (0.06 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| #bak_database      |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.00 sec)

slave操作

MySQL [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| #bak_database      |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.00 sec)

MySQL [(none)]>
分享到:
评论

相关推荐

    7、使用docker的mysql容器服务1

    本文档主要介绍了如何使用docker创建mysql容器服务,帮助开发者快速搭建开发环境。下面是本文档中所涉及的知识点: 一、docker容器服务 docker是一款轻量级的容器化工具,能够帮助开发者快速创建和管理容器服务。...

    Docker创建MySQL容器的方法

    本篇文章主要介绍了Docker创建MySQL容器的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    Docker创建Mysql容器的简单步骤

    下面就来给大家介绍下Docker创建Mysql容器的简单步骤,话不多说了,来一起看看详细的介绍吧 步骤如下 1、启动docker服务 [root@docker ~]# systemctl start docker 2、查看docker里面的镜像 [root@docker ~]# ...

    Docker安装MySQL 8.0.20详细教程

    实现开机后自动重启MySQL容器,即使系统重启,MySQL容器也会自动启动并恢复运行。 四、容器时间与宿主机同步 Docker容器默认会继承宿主机的时区设置,因此容器内的时间会与宿主机保持同步。无需额外配置,即可确保...

    解决 docker mysql 中文乱码问题

    使用 docker 启动 mysql 容器可能会出现中文乱码的情况,这里记录如何制作支持中文的 mysql 镜像 docker版本:18.06 mysql 版本:5.7 1. 创建 my.cnf 文件 [client] default-character-set=utf8 [mysql] default-...

    docker部署mysql8教程

    "Docker 部署 MySQL 8 ...本教程详细介绍了使用 Docker 部署 MySQL 8 的步骤,包括拉取镜像、创建配置文件和数据挂载目录、启动容器和创建用户等步骤。使用 Docker 部署 MySQL 8 可以轻松地部署和管理 MySQL 数据库。

    mysql主主部署(docker+mysql+nginx+springboot)

    (2) docker启动mysql容器 1. 数据卷挂载 2. 编写my.cnf文件(这一步看自己想要的数据库情况设置) 3. 启动mysql容器,使用docker run 4. 查看启动是否成功 (3) mysql数据库两个主节点设置 1. 进入...

    Docker创建一个mysql容器并保存为本地镜像

    本篇文章主要介绍了Docker创建一个mysql容器并保存为本地镜像 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    详解通过Docker搭建Mysql容器+Tomcat容器连接环境

    1、实验目的:web容器能访问...4、步骤3:创建mysql的一个容器,容器的名字是mymysql,创建命令如下: 代码如下: docker run –name mymysql -p 3306:3306 -v /c/Users/xu/Desktop/mysqldata/:/usr/lib/mysql -e

    docker安装skywalking+mysql

    使用Docker运行MySQL容器,映射端口,挂载卷以持久化数据,并设置环境变量以指定root用户的密码。放置配置文件并根据需要进行调整,例如更改root用户的认证方式。重启MySQL容器以应用配置。 在安装Apache ...

    Docker的MySQL容器时区问题修改

    【Docker的MySQL容器时区问题修改】 在开发过程中,时区问题可能导致各种不一致,尤其是在分布式系统中。本文主要讨论的是如何解决Docker中运行的MySQL容器时区不正确的问题,这通常会影响到数据的正确读取和处理,...

    docker拉取mysql5.6镜像并run一个容器,使用mysql服务

    这将创建一个名为 "mysql" 的容器,映射宿主机的 3306 端口到容器的 3306 端口,并挂载宿主机的三个目录到容器中。同时,我们还设置了 MySQL 根密码为 "123456"。 四、访问容器中的 MySQL 服务 -------------------...

    连腾讯云上的docker上的mysql报错ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password:

    1.打开在创建mysql容器时挂载的conf目录下的mysqld.cnf(如下文件) 我创建docker的姿势 2.进入mysqlId.cnf文件中在[mysqld]下添加skip-grant-tables vim conf/mysqId.cnf 3.进入mysql容器 docker exec -it mysql....

    Mysql 教程 - docker 安装 Mysql 教程.pdf

    我们将从基础知识开始,逐步讲解如何使用 Docker 安装 MySQL,创建 MySQL 服务器实例,使用自定义配置文件,并了解 stack 部署 MySQL。 一、Docker 安装 MySQL 在安装前,需要先访问 Docker 官网查看 MySQL 的版本...

    Docker创建MySQL的讲解

    2.创建容器 命令样例: sudo docker run -p 3306:3306 --name mysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql 命令说明: 总结 以上...

Global site tag (gtag.js) - Google Analytics