当前位置: 首页> 健康> 科研 > 快速搭建网站前端_网页游戏大全4399_建站平台哪个比较权威_爱站网关键词挖掘工具

快速搭建网站前端_网页游戏大全4399_建站平台哪个比较权威_爱站网关键词挖掘工具

时间:2025/7/11 19:48:39来源:https://blog.csdn.net/m0_60889254/article/details/146474259 浏览次数:0次
快速搭建网站前端_网页游戏大全4399_建站平台哪个比较权威_爱站网关键词挖掘工具

 在生产环境中使用Docker时,经常需要对数据进行持久化,这就有点像Redis里面的持久性一样的,或者需要在多个容器之间在进行数据共享,这就是Docker中我们说的数据管理操作。

容器中管理数据主要有两种方式:

数据卷(Data Volumes):容器内数据直接映射到本地主机环境;

数据卷容器(Data Volume Containers):使用特定容器维护数据卷;

01数据卷

数据卷(Data Volumes)是一个可供容器使用的特殊目录,它可以将主机操作系统目录直接映射进容器,类似于Linux中的mount行为。

数据卷可以提供很多有用的特性:

  • 数据卷可以在容器之间共享和重用,容器间传递数据将变得高效与方便;

  • 对数据卷内数据的修改会立即生效,无论是容器内操作还是本地操作;

  • 对数据卷的更新不会影响镜像,解藕开应用和数据;

  • 卷会一直存在,直到没有容器使用,可以安全地卸载它。

目前Docker提供了三种不同的方式将数据从宿主机挂载到容器中。

图片

volume:

Docker管理宿主机文件系统的一部分,默认位于/var/lib/docker/volumes目录中,这是目前使用的最多的方式。

目前所有容器的数据都保存在这个目录下,由于没有创建指定卷,所以Docker帮默认创建了许多匿名卷。

bind mount:

表示可以存储在宿主机系统的任意位置,这种方法比较常用。但是bind mount在不同的宿主机系统时不可移植。

tmpfs mount:

表示挂载存储在宿主机系统内存中,而不会写入宿主机的文件系统,几乎不用。

02创建数据卷

Docker提供了volume子命令来管理数据卷,volume子命令的语法格式如下:

docker volume create [OPTIONS] [VOLUME]
    //创建一个自宝义容器卷root@ubuntu:/var/lib/docker/volumes# docker volume create my-vol//查看所有容器卷root@ubuntu:/var/lib/docker/volumes# docker volume lsDRIVER VOLUME NAMElocal badc300c2e02888929999ee56f2653983adc52a06b62e2b86f3a2ce6228b4ae4local my-vol//查看指定容器卷详细信息root@ubuntu:/var/lib/docker/volumes# docker volume inspect my-vol[{"CreatedAt": "2021-09-26T08:17:59-07:00","Driver": "local","Labels": {},"Mountpoint": "/var/lib/docker/volumes/my-vol/_data","Name": "my-vol","Options": {},"Scope": "local"}]//删除数据卷docker volume rm my-vol

    03绑定数据卷

    定义好数据卷后,即可以创建一个使用这个数据卷的容器,下面 nginx为例,将数据卷绑定到容器中。将本地的my-vol数据卷挂载到/usr/share/nginx/html目录下。

    root@uuntu:/var/lib/docker/volumes# docker run -it --name=test-nginx -p 80:80 -vlocal-test-vol:/usr/local/nginx/html nginx

    绑定完成后可以通过inspect命令来查看是否绑定成功。

    root@ubuntu:/var/lib/docker/volumes/local-test-vol/_data# docker inspect testnginx//inspect命令可以看到以下内容,由于内容比较多,所以只摘起核心内容"HostConfig": {"Binds": [ //这是绑定的数据卷信"local-test-vol:/usr/local/nginx/html"//这是挂载点的信息"Mounts": [{"Type": "volume","Name": "local-test-vol","Source": "/var/lib/docker/volumes/local-test-vol/_data","Destination": "/usr/local/nginx/html","Driver": "local","Mode": "z","RW": true,"Propagation": ""}]

    接下来在本地目录/var/lib/docker/volumes/local-test-vol数据卷就可以与容器中

    的/usr/local/nginx/html目录进行同步数据,进而达到持久化的效果。即不管是在本地数据卷中还是容器中的/usr/local/nginx/html目录中进行修改文件,两个目录的信息都可以互通。

    即使如果容器停止了,我们在本地更新文件,再将容器启动也可以实现数据同步。

    04Dockerfile添加数据卷

    除了使用-v选项来添加数据卷之外,也可以使用Dockerfile文件中的VOLUME命令来创建一个带数据卷的镜像。VOLUME 指令创建具有指定名称的挂载点,并将其标记为保存来自本地主机或其他容器的外部安装的数据卷。该值可以是 JSON 数组,VOLUME ["/var/log/"],也可以是带有多个参数的纯字符串,例如 VOLUME /var/log 或 VOLUME /var/log /var/db。

    使用Dockerfile创建带数据卷的镜像步骤如何下:

    1)创建一个Dockerfile文件

    任意一个目录下创建一个Dockerfile文件,Dockerfile文件内容如下:​​​​​​​

    FROM alpine:3.14//设置容器内的数据卷VOLUME ["/var/html"]EXPOSE 80

    2)使用build命令进行构建镜像​​​​​​​

    root@ubuntu:/home/test# docker build -t nginx:v1.0 .Sending build context to Docker daemon 8.65MBStep 1/3 : FROM alpine:3.143.14: Pulling from library/alpinea0d0a0d46f8b: Pull completeDigest: sha256:e1c082e3d3c45cccac829840a25941e679c25d438cc8412c2fa221cf1a824e6aStatus: Downloaded newer image for alpine:3.14---> 14119a10abf4Step 2/3 : VOLUME ["/var/html"]---> Running in baa52a8c37bdRemoving intermediate container baa52a8c37bd---> 83ba81539ce7Step 3/3 : EXPOSE 80---> Running in b0b0efd15aa3Removing intermediate container b0b0efd15aa3---> d10277ba6308Successfully built d10277ba6308Successfully tagged nginx:v1.0​​​​​​​
    root@ubuntu:/home/test# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEnginx v1.0 d10277ba6308 23 minutes ago 5.6MBnginx latest ad4c705f24d3 2 weeks ago 133MBalpine 3.14 14119a10abf4 4 weeks ago 5.6MB其中nginx标签为v1.0的是我们使用Dockerfile新建的镜像

    使用inspect命令可以查看该镜像的详细信息,在该镜像的详细信息中可以看到数据卷的信息。​​​​​​​

    root@ubuntu:/home/test# docker inspect d10277ba6308"Volumes": {"/var/html": {}},

    3)使用刚创建的镜像创建并运行一个容器​​​​​​​

    //创建一个容器,用的镜像为Dockerfile文件创建的镜像root@ubuntu:/home/test# docker run -it --name nginx-v1.0 d10277ba6308//查看创建容器的详细信息root@ubuntu:/home/test# docker inspect nginx-v1.0

    05数据卷容器

    如果用户需要在多个容器之间共享一些持续更新的数据,最简单的方式是使用数据卷容器。数据卷容器也是一个容器,但是它的目的是专门提供数据卷给其他容器挂载。

    1)创建一个父容器

    创建方法跟之前类似;

    2)再创建一个容器,并使用volumes-from选项来创建一个依赖于父容器的容器。​​​​​​​

    //创建一个依赖容器root@ubuntu:/var/lib/docker/volumes# docker run -it --name nginx-dc2 --volumesfromtest-nginx nginx//查看刚创建的容器详细信息root@ubuntu:/home/test# docker inspect 41530b76bebf//可以看到会自动继承挂载的信息"Mounts": [{"Type": "volume","Name": "local-test-vol","Source": "/var/lib/docker/volumes/local-test-vol/_data","Destination": "/usr/local/nginx/html","Driver": "local","Mode": "","RW": true,"Propagation": ""}]

    挂载数据卷完成后,在父容器test-nginx或继承容器nginx-dc2中的任意一个容器更新、删除文件,都可以同步到另外一个容器中。

    关键字:快速搭建网站前端_网页游戏大全4399_建站平台哪个比较权威_爱站网关键词挖掘工具

    版权声明:

    本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

    我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

    责任编辑: