zoukankan      html  css  js  c++  java
  • docker学习六:数据卷

    一、什么是容器数据卷

     1、数据卷出现原因:将应用和环境打包成一个镜像。但数据放到容器中,容器关闭,数据会丢失。为了数据持久化,希望可以将容器内的数据存放到本地,容器之前,容器和本地可以实现数据共享,出现了数据卷。

    2、数据卷:将容器内的目录,挂载到linux,宿主机上。可以实现容器的持久化和同步操作,容器间也可以数据共享

    二、使用数据卷

    (一)、使用命令挂载  ----使用多个-v可以挂载多个目录

    语句:-v 主机目录:容器内目录

    案例:docker run -d -it --name centos1 -v /home/ceshi:/home centos /bin/bash-----将容器home目录挂载到linux本机的ceshi文件夹

               验证是否挂载成功

              docker inspect 容器id-----出现红框内的数据说明挂载成功

             

            实现1,在容器内home文件夹创建文件,ceshi文件夹也会有

            实验2,停止容器,在ceshi文件夹中编写文件内容,容器内home文件夹也会有

        3、数据卷好处:修改配置只需要在服务器上修改,容器会自动同步

    (二)、使用dockerfile文件挂载

    一、自己构建一个镜像

    1、创建一个dockerfile文件,名字可以随机,建议Dockerfile-----mkdir创建文件夹

    2、vim dockerfile :打开文件编辑,编辑命令如下

       FROM centos

      VOLUME["volume01","volume02"]

       CMD echo"---end---"

        CMD /bin/bash

    3,构建镜像

    docker build -f home/docker-test-volume/dockerfile1 -t kuangshen/centos:01 .

    参数解释:-f 生成镜像名字的路径

                     -t 生成的镜像名,后面的点表示在当前目录生成镜像

    通过这种方式,将挂载写到生成镜像的文件里,构建时会自动挂载卷,匿名挂载。如果文件里没有写,才需要通过-v命令挂载

    三、实战演练---部署mysql

    1、下载镜像mysql

    docker pull mysql:5.7

    2、运行时做数据挂载

    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=123456 --name mysql101 mysql:5.7

    参数解释:-d----后台运行

                      -p------端口映射

                      -v ------数据卷

                     -e-------配置环境

                          --name---------命名

    四、具名挂载和匿名挂载

    匿名挂载:-v 容器内路。只写容器内路径,不写容器外路径,叫匿名挂载

           

    具名挂载:-v 卷名:容器路径-----只写容器外名字,不写路径,写容器路径,叫具名挂载

    查看挂载卷的路径

    docker volume inspect 卷名

    注:所有docker内的卷没有指定目录的情况下,都在/var/lib/docker/volumes/xxxx

    容器挂载一般都使用具名挂载

    ###如何确定是具名挂载还是匿名挂载

    -v 容器内路径 # 匿名挂载

    -v 卷名:容器内路径 #具名挂载

    -v 主机路径:容器内路径#指定挂载

    拓展:

     docker run -d -p --name niginx01 -v juming-nginx:/etc/nginx:ro nginx

    docker run -d -p --name niginx01 -v juming-nginx:/etc/nginx:rw nginx

    ro :readonly  #只读,一旦文件打开有ro,说明文件只能通过宿主机操作,容器内部无法操作

    rw:readwrite#可读可写

  • 相关阅读:
    11.关于django的content_type表
    6.re正则表达式
    1.关于python 的hmac加密
    4.瀑布流js
    10.django的一些方法理解
    7.一些比较有用的网站
    准备辞职了,走之前想解决的问题ptr 为空
    Oracle 代码生成小工具免费下载
    Js 中一个判断类型的方法
    jQuery 加上最后自己的验证
  • 原文地址:https://www.cnblogs.com/xiaoyuer2121/p/13939933.html
Copyright © 2011-2022 走看看