• Docker学习笔记三


    4.Docker数据管理

    4.1.数据卷

    数据卷是一个可供容器使用的特殊目录,它将主机操作系统目录直接映射进容器,类似与Linux的mount行为。

    特性:

    1. 数据卷可以在容器之间共事和重用,容器间传递数据将变得高效与方便;
    2. 对数据卷内数据的修改会立马生效,无论是容器内操作还是本地操作;
    3. 对数据卷的更新不会影响镜像,解摘开应用和数据;
    4. 卷会一直存在 ,直到没有容器使用,可以安全地卸载它。

    相关用法:

    Usage:	docker volume COMMAND
    Manage volumes
    Options:
          --help   Print usage
    Commands:
      create      Create a volume
      inspect     Display detailed information on one or more volumes
      ls          List volumes
      prune       Remove all unused volumes
      rm          Remove one or more volumes
    

    4.1.1.创建数据卷

    命令:docker volume create 数据卷名

    Usage:	docker volume create [OPTIONS] [VOLUME]
    Create a volume
    Options:
      -d, --driver string   Specify volume driver name (default "local")
          --help            Print usage
          --label list      Set metadata for a volume (default [])
      -o, --opt map         Set driver specific options (default map[])
    

    4.1.2.绑定数据卷

    在使用docker run命令运行容器的时候,可以使用-mount命令绑定数据卷

    命令:docker run [options] --mount type=类型,source=主机真实绝对路径,target=docker虚拟路径

    type有以下三种类型:

    1. volume:普通数据卷,映射到主机/var/lib/docker/volumes路径下,如果使用此种类型,source参数则不需要写。
    2. bind:绑定数据卷,映射到主机指定路径下
    3. tmpfs:临时数据卷,只映射到内存中

    这里如果docker版本太旧的话会不支持-mount命令,使用mount命令时,需要保证主机映射的指定文件存在,如果不存在则会报错

    这里还有一个相似的命令也可以绑定数据卷

    命令:docker run [options] -v 主机真实绝对路径:docker虚拟路径 镜像名/镜像ID

    这个命令如果主机映射文件不存在,会自动创建不会报错

    Docker 挂载数据卷的默认权限是读写(rw),用户也可以通过 ro 指定为只读,即在虚拟路径后加:ro

    命令:docker run [options] -v 主机真实绝对路径:docker虚拟路径:ro 镜像名/镜像ID

    以上的主机真实绝对路径也可以换为docker volume create命令创建的数据卷的名称,会自动映射到已创建的数据卷的路径

    4.2.数据卷容器

    如果用户需要在多个容器之间共享一些持续更新的数据,最简单的方式是使用数据卷容器。 数据卷容器也是一个容器,但是它的目的是专门提供数据卷给其他容器挂载。

    先使用docker run -it -v docker虚拟路径 --name 容器名 镜像名/镜像ID命令创建一个数据卷容器

    然后就可以用--volumes-from 容器名命令来挂载之前创建的容器的数据卷中的内容

    4.3.使用数据卷容器迁移数据

    可以利用数据卷容器对其中的数据卷进行备份、恢复,以实现数据的迁移。

    4.3.1.备份

    docker run -it --volumes-from volumecontainer -v $(pwd):/backup --name worker mycentos:test tar cvf /backup/backup.tar /volume

    这条命令可以分解着看:

    -volumes-from是挂载数据卷容器的数据卷即volume文件夹

    -v $(pwd):/backup是将宿主机的当前真实路径挂载到容器中的backup文件夹下

    然后创建完容器后执行tar cvf /backup/backup.tar /volume命令,将volume文件夹压缩到容器的backup文件夹下,又因为这个文件夹是挂载的宿主机当前文件夹,所以宿主机也出现了压缩包

    4.3.2.恢复

    原理跟备份差不多,只不过前者是压缩,后者是解压

    5.端口映射与容器互联

    5.1.端口映射实现容器访问

    启动容器时,如果如果不指定对应参数,在容器外部是无法通过网络来访问容器内的网络应用和服务的。可以使用-p-P参数来指定端口映射。

    当使用-P(大写)标记时,Docker会随机映射一个端口到内部容器开放的接口,例如:

    当使用-p(小写)标记时,可以指定端口进行映射,支持的格式有:

    将容器指定端口映射到主机随机端口,会绑定本地接口上的所有地址:ContainerPort

    将容器指定端口映射到主机指定端口,会绑定本地接口上的所有地址:HostPort:ContainerPort

    将容器ip和指定端口随机映射到主机上:IP::ContainerPort

    将容器ip和指定端口映射到主机指定端口上:IP:HostPort:ContainerPort

    还可以用多次-p来绑定多个端口以及使用udp标记来指定udp端口

    5.2.互联机制实现便捷互访

    容器的互联是一种让多个容器中的应用进行快速交互的方式,它会在源和接收容器之间创建连接关系,接收容器可以通过容器名快速访问到源容器,而不用指定具体的IP地址。

    使用--link参数可以让容器之间安全地进行交互,参数的格式为:--line name:alias,name是要连接容器地名称,alias是别名。

    可以看出连接之后,可以ping通连接的容器,环境变量也能够查找到。此时如果base容器里面的环境变量更新,也会同步到link容器。

    6.DockerFile

    具体参考

    百衲本——Dockerfile文件详解

  • 相关阅读:
    QT启动画面不显示
    指针运算,终于明白了
    sourceforge 优秀 开源 项目 介绍
    ios验证邮箱格式
    获取手机当前经纬度的方法
    将UIImageView改成圆角和圆形
    Extensible Messaging and Presence Protocol (XMPP) 的实现
    导入libxml2.dylib时出问题
    Extensible Messaging and Presence Protocol (XMPP) 简介
    XMPPFramework 常用api包简介
  • 原文地址:https://www.cnblogs.com/ys1109/p/12218765.html
Copyright © 2020-2023  润新知