docker学习笔记之数据管理

docker 的数据管理

       前面对网络管理,也就是端口映射做了一些介绍,下来对数据的管理做做介绍,首先是数据卷,接着是数据卷容器。

数据卷

    -v  /data
    -v  src:dst

首先启动一个容器。
# docker run -it -h localhost --name volumes-test1 -v /data  centos 
# -i 终端打开
# -t 提供一个终端
# -h 提供一个主机名
# -v 数据卷 
# --name 提供一个名字

进入容器之后就可以看到有一个data目录。
[root@localhost /]# ls /
anaconda-post.log  bin  data  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@localhost /]# ls -ld /data
drwxr-xr-x. 2 root root 6 May 19 02:54 /data
[root@localhost /]# ls /data
[root@localhost /]# 

其实这个容器中的data目录被映射到了宿主机上的一个目录上。
查看这个目录。
# docker inspect -f {{.Volumes}} volumes-test1

Template parsing error: template: :1:2: executing "" at <.Volumes>: map has no entry for key "Volumes"

# docker inspect -f {{.Config.Volumes}} volumes-test1
map[/data:{}]


很奇怪,不知道为什么报这样的错误。按照网上的做法,直接查看全局的信息。
# docker inspect volumes-test1|grep mounts -iA 10
        "Mounts": [
            {
                "Type": "volume",
                "Name": "a69026e729a8b176f840cf0313394016cb69356e02287c699d7858afdf67ce3d",
                "Source": "/var/lib/docker/volumes/a69026e729a8b176f840cf0313394016cb69356e02287c699d7858afdf67ce3d/_data",
                "Destination": "/data",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }


由上可知,目录对应的是
/var/lib/docker/volumes/a69026e729a8b176f840cf0313394016cb69356e02287c699d7858afdf67ce3d/_data
那么,上面的那个目录其实写进什么东西,容器中的那个目录也会写入一些东西的。

复制一些东西进来。
# cd /var/lib/docker/volumes/a69026e729a8b176f840cf0313394016cb69356e02287c699d7858afdf67ce3d/_data
# cp /etc/centos-release .

进入容器中查看。
# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
af89cada0632        centos              "/bin/bash"         11 minutes ago      Exited (0) 7 minutes ago                       volumes-test1
# docker start af
af
# docker attach af
[root@localhost /]# ls /data
centos-release
[root@localhost /]# cat /data/centos-release 
CentOS Linux release 7.3.1611 (Core) 
[root@localhost /]# 

看到了吧,目录映射了。
而 src:dst 就和网络映射一个道理,可以直接将真机的目录映射到容器中。
# docker run -d -h nginx --name nginx -p 8000:80 -v /var/www/html:/usr/share/nginx/html nginx
37b798573793d33e531b6c50f9030371ca44e7c26c60405216f959722333c166

这里不但做了端口映射,还做了目录映射, 直接修改真机的 /var/www/html就可以直接改变容器中的发布页面了。
真机的apache和容器中的nginx。
[root@lol html]# curl localhost
<h1>Hello,World</h1>
[root@lol html]# curl localhost:8000
<h1>Hello,World</h1>
[root@lol html]# 

内容是一样的。同步的。
[root@lol html]# curl -I localhost
HTTP/1.1 200 OK
Date: Fri, 19 May 2017 03:30:15 GMT
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.1e-fips mod_fcgid/2.3.9 PHP/5.4.16
Last-Modified: Fri, 19 May 2017 03:24:05 GMT
ETag: "15-54fd80db8b3dc"
Accept-Ranges: bytes
Content-Length: 21
Content-Type: text/html; charset=UTF-8

[root@lol html]# curl -I localhost:8000
HTTP/1.1 200 OK
Server: nginx/1.13.0
Date: Fri, 19 May 2017 03:30:20 GMT
Content-Type: text/html
Content-Length: 21
Last-Modified: Fri, 19 May 2017 03:24:05 GMT
Connection: keep-alive
ETag: "591e6555-15"
Accept-Ranges: bytes


还可以直接只读挂载。
# docker run -d -h nginx --name nginx -p 8000:80 -v /var/www/html:/usr/share/nginx/html:ro nginx


开始第二种吧

数据卷容器

    作用就是把先前挂载过的卷的容器的那个挂载点,再挂到新的容器上来。
# docker run -it --name volumes-test2 -h localhost --volumes-from volumes-test1 centos
[root@localhost /]# ls /data
centos-release
[root@localhost /]# 


先前的那个volumes-test1 不是挂了一个/data吗?相当于容器之间可以共享。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当谈到Docker学习笔记时,我可以为你提供一些基本的指导和主题,以帮助你开始学习Docker。以下是一些可能涵盖的主题: 1. Docker简介:了解Docker的基本概念、优势以及它如何与虚拟化技术不同。 2. Docker安装:学习如何在不同的操作系统上安装Docker,并熟悉Docker引擎的组成部分。 3. Docker镜像:了解Docker镜像的概念,以及如何通过构建、拉取和推送镜像来管理和共享容器环境。 4. Docker容器:学习如何创建、启动、停止和删除容器,并了解容器和主机之间的交互方式。 5. Docker网络:探索Docker网络模式,包括桥接网络、主机网络和覆盖网络,并理解容器之间以及容器与主机之间的通信方式。 6. Docker存储:了解Docker存储技术,包括数据卷和绑定挂载,并学习如何在容器中持久化数据。 7. Docker Compose:介绍Docker Compose工具,它可以用于定义和运行多个容器的应用程序。 8. Docker Swarm:探索Docker Swarm,它是Docker官方的容器编排和集群管理工具,于在多个主机上部署和管理容器应用。 9. Docker和持续集成/持续部署(CI/CD):了解如何将Docker与CI/CD工具(如Jenkins、GitLab CI等)集成,以简化应用程序的构建和部署过程。 这只是一些可能的主题,你可以根据自己的需求和兴趣来选择学习内容。希望这些指导可以帮助你开始学习Docker!如果你有任何特定的问题,我很乐意回答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值