【docker】docker 卷和数据持久化-Volume(数据安全)

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目录下的一个文件系统,删除容器后,重新启动一个
容器,数据不会丢失。不会重新初始化,这样做是安全的。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值