01.创建和查看volume
[root@oracle1 ~]# docker volume create sspu_mysqldata
sspu_mysqldata
[root@oracle1 ~]# docker volume create sspu_mysqlconfig
sspu_mysqlconfig
--查看创建的卷。
[root@oracle1 volumes]# ll
total 24
drwx-----x 3 root root 19 Jul 2 15:58 57e8c3f618dc65491e03d49c2891d6d3c2f9d5d2c19ec4b8a8e5ea2e0b4d8b6c
brw------- 1 root root 253, 0 Jul 3 10:10 backingFsBlockDev
-rw------- 1 root root 32768 Jul 3 13:34 metadata.db
drwx-----x 3 root root 19 Jul 3 13:34 sspu_mysqlconfig
drwx-----x 3 root root 19 Jul 3 13:34 sspu_mysqldata
[root@oracle1 volumes]# pwd
/data/docker/data/volumes
2.mysql配置文件设置。
cat > /data/docker/data/volumes/sspu_mysqlconfig/_data << EOF
EOF
--物理主机会覆盖容器的。
--容器的不会覆盖物理主机。
02.使用volume;
--后台启动一个容器。
docker run -itd-p 33306:3306 \
--mount src=sspu_mysqlconfig,dst=/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=rootroot 192.168.1.11:443/myharbor/mysql:5.7.21 \
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
--外部端口是:3306,docker内部端口是:33306
[root@es1 ~]# docker run -itd -p 33306:3306 \
> --mount src=sspu_mysqlconfig,dst=/etc/mysql/conf.d \
> -e MYSQL_ROOT_PASSWORD=rootroot 192.168.1.11:443/myharbor/mysql:5.7.21 \
> --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
726127a3d8adb9c27c99b1a5118a97f7d52131a61d8e2cdf08c7325cacd0f909
--查看创建的卷
docker volume inspect sspu_mysqldata
docker volume inspect sspu_mysqlconfig
[root@es1 ~]# docker volume inspect sspu_mysqldata
[
{
"CreatedAt": "2024-07-03T13:40:18+08:00",
"Driver": "local",
"Labels": {},
"Mountpoint": "/data/docker/data/volumes/sspu_mysqldata/_data",
"Name": "sspu_mysqldata",
"Options": {},
"Scope": "local"
}
]
[root@es1 ~]# docker volume inspect sspu_mysqlconfig
[
{
"CreatedAt": "2024-07-03T13:37:46+08:00",
"Driver": "local",
"Labels": {},
"Mountpoint": "/data/docker/data/volumes/sspu_mysqlconfig/_data",
"Name": "sspu_mysqlconfig",
"Options": {},
"Scope": "local"
}
]
--查看创建的数据目录
[root@es1 _data]# ll /data/docker/data/volumes/sspu_mysqldata/_data
total 188484
-rw-r----- 1 ods ods 56 Jul 3 13:40 auto.cnf
-rw------- 1 ods ods 1675 Jul 3 13:40 ca-key.pem
-rw-r--r-- 1 ods ods 1107 Jul 3 13:40 ca.pem
-rw-r--r-- 1 ods ods 1107 Jul 3 13:40 client-cert.pem
-rw------- 1 ods ods 1675 Jul 3 13:40 client-key.pem
-rw-r----- 1 ods ods 1355 Jul 3 13:40 ib_buffer_pool
-rw-r----- 1 ods ods 79691776 Jul 3 13:40 ibdata1
-rw-r----- 1 ods ods 50331648 Jul 3 13:40 ib_logfile0
-rw-r----- 1 ods ods 50331648 Jul 3 13:40 ib_logfile1
-rw-r----- 1 ods ods 12582912 Jul 3 13:40 ibtmp1
drwxr-x--- 2 ods ods 4096 Jul 3 13:40 mysql
drwxr-x--- 2 ods ods 8192 Jul 3 13:40 performance_schema
-rw------- 1 ods ods 1675 Jul 3 13:40 private_key.pem
-rw-r--r-- 1 ods ods 451 Jul 3 13:40 public_key.pem
-rw-r--r-- 1 ods ods 1107 Jul 3 13:40 server-cert.pem
-rw------- 1 ods ods 1679 Jul 3 13:40 server-key.pem
drwxr-x--- 2 ods ods 8192 Jul 3 13:40 sys
3.进入容器
docker exec -it sspu_mysql_33306 bash --进入容器。
[root@es1 _data]# docker exec -it sspu_mysql_33306 bash
root@sspu_mysql_33306:/#
root@sspu_mysql_33306:/# cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2 sspu_mysql_33306
root@sspu_mysql_33306:/# mysql -h 172.17.0.2 -P3306 -uroot -prootroot
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.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 |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.01 sec)
mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
4.外网访问
[root@es1 _data]# mysql -uroot -P33306 -prootroot
Logging to file '/data/mysql/logs/query.log'
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 5
Server version: 5.7.34-log 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.
"root@localhost Wed Jul 3 13:49:19 2024 13:49:19 [(none)]">show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
+--------------------+
5 rows in set (0.01 sec)
--创建数据库
"root@192.168.1.7 Wed Jul 3 13:50:37 2024 13:50:37 [(none)]">create database sspu;
Query OK, 1 row affected (0.00 sec)
"root@192.168.1.7 Wed Jul 3 13:50:42 2024 13:50:42 [(none)]">show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sspu |
| sys |
+--------------------+
5 rows in set (0.00 sec)
"root@192.168.1.7 Wed Jul 3 13:50:44 2024 13:50:44 [(none)]">use sspu
Database changed
"root@192.168.1.7 Wed Jul 3 13:51:40 2024 13:51:40 [sspu]">create table sspu_tab1(id int,name varchar(10));
Query OK, 0 rows affected (0.01 sec)
"root@192.168.1.7 Wed Jul 3 13:52:11 2024 13:52:11 [sspu]">insert into sspu_tab1 values(1,'xsq');
Query OK, 1 row affected (0.04 sec)
"root@192.168.1.7 Wed Jul 3 13:52:18 2024 13:52:18 [sspu]">select * from sspu_tab1;
+------+------+
| id | name |
+------+------+
| 1 | xsq |
+------+------+
1 row in set (0.00 sec)
--查看创建的数据文件。
[root@es1 _data]# ll /data/docker/data/volumes/sspu_mysqldata/_data
total 188484
-rw-r----- 1 ods ods 56 Jul 3 13:40 auto.cnf
-rw------- 1 ods ods 1675 Jul 3 13:40 ca-key.pem
-rw-r--r-- 1 ods ods 1107 Jul 3 13:40 ca.pem
-rw-r--r-- 1 ods ods 1107 Jul 3 13:40 client-cert.pem
-rw------- 1 ods ods 1675 Jul 3 13:40 client-key.pem
-rw-r----- 1 ods ods 1355 Jul 3 13:40 ib_buffer_pool
-rw-r----- 1 ods ods 79691776 Jul 3 13:52 ibdata1
-rw-r----- 1 ods ods 50331648 Jul 3 13:52 ib_logfile0
-rw-r----- 1 ods ods 50331648 Jul 3 13:40 ib_logfile1
-rw-r----- 1 ods ods 12582912 Jul 3 13:40 ibtmp1
drwxr-x--- 2 ods ods 4096 Jul 3 13:40 mysql
drwxr-x--- 2 ods ods 8192 Jul 3 13:40 performance_schema
-rw------- 1 ods ods 1675 Jul 3 13:40 private_key.pem
-rw-r--r-- 1 ods ods 451 Jul 3 13:40 public_key.pem
-rw-r--r-- 1 ods ods 1107 Jul 3 13:40 server-cert.pem
-rw------- 1 ods ods 1679 Jul 3 13:40 server-key.pem
drwxr-x--- 2 ods ods 62 Jul 3 13:51 sspu
drwxr-x--- 2 ods ods 8192 Jul 3 13:40 sys
[root@es1 _data]# ll /data/docker/data/volumes/sspu_mysqldata/_data/sspu/
total 112
-rw-r----- 1 ods ods 67 Jul 3 13:50 db.opt
-rw-r----- 1 ods ods 8586 Jul 3 13:51 sspu_tab1.frm
-rw-r----- 1 ods ods 98304 Jul 3 13:52 sspu_tab1.ibd
5.容器内部查看
[root@es1 _data]# docker exec -it sspu_mysql_33306 bash
root@sspu_mysql_33306:/#
root@sspu_mysql_33306:/# ls /var/lib/mysql/
auto.cnf client-cert.pem ib_logfile0 ibtmp1 private_key.pem server-key.pem
ca-key.pem client-key.pem ib_logfile1 mysql public_key.pem sspu
ca.pem ib_buffer_pool ibdata1 performance_schema server-cert.pem sys
6.删除容器
[root@es1 _data]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
726127a3d8ad 192.168.1.11:443/myharbor/mysql:5.7.21 "docker-entrypoint.s…" 16 minutes ago Up 16 minutes 0.0.0.0:33306->3306/tcp, :::33306->3306/tcp sspu_mysql_33306
docker rm -f sspu_mysql_33306
[root@es1 _data]# docker rm -f sspu_mysql_33306
sspu_mysql_33306
--观察目录是否存在。
[root@es1 _data]# ll /data/docker/data/volumes/sspu_mysqldata/_data
total 188484
-rw-r----- 1 ods ods 56 Jul 3 13:40 auto.cnf
-rw------- 1 ods ods 1675 Jul 3 13:40 ca-key.pem
-rw-r--r-- 1 ods ods 1107 Jul 3 13:40 ca.pem
-rw-r--r-- 1 ods ods 1107 Jul 3 13:40 client-cert.pem
-rw------- 1 ods ods 1675 Jul 3 13:40 client-key.pem
-rw-r----- 1 ods ods 1355 Jul 3 13:40 ib_buffer_pool
-rw-r----- 1 ods ods 79691776 Jul 3 13:52 ibdata1
-rw-r----- 1 ods ods 50331648 Jul 3 13:52 ib_logfile0
-rw-r----- 1 ods ods 50331648 Jul 3 13:40 ib_logfile1
-rw-r----- 1 ods ods 12582912 Jul 3 13:40 ibtmp1
drwxr-x--- 2 ods ods 4096 Jul 3 13:40 mysql
drwxr-x--- 2 ods ods 8192 Jul 3 13:40 performance_schema
-rw------- 1 ods ods 1675 Jul 3 13:40 private_key.pem
-rw-r--r-- 1 ods ods 451 Jul 3 13:40 public_key.pem
-rw-r--r-- 1 ods ods 1107 Jul 3 13:40 server-cert.pem
-rw------- 1 ods ods 1679 Jul 3 13:40 server-key.pem
drwxr-x--- 2 ods ods 62 Jul 3 13:51 sspu
drwxr-x--- 2 ods ods 8192 Jul 3 13:40 sys
--数据还在;
7.再次启动容器,看是否有变化。
[root@es1 _data]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@es1 _data]#
[root@es1 _data]#
[root@es1 _data]#
[root@es1 _data]# docker run -itd -p 33306:3306 \
> --mount src=sspu_mysqlconfig,dst=/etc/mysql/conf.d \
> -e 192.168.1.11:443/myharbor/mysql:5.7.21 \
> --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
5c4509f30eada5c868049268132d37d793b95fa1a355d3f5c882538b4007b12c
[root@es1 _data]#
[root@es1 _data]#
[root@es1 _data]#
[root@es1 _data]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5c4509f30ead 192.168.1.11:443/myharbor/mysql:5.7.21 "docker-entrypoint.s…" 7 seconds ago Up 6 seconds 0.0.0.0:33306->3306/tcp, :::33306->3306/tcp sspu_mysql_33306
[root@es1 _data]# mysql -uroot -prootroot -P33306 -h 192.168.1.7
Logging to file '/data/mysql/logs/query.log'
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.21 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.
"root@192.168.1.7 Wed Jul 3 14:00:56 2024 14:00:56 [(none)]">show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sspu |
| sys |
+--------------------+
5 rows in set (0.00 sec)
"root@192.168.1.7 Wed Jul 3 14:01:01 2024 14:01:01 [(none)]">use sspu
Database changed
"root@192.168.1.7 Wed Jul 3 14:01:08 2024 14:01:08 [sspu]">select * from sspu_tab1;
+------+------+
| id | name |
+------+------+
| 1 | xsq |
+------+------+
1 row in set (0.01 sec)
8.总结
使用VOLUME的方式,直接使用Docker目录下的一个文件系统,删除容器后,重新启动一个
容器,数据不会丢失。不会重新初始化,这样做是安全的。