资讯详情

容器数据卷 -v

数据?如果数据都在容器中,那么容器一删除,数据就会丢失。需求:数据可持续!

MYSQL,删除容器,删库跑路! 需求:mysql本地可以存储数据!

数据共享技术可以在容器之间进行!Docker容器中产生的数据同步到本地!

这是卷技术,目录挂载,容器内的目录挂载linux上面!

# 方法一:直接使用命令挂载 -v docker run -it -v 主机目录:容器内目录 -p 主机端口:容器内端口: /bin/bash  [root@qiaoyanjie home]# docker run -it -v /home/test:/home centos /bin/bash Unable to find image 'centos:latest' locally latest: Pulling from library/centos a1d0c7532777: Pull complete  Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177 Status: Downloaded newer image for centos:latest  # 启动后根据 docker inspect 容器id 检查挂载情况

容器创建后,主机//home自动创建目录test目录home/test在容器中//home自动同步创建在目录下。

在容器中创建也会自动同步到主机上。

再次测试:

1、停止容器

2、宿主机修改文件

3、启动容器

4.容器中的数据仍然同步!

实战:mysql同步数据

思考:mysql数据持久化问题,容器一删除,数据就消失了,需要挂载到宿主机。

# 拉取镜像 [root@qiaoyanjie ~]# docker pull mysql:5.7  # 启动容器,先看不挂载目录,容器内目录结构 [root@qiaoyanjie ~]# docker run -d -p 3310:3306 --name mysql01 mysql    #不加版本号,默认下载最新版本 Unable to find image 'mysql:latest' locally :^H^C [root@qiaoyanjie ~]# docker images REPOSITORY            TAG       IMAGE ID       CREATED         SIZE tomcat                1.0       6a97a6c93a9f   5 days ago      684MB redis                 latest    7614ae9453d1   4 months ago    113MB mysql                 5.7       c20987f18b13   4 months ago    448MB [root@qiaoyanjie ~]# docker run -d -p 3310:3306 --name mysql01 mysql:5.7 a4d68cd2beef4c27a178b45453e9aa03039883a769df574c711d93ace94bc08a [root@qiaoyanjie ~]# docker ps -a    # 没启动成功 CONTAINER ID   IMAGE                 COMMAND                  CREATED         STATUS                     PORTS                                            NAMES a4d68cd2beef   mysql:5.7             "docker-entrypoint.s…"   4 seconds ago   Exited (1) 3 seconds ago                                                    mysql01 

[root@qiaoyanjie ~]# docker logs -f a4d68cd2beef 2022-05-12 06:48:24 00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.36-1debian10 started. 2022-05-12 06:48:25 00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql' 2022-05-12 06:48:25 00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.36-1debian10 started. 2022-05-12 06:48:25 00:00 [ERROR] [Entrypoint]: Database is uninitialized and password option is not specified     You need to specify one of the following:     - MYSQL_ROOT_PASSWORD     - MYSQL_ALLOW_EMPTY_PASSWORD     - MYSQL_RANDOM_ROOT_PASSWORD 
# 设置密码,启动成功 [root@qiaoyanjie ~]# docker run -d -p 3310:3306 -e MYSQL_ROOT_PASSWORD=QYJ19970218  --name mysql01 mysql:5.7 e880e8d89c5e5ffcc40d3e52b32925b6ed0f1099a0dfedf213a922253e80d031 [root@qiaoyanjie ~]# docker ps -a CONTAINER ID   IMAGE                 COMMAND                  CREATED         STATUS                    PORTS                                            NAMES e880e8d89c5e   mysql:5.7             "docker-entrypoint.s…"   4 seconds ago   Up 3 seconds              33060/tcp, 0.0.0.0:3310->3306/tcp                mysql01
# 挂载目录前,容器内的目录结构(本已需要映射的目录) root@e880e8d89c5e:/etc/mysql# ls conf.d my.cnf my.cnf.fallback  mysql.cnf  mysql.conf.d  root@e880e8d89c5e:/var/lib/mysql# ls auto.cnf    ca.pem      client-key.pem  ib_logfile0  ibdata1  mysql        private_key.pem server-cert.pem  sys ca-key.pem  client-cert.pem  ib_buffer_pool  ib_logfile1  ibtmp1   performance_schema  public_key.pem server-key.pem
# 数据卷挂载 启动容器 -d 后台运行 -p 端口映射 -v 卷挂载 -e 环境配置 --name 容器名字  [root@qiaoyanjie ~]# docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=QYJ19970218  --name mysql01 mysql:5.7  db054162ad48a70a89a51ad5b8a9cf86af20ad9a0bf9f0419d1f4586f050da88 [root@qiaoyanjie ~]# docker ps -a CONTAINER ID   IMAGE                 COMMAND                  CREATED         STATUS                    PORTS                                            NAMES db054162ad48   mysql:5.7            "docker-entrypoint.s…"   4 seconds ago   Up 4 seconds              33060/tcp, 0.0.0.0:3310->3306/tcp                mysql01

# 主机自动创建conf/data目录
[root@qiaoyanjie mysql]# cd /home/mysql/
[root@qiaoyanjie mysql]# ls
conf  data

# 开放阿里安全组,用navicat连接数据库,连接成功

1、创建新的数据库后,容器内和宿主机都有数据产生,映射路径ok。

2、删除容器,挂载到本地的数据卷依旧没有丢失。

[root@qiaoyanjie ~]# docker ps -a
CONTAINER ID   IMAGE                 COMMAND                  CREATED          STATUS                    PORTS                                            NAMES
db054162ad48   mysql:5.7             "docker-entrypoint.s…"   18 minutes ago   Up 18 minutes             33060/tcp, 0.0.0.0:3310->3306/tcp                mysql01
e6c3030fcdb9   centos                "/bin/bash"              2 days ago       Up 2 days                                                                  charming_lewin
[root@qiaoyanjie ~]# docker rm -f db054162ad48
db054162ad48
[root@qiaoyanjie ~]# cd /home/mysql/data/
[root@qiaoyanjie data]# ls
auto.cnf    ca.pem           client-key.pem  ibdata1      ib_logfile1  Joe    performance_schema  public_key.pem   server-key.pem
ca-key.pem  client-cert.pem  ib_buffer_pool  ib_logfile0  ibtmp1       mysql  private_key.pem     server-cert.pem  sys

标签: 24bc08集成电路ic

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台