zoukankan      html  css  js  c++  java
  • 041、如何共享数据(2019-03-04 周一)

     
    共享数据是volume的关键特性,本节我们将详细讨论通过volume如何在容器和host之间,容器和容器之间共享数据。
     
    容器和host共享数据
     
    我们有两种类型的data volume,他们均可实现在容器和host之间共享数据,但方式有所区别。
     
    对于bind mount 是非常明确的:直接将要共享的目录mount到容器
     
    而docker managed volume就要麻烦点。由于volume 位于host中的目录,是在容器启动时才生成的,所以需要将共享数据拷贝到volume中
     
    1、使用docker cp命令将host上的文件复制到容器中
     
    root@docker-lab:~/041# cat index.html
    Docker CP test file
    root@docker-lab:~/041# docker run -d -p 80:80 -v /usr/local/apache2/htdocs  httpd
    6df13e36a3cb2dbc25cd057a208342088b737900629bc30b6ded4c84385b70c1
    root@docker-lab:~/041# curl http://127.0.0.1
    <html><body><h1>It works!</h1></body></html>
    root@docker-lab:~/041# docker cp index.html 6df13e36a3:/usr/local/apache2/htdocs
    root@docker-lab:~/041# curl http://127.0.0.1
    Docker CP test file
     
    2、使用 linux cp命令将文件复制到host的 volume目录
     
    root@docker-lab:~/041# docker inspect 6df -f '{{.Mounts}}'
    [{volume dd24468787a957f848f3d5175be447d7487188eccea27822a17bdf83bad8caef /var/lib/docker/volumes/dd24468787a957f848f3d5175be447d7487188eccea27822a17bdf83bad8caef/_data /usr/local/apache2/htdocs local  true }]
    root@docker-lab:~/041# cp index.html /var/lib/docker/volumes/dd24468787a957f848f3d5175be447d7487188eccea27822a17bdf83bad8caef/_data/index.html
     
    容器之间共享数据
     
    第一种方法是将共享数据放在bind mount中,然后将其mount到多个容器。以httpd容器为例,三个httpd容器组成web server集群,他们使用相同的html
     
    root@docker-lab:~/041# pwd
    /root/041
    root@docker-lab:~/041# ls
    index.html
    root@docker-lab:~/041# cat index.html
    Docker CP test file
    root@docker-lab:~/041# docker run --name web01 -d -p 80 -v /root/041:/usr/local/apache2/htdocs httpd
    742c77ace61b76afa84fea5d389aed28d1a0a2bf37bf7a19b901da9c1fd3060f
    root@docker-lab:~/041# docker run --name web02 -d -p 80 -v /root/041:/usr/local/apache2/htdocs httpd
    3f6b31d9108df97d68e5e78b197ab024df0c42263992d396919be5898d8d55af
    root@docker-lab:~/041# docker run --name web03 -d -p 80 -v /root/041:/usr/local/apache2/htdocs httpd
    2ef46e6ccf29ba5c43ccf69041c332fe0a9277f5004596aaa1bf759e669d6b5c
    root@docker-lab:~/041# docker ps
    CONTAINER ID        IMAGE               COMMAND              CREATED             STATUS              PORTS                   NAMES
    2ef46e6ccf29        httpd               "httpd-foreground"   3 seconds ago       Up 2 seconds        0.0.0.0:32773->80/tcp   web03
    3f6b31d9108d        httpd               "httpd-foreground"   9 seconds ago       Up 8 seconds        0.0.0.0:32772->80/tcp   web02
    742c77ace61b        httpd               "httpd-foreground"   14 seconds ago      Up 14 seconds       0.0.0.0:32771->80/tcp   web01
    root@docker-lab:~/041# curl http://127.0.0.1:32771
    Docker CP test file
    root@docker-lab:~/041# curl http://127.0.0.1:32772
    Docker CP test file
    root@docker-lab:~/041# curl http://127.0.0.1:32773
    Docker CP test file
    root@docker-lab:~/041# echo 'Docker CP test file 2' > index.html
    root@docker-lab:~/041# curl http://127.0.0.1:32771
    Docker CP test file 2
    root@docker-lab:~/041# curl http://127.0.0.1:32772
    Docker CP test file 2
    root@docker-lab:~/041# curl http://127.0.0.1:32773
    Docker CP test file 2
     
     
  • 相关阅读:
    函数式编程思想:不变性
    如何制作JQuery Plugin 插件【插件参数的配置】
    jQuery Mobile 中文手册 Ajax开发版——初始化部分
    转载:真实的用户,真实的中国互联网
    创建自定义的jQuery移动主题
    HTML5 LocalStorage 本地存储
    Safari调试工具
    为什么项目经理拿的钱比程序员多?
    移动浏览器项目WebApp需要jQuery吗?移动设备放弃jQuery的理由
    HTML5设计原则
  • 原文地址:https://www.cnblogs.com/www1707/p/10468949.html
Copyright © 2011-2022 走看看