zoukankan      html  css  js  c++  java
  • docker 学习(3)

    docker和宿主之间的数据共享以及docker间的数据共享仍然是让人头疼和操心的地方。

    几个基本概念:

    docker: 一种容器管理技术,这里也指既有的开发工具链。

    container: 容器

    image: 镜像

    volum:卷 [ 译者:卷可以理解成计算机中的文件路径 ]

    容器中管理数据主要有两种方式:

    数据卷(Data Volumes)

    数据卷容器(Data Volume Containers)

    数据卷

    数据卷是一个可供容器使用的特殊目录,它绕过文件系统,可以提供很多有用的特性:

    1. 数据卷可以在容器之间共享和重用;
    2. 对数据卷的修改会立马有效;
    3. 对数据卷的更新,不会影响镜像;
    4. 卷会一直存在,直到没有容器使用。

    数据卷的使用,类似于Linux下对目录或文件进行mount操作。

    另:docker run参数详解

    docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

    OPTIONS说明:

    -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;

    -d: 后台运行容器,并返回容器ID;

    -i: 以交互模式运行容器,通常与 -t 同时使用;

    -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

    --name="nginx-lb": 为容器指定一个名称;

    --dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;

    --dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;

    -h "mars": 指定容器的hostname;

    -e username="ritchie": 设置环境变量;

    --env-file=[]: 从指定文件读入环境变量;

    --cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;

    -m :设置容器使用内存最大值;

    --net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;

    --link=[]: 添加链接到另一个容器;

    --expose=[]: 开放一个端口或一组端口;

    使用镜像nginx:latest以后台模式启动一个容器,将容器的80端口映射到主机的80端口,主机的目录/data映射到容器的/data

    docker run -p 80:80 -v /data:/data -d nginx:latest  

    使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。

    runoob@runoob:~$ docker run -it nginx:latest /bin/bash 

    root@b8573233d675:/# 

    挂载本地的目录到容器里

    docker run -v /data:/data -d ubuntu

    -v 用来指定挂载目录“:”前面的/data/为本地目录“:”后面的/data1/为容器里的目录不管是把容器停掉、还是删除,数据在本地还是存在的

    挂载数据卷

    docker run -itd -v /data/:/data1 ubuntu /bin/bash

    挂载目录的时候可以指定容器name,如果不指定就随机定义了。比如上面我们没有指定它,就生成了一个名字为tender_euclid,这个名字可以使用命令 Docker ps 看最右侧一列。

    docker run -itd --volumes-from tender_euclid ubuntu /bin/bash

    这样我们使用ubuntu镜像创建了新的容器,并且使用了tender_euclid容器的数据卷。

    数据卷容器

    定义数据卷容器

    有时候,我们需要多个容器之间相互共享数据,类似于linux里面的NFS。所以就可以搭建一个专门的数据卷容器,然后其他容器直接挂载该数据卷。

    首先建立数据卷容器

    docker run -itd -v /data/ --name testv ubuntu /bin/bash

    注意:这里的/data/是容器的/data目录,并非本地的/data/目录

    其他容器挂载该数据卷

    docker run -itd --volumes-from testv ubuntu /bin/bash

    注意:使用–volumes-from参数所挂载数据卷的容器自身并不需要保持在运行状态

     参考博客:http://www.jb51.net/article/97929.htm

  • 相关阅读:
    「干货分享」我所在团队的竞品分析模板--附下载
    框架用多了真的会死人的,spring-cloud全家桶与mybitais 集成完整示例(附下载)
    聊聊区块链,虽然我不挖矿!
    从厕所排队引发的产品设计方案思考
    基于spring-boot和docker-java实现对docker容器的动态管理和监控[附完整源码下载]
    Spring-boot原理(附带实现一个spring-boot-starter实例和代码下载)
    Zookeeper+websocket实现对分布式服务器的实时监控(附源码下载)
    「干货分享」模块化编程和maven配置实践一则
    【干货分享】大话团队的GIT分支策略进化史
    项目协作管理平台-teambition和tapd--深度体验
  • 原文地址:https://www.cnblogs.com/home123/p/7999451.html
Copyright © 2011-2022 走看看