docker安装MySQL
[toc]
直接查看
root@ubuntu:/tmp/host_data# docker search --limit 3 mysql
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 12549 [OK]
mariadb MariaDB Server is a high performing open sou… 4824 [OK]
percona Percona Server is a fork of the MySQL relati… 575 [OK]
拉取
docker run mysql:5.7
运行
root@ubuntu:/tmp/host_data# docker run -P -e MYSQL_ROOT_PASSWORD=123456 -d --name mysql01 mysql:5.7
docker: Error response from daemon: Conflict. The container name "/mysql01" is already in use by container "646014e4386df9378362b32465d06baf8ff3dd0c79b32a4017c4d189ab7e3a88". You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.
root@ubuntu:/tmp/host_data# docker run -P -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
f680877f03bc9786ee219b3a944f23e002dd7c20181e9b067d1a0f3ab706d24f
root@ubuntu:/tmp/host_data# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f680877f03bc mysql:5.7 "docker-entrypoint.s…" 4 seconds ago Up 3 seconds 0.0.0.0:49155->3306/tcp, :::49155->3306/tcp, 0.0.0.0:49154->33060/tcp, :::49154->33060/tcp festive_morse
22e49c33a330 billygoo/tomcat8-jdk8 "catalina.sh run" 10 minutes ago Up 10 minutes 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp tomcat03
9e194dbf7eca tomcat "catalina.sh run" 24 minutes ago Up 24 minutes 0.0.0.0:49153->8080/tcp, :::49153->8080/tcp tomcat02
c6b2169449f4 ubuntu "bash" 50 minutes ago Up 50 minutes ubuntu2
37d9f24e95a3 ubuntu "bash" 2 hours ago Up 2 hours u1
f19e7fbc3d18 v2fly/v2fly-core "/usr/bin/v2ray -con…" 2 hours ago Restarting (2) 18 seconds ago tcp
有可能自己的服务器mysql被占用3306所以选择随即动态端口
ps -ef|grep mysql
进入容器中
root@ubuntu:/tmp/host_data# docker exec -it f680877f03bc /bin/bash
root@f680877f03bc:/# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.36 MySQL Community Server (GPL)
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
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>
mysql操作
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| db07 |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
mysql> use db07
Database changed
mysql> create table t1(id int,name varchar(20));
Query OK, 0 rows affected (0.01 sec)
mysql> insert into t1 value(01,"smile");
Query OK, 1 row affected (0.01 sec)
mysql> select * from t1;
+------+-------+
| id | name |
+------+-------+
| 1 | smile |
+------+-------+
1 row in set (0.00 sec)
在主机上同样可以使用工具连接远程的mysql
mysql使用容器卷
我们在使用MySQL的时候担心数据被删除怎么办,此时可以用到之前的卷了
避免中文乱码,同步时候要改字符集
docker run -d -p 3306:3306 --privileged=true
-v /mysql/log:/var/log/mysql
-v /mysql/data:/var/lib/mysql
-v /mysql/conf:/etc/mysql/conf.d
-e MYSQL_ROOT_PASSWORD=123456
--name mysql_beifen
mysql:5.7
docker run -d -p 3306:3306 --privileged=true -v /mysql/log:/var/log/mysql -v /mysql/data:/var/lib/mysql -v /mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql_beifen mysql:5.7
操作
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
mysql> create database mydata;
Query OK, 1 row affected (0.00 sec)
mysql> use mydata
Database changed
mysql> create table t(
-> id int,
-> name varchar(20));
Query OK, 0 rows affected (0.01 sec)
mysql> insert into t values(1,"zhangsan");
Query OK, 1 row affected (0.01 sec)
mysql> select * from t;
+------+----------+
| id | name |
+------+----------+
| 1 | zhangsan |
+------+----------+
1 row in set (0.00 sec)
主机上可以看到同步
删除同步
我们删除MySQL再创建
root@ubuntu:/# docker run -d -p 3306:3306 --privileged=true -v /mysql/log:/var/log/mysql -v /mysql/data:/var/lib/mysql -v /mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql_beifen mysql:5.7
1ff6de0064bdd2eba5acaf0ec5458ca72ae0973f5fec09cf4be2968f159335d3
root@ubuntu:/# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1ff6de0064bd mysql:5.7 "docker-entrypoint.s…" 11 seconds ago Up 10 seconds 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql_beifen
22e49c33a330 billygoo/tomcat8-jdk8 "catalina.sh run" 47 minutes ago Up 47 minutes 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp tomcat03
9e194dbf7eca tomcat "catalina.sh run" About an hour ago Up About an hour 0.0.0.0:49153->8080/tcp, :::49153->8080/tcp tomcat02
c6b2169449f4 ubuntu "bash" About an hour ago Up About an hour ubuntu2
37d9f24e95a3 ubuntu "bash" 2 hours ago Up 2 hours u1
f19e7fbc3d18 v2fly/v2fly-core "/usr/bin/v2ray -con…" 2 hours ago Restarting (2) 2 seconds ago tcp
root@ubuntu:/# docker exec -it 1ff6de0064bd /bin/bash
root@1ff6de0064bd:/# mysql -uroot -p123456
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.36 MySQL Community Server (GPL)
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
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 |
| mydata |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
由此可见,数据恢复过来了