怎么理解docker持久化存储和数据共享
本篇内容主要讲解"怎么理解docker持久化存储和数据共享",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么理解docker持久化存储和数据共享"吧!
数据持久化的第一种方式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:latestWORKDIR /usr/share/nginx/htmlCOPY index.html index.html
这个可以将本地的index.html 拷贝到容器中的/usr/share/nginx/html下面,
index.html的内容如下:
hello docker !
执行build:
ocker build -t vincent/my-nginx .Sending build context to Docker daemon 3.072kBStep 1/3 : FROM nginx:latest ---> 719cd2e3ed04Step 2/3 : WORKDIR /usr/share/nginx/html ---> Using cache ---> ebda8a0ae3aaStep 3/3 : COPY index.html index.html ---> e3e9c5946773Successfully built e3e9c5946773Successfully tagged vincent/my-nginx:latest
创建一个容器:
docker run -d -p 80:80 --name web vincent/my-nginx2cc59b89c8f4c2d60c65ad5b7490fec11c727f38a30c72a0d777209e2ea2b987
验证一下:
curl 127.0.0.1hello docker !
说明可以访问!
删除这个容器:
docker rm -f web
重新创建容器,并且添加参数-v,将本地的一个文件映射到里面去:
docker run -d -v $(pwd):/usr/share/nginx/html -p 80:80 --name web vincent/my-nginxec423f40c66477471f38d8bc8a1002a1767e99d810b69b4c991446b9ced5fdea
$(pwd)表示当前路径。
进入到容器中,创建一个文件test.txt:
docker exec -it web /bin/bashroot@ec423f40c664:/usr/share/nginx/html# lsDockerfile index.htmlroot@ec423f40c664:/usr/share/nginx/html# touch test.txt
退出后,在宿主机可以看到这个文件test.txt。修改文件内容,可以同步修改宿主机的内容,说明文件已经同步了。
因为我们的宿主机的目录$(pwd)和容器中的目录/usr/share/nginx/html是同步的。
到此,相信大家对"怎么理解docker持久化存储和数据共享"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!