zoukankan      html  css  js  c++  java
  • Docker :容器数据卷 /Docker File

    容器数据卷

    容器中的数据了类似于内存中的数据,如果关闭容器,容器中的数据将会丢失。所以要使用容器数据卷
    容器数据卷:保存 容器产生的数据。例如:

    卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过Union File System提供一些用于持续存储或共享数据的特性:

    卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷

    特点:

    1:数据卷可在容器之间共享或重用数据

    2:卷中的更改可以直接生效

    3:数据卷中的更改不会包含在镜像的更新中

    4:数据卷的生命周期一直持续到没有容器使用它为止

    作用:容器持久化,容器间继承+数据共享

     命令添加 容器数据卷

    命令 :docker run -it -v /宿主机的绝对目录:/容器内的目录 镜像名 

    docker run -it -v /dockerdata/nginx.conf:/dockerdata/nginx.conf nginx

    备注:目录不用手动建立,系统自动建立目录
    docker run -it -v /宿主机的绝对目录:/容器内的目录:ro 镜像名
    备注:宿主机可以读写数据,而容器只能读数据,而不能写数据

    docker run -it -v /宿主机的绝对目录:/容器内的目录   镜像名 
     "Mounts": [
                {
                    "Type": "bind",
                    "Source": "/dockerdata/nginx.conf",
                    "Destination": "/dockerdata/nginx.conf",
                    "Mode": "",
                    "RW": true,
                    "Propagation": "rprivate"
                }
            ],
    
    docker run -it -v /宿主机的绝对目录:/容器内的目录:ro   镜像名  
      "Mounts": [
                {
                    "Type": "bind",
                    "Source": "/dockerdata/nginx.conf",
                    "Destination": "/dockerdata/nginx.conf",
                    "Mode": "ro",
                    "RW": false,
                    "Propagation": "rprivate"
    docker inspect 正在运行容器id

    dockerfile 添加容器数据卷

    1、现在根目录新建一个文件夹 /mydocker
    2、可在dockerfile中使用volume指令给镜像添加一个或者多个数据卷
    3、dockerfile构建

    cd /mydockerfile
    vim Dockerfiel 
    #volume testfile
    FROM centos 
    #继承centos父类
    VOLUME [“/dataVoluemContainer1”,“/dataVoluemContainer2”]
    #根目录新建2个容器卷,记得双引号,单引号会有问题
    CMD echo "finished,------success"
    #打印日志
    CMD /bin/bash
    [root@localhost mydocker]# docker build -f /mydocker/Dockerfile -t sjc/centos .
    Sending build context to Docker daemon  2.048kB
    Step 1/4 : FROM centos
     ---> 470671670cac
    Step 2/4 : VOLUME ['/dataVoluemContainer1','/dataVoluemContainer2']
     ---> Running in 6259cd79ab12
    Removing intermediate container 6259cd79ab12
     ---> d01ed2a7f418
    Step 3/4 : CMD echo "finished,------success"
     ---> Running in 460f4c4877e5
    Removing intermediate container 460f4c4877e5
     ---> 4910d0b15aee
    Step 4/4 : CMD /bin/bash
     ---> Running in 2134da60988f
    Removing intermediate container 2134da60988f
     ---> faadd24be86c
    Successfully built faadd24be86c
    Successfully tagged sjc/centos:latest
    构建过程

    4、build后生成镜像---获得新镜像

    docker build -f /mydocker/Dockerfile -t xfd/centos .

    5、run容器。

    [root@localhost mydocker]# docker run -it xfd/centos
    [root@d5536831ffe8 /]# dir
    bin  dataVoluemContainer1  dataVoluemContainer2  dev  etc  home  lib  lib64  lost+found  media    mnt  opt  proc    root  run  sbin  srv  sys 

    6、宿主机容器卷的目录在哪里??

            "Mounts": [
                {
                    "Type": "volume",
                    "Name": "0a38840cb8bbb0100bf001e703790dbfc3d04651c486dd15d6073ff33e56e0a6",
                    "Source": "/var/lib/docker/volumes/0a38840cb8bbb0100bf001e703790dbfc3d04651c486dd15d6073ff33e56e0a6/_data",
                    "Destination": "/dataVoluemContainer1",
                    "Driver": "local",
                    "Mode": "",
                    "RW": true,
                    "Propagation": ""
                },
                {
                    "Type": "volume",
                    "Name": "c70de6f751066c9e27d72895ca1cd38a6f44c8dfb5f84374b2d4712cc51931a5",
                    "Source": "/var/lib/docker/volumes/c70de6f751066c9e27d72895ca1cd38a6f44c8dfb5f84374b2d4712cc51931a5/_data",
                    "Destination": "/dataVoluemContainer2",
                    "Driver": "local",
                    "Mode": "",
                    "RW": true,
                    "Propagation": ""
                }
    docker inspect 正在运行容器id

    容器间传递共享

    启动多个上面运行的容器

    docker run -it --name centos1  xfd/centos  (父容器)
    docker run -it --name centos2 --volumes-from centos1 xfd/centos
    docker run -it --name centos3 --volumes-from centos1 xfd/centos

    容器之间配置信息的传递,数据卷的生命周期一直持续到没有容器使用它为止。

    dockerfile

    人生苦短,我用Python
  • 相关阅读:
    Maven配置与创建
    JDBCTemplate执行增删改查(CDUR)操作
    事务(Transaction)
    sql批处理(batch)的简单使用
    基于XML配置的AOP实现日志打印
    简单的aop实现日志打印(切入点表达式)
    SpringMVC下文件的上传与下载以及文件列表的显示
    @RequestMapping映射请求,@PathVariable,@RequestParam,@RequestHeader的使用
    SpringMvc的异常处理
    SpringMVC的HelloWorld快速入门!
  • 原文地址:https://www.cnblogs.com/sunjinchao/p/12673255.html
Copyright © 2011-2022 走看看