Docker creates Mysql container and connects to container via command line
Pull the mysql-server of Netease Honeycomb: 5.6
docker pull hub.c.163.com/nce2/mysql:5.6
Create mysql5.6 container 1master+3 slaves
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
Verify container status
[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
Enter the master container through the host command line
docker exec -it mysql-master bash
[root@bogon ~]# docker exec -it mysql-master bash
root@1651d1cab219:/#
Create a database test_docker in master
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)
Create a database test_docker in slave1
[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)
The above information shows that the master and the slave are data isolated,
so we can create N mysql containers through docker,
and then we can learn the data model in "Highly Available MySQL" at a very small cost, and no longer have to worry about not enough machines. use.
Follow-up
Log in to the master container
[root@bogon ~]# docker exec -it mysql-master bash
root@1651d1cab219:/#
How to check the operating system environment of the container is
generally
uname -a
cat /etc/pro
cat /etc/lsb-release
Luckily our container is 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"
But when I execute apt-get install, nothing can be installed and
needs to be changed
cd /etc/apt/
There is no vi vim ee editor and I have to append content to 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
then update the source
apt-get update
apt-get install vim
Then delete the first two lines of the sources.list file through vim and update it again.
apt-get update
Install a network tool to get ip
apt-get install net-tools
Get the ip address of the master
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)
The slave also needs to do this
There is also a way
to create a Dockerfile that relies on the mysql image to create a new image.
The new container created by the appeal command executed via RUN will have the software installed.
Finally, connect to the master's container mysql server through the slave's docker
The master server mysql account root assignment authority
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)
The slave server executes the following command
[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)]>
Delete the test_docker database on the master and see if the slave terminal also does not display the deleted library
master operation
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 operation
MySQL [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| #bak_database |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.00 sec)
MySQL [(none)]>