前言:

  1. 为什么要使用Docker数据卷?若是删除了容器,数据也会随之删除,这也叫删除跑路,那么将会从学习docker入门到入狱。所以,我们必须要将容器内的数据持久化到容器外的服务器。

一、了解Docker数据卷命令

-----------------------------------------------------------初步了解----------------------------------------------------

  1. -v 容器外全路径目录:容器内全路径目录;挂载数据,两个路径双向同步信息,任何一个删除,另一个都会删除。(但是容器删除,云服务器数据不会被删除)
  2. 安全组开启3344和宝塔开启防火墙3346(注意:只能开启3000-3500防火墙,若设置范围外会报错):
  3. 使用挂载启动:docker run -it -p 3346:9001 -v /opt/litao:/opt/litao centos /bin/bash
  4. 容器内创建文件:
  5. 在容器外查看,发现服务器已经同步了容器内的数据:
  6. 查看挂载:docker inspect 容器id;
  7. exit;退出容器内所有数据都没了,再次启动容器只会启动一个新的容器。但如果做了容器数据卷同步,同步在服务器的文件/文件夹不会消失。容器外的服务器的数据文件不会消失:

 --------------------------------------服务器MySQL与容器mysql挂载数据-----------------------------------------

  1. 建议去DockerHub官网查看各种镜像的数据如何挂载:Docker Hub
  2. docker images --digests ;查看我们mysql的版本
  3. 安全组开启3347和宝塔开启防火墙3347(注意:只能开启3000-3500防火墙,若设置范围外会报错);
  4. docker run -p 3347:3306 --name dockermysql -v /opt/dockermysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=密码 -d mysql:latest
    ;官方文档mysql的挂载建议,这里的密码是docker的mysql密码,不是服务器的mysql
  5. 查看是否已经成功运行:
  6. 查看是否已经完成数据挂载:
  7. 用Navicat进行连接:
  8. 成功进入docker的mysql!

 

  ---------------------------------快速容器mysql挂载数据:匿名、具名挂载-------------------------------------

  1.  概念:想要快速进行挂载,不用关心在服务器的挂载位置,就可以进行匿名、具名挂载。
  2. 匿名挂载(不适用):只需要指定容器内的全路径,不用再关心容器外的挂载位置,因为在容器外可以通过命令去查看容器内挂载的数据位置。
  3. docker run -d -p 3344 --name nginx01 -v /ect/nginx nginx;匿名挂载nginx,只标识了容器内路径
  4. ---------常用----------
  5.  具名挂载(大多数时候使用):只需要指定容器内的全路径,不用再关心容器外的挂载位置,但是需要取名挂载的唯一标识名字,因为在容器外可以通过命令去查看容器内挂载的数据位置。
  6. docker run -d -p 3345 --name nginx02 -v litaonginx:/ect/nginx:ro nginx ;具名挂载nginx,只取了在数据目录的了唯一标识符名字。:ro或:rw的作用是,限定容器对该数据的写或读,防止容器内进行删除,但是服务器的数据也进行删除(因为是双向同步的)。如设置了:ro,只能通过服务器操作写删操作,容器内不能。
  7. docker volume ls;查看数据目录
  8. 通过具名挂载后:

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐