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
     
     
  • 相关阅读:
    drf 三大认证详解
    管理表页面的创建
    电脑自动关机设置
    jwt 认证规则
    视图家族练习
    JQuery 数组获取和删除元素
    JQurey 添加和删除元素
    Java 占位符
    Redis
    线程
  • 原文地址:https://www.cnblogs.com/www1707/p/10468949.html
Copyright © 2011-2022 走看看