从零开始学习docker(九)持久化存储和数据共享之 bind Mounting

数据持久化的第一种方式Data Volume

使用Data Volume:

  • 首先在Dockerfile中定义 Volume ["/var/lib/mysql"],这个路径是容器中的路径,数据文件就存在这个路径下
  • 将这个路径映射到宿主机的硬盘上,通过-v选项
    • docker run -v mysql:/var/lib/mysql

使用Data Volume持久化的方式,是因为我们容器是一个数据源的产生地方,本身会产生文件和数据,而我们不想让我们的文件和数据随着容器的消失而消失,因此用这种方式持久化。

数据持久化的第二种方式Bind Mounting

这种方式和第一种方式的区别是:

  • Data Volume 需要在Dockerfile中定义需要创建的Volume,而Bink Mounting不需要,我们只需要在启动容器的时候指定本地的目录和容器中的目录的对应关系就可以了:
    • docker run -v /home/aaa:/root/aaa
    • 这样本地的目录文件和容器中的文件是同步的,如果本地的文件做了修改,那么容器中的文件也会修改。

​​​​​​​创建一个Dockerfile,内容如下:

FROM nginx:latest

WORKDIR /usr/share/nginx/html
COPY index.html index.html

这个可以将本地的index.html 拷贝到容器中的/usr/share/nginx/html下面,

index.html的内容如下:

<body>
<h1>hello docker !</h1>
</body>

执行build:

ocker build -t vincent/my-nginx .
Sending build context to Docker daemon  3.072kB
Step 1/3 : FROM nginx:latest
 ---> 719cd2e3ed04
Step 2/3 : WORKDIR /usr/share/nginx/html
 ---> Using cache
 ---> ebda8a0ae3aa
Step 3/3 : COPY index.html index.html
 ---> e3e9c5946773
Successfully built e3e9c5946773
Successfully tagged vincent/my-nginx:latest

创建一个容器:

docker run -d -p 80:80 --name web vincent/my-nginx
2cc59b89c8f4c2d60c65ad5b7490fec11c727f38a30c72a0d777209e2ea2b987

验证一下:

curl 127.0.0.1
<body>
<h1>hello docker !</h1>
</body>

说明可以访问!

删除这个容器:

docker rm -f web

重新创建容器,并且添加参数-v,将本地的一个文件映射到里面去:

docker run -d -v $(pwd):/usr/share/nginx/html -p 80:80 --name web vincent/my-nginx
ec423f40c66477471f38d8bc8a1002a1767e99d810b69b4c991446b9ced5fdea

$(pwd)表示当前路径。

进入到容器中,创建一个文件test.txt:

docker exec -it web /bin/bash
root@ec423f40c664:/usr/share/nginx/html# ls
Dockerfile  index.html
root@ec423f40c664:/usr/share/nginx/html# touch test.txt

退出后,在宿主机可以看到这个文件test.txt。修改文件内容,可以同步修改宿主机的内容,说明文件已经同步了。

因为我们的宿主机的目录$(pwd)和容器中的目录/usr/share/nginx/html是同步的。

 

转载于:https://my.oschina.net/duanvincent/blog/3068794

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值