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

2025-05-27 0 100

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

?

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

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

?

1

2

3

4
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

验证容器状态

?

1

2

3

4

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容器

?

1

2

3
docker exec -it mysql-master bash

[root@bogon ~]# docker exec -it mysql-master bash

root@1651d1cab219:/#

在master中创建一个数据库test_docker

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41
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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28
[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容器

?

1

2
[root@bogon ~]# docker exec -it mysql-master bash

root@1651d1cab219:/#

怎么查看容器的操作系统环境

一般就是

?

1

2

3
uname -a

cat /etc/pro

cat /etc/lsb-release

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

?

1

2

3

4

5
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

?

1

2

3

4

5

6

7

8

9

10
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

然后 更新源

?

1

2
apt-get update

apt-get install vim

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

安装一个网络工具获取ip

?

1
apt-get install net-tools

获取到master的ip地址

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18
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赋值权限

?

1

2

3

4

5
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服务器执行如下命令

?

1

2

3

4

5

6

7

8

9

10

11
[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操作

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27
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操作

?

1

2

3

4

5

6

7

8

9

10

11

12

13
MySQL [(none)]> show databases;

+--------------------+

| Database |

+--------------------+

| information_schema |

| #bak_database |

| mysql |

| performance_schema |

| test |

+--------------------+

5 rows in set (0.00 sec)

MySQL [(none)]>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持快网idc。

原文链接:http://www.cnblogs.com/baolong/p/5763412.html

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 行业资讯 详解Docker创建Mysql容器并通过命令行连接到容器 https://www.kuaiidc.com/68318.html

相关文章

发表评论
暂无评论