Docker容器挂载

article/2025/9/9 1:40:07

docker的理念:将应用和环境打包成一个镜像!通过镜像启动容器运行
问题:在容器中存储的程序数据是需要持久化的,不能容器删了数据也随之删除。比如,安装一个MySQL容器,在其中存储了大量数据,结果把容器删了数据也没了,就相当于删库跑路,这是不可能发生的
数据卷技术的引入:我们希望Docker容器产生的数据可以自动同步到本地,这样容器删了数据并不会丢失;同时数据也可在容器之间共享。这就是卷技术,也就是目录的挂载,将容器内的目录挂载到linux上
在这里插入图片描述
总结:容器的持久化和同步操作!容器间也可以实现数据共享!

使用数据卷

docker run -it -v 主机目录:容器内目录

测试:

# docker run -it -v /home/test:/home centos /bin/bash

启动之后可以用docker inspect查看容器详细信息,可以看到挂载的信息

# docker inspect 3e7c547f28bf

在这里插入图片描述
我们开两个窗口分别进入相对应挂载的目录,在容器内/home目录下新建一个文件,在主机/home/test目录下同步出现该文件
在这里插入图片描述
然后我们去编辑linux系统目录下的cxz.text文件 可以看到容器里面的文件也跟着一起编辑了 这就是挂载的作用
在这里插入图片描述
在这里插入图片描述

实战:安装MySQL

[root@ecs-98457 ~]# docker pull mysql:5.7
5.7: Pulling from library/mysql
72a69066d2fe: Pull complete 
93619dbc5b36: Pull complete 
99da31dd6142: Pull complete 
626033c43d70: Pull complete 
37d5d7efb64e: Pull complete 
ac563158d721: Pull complete 
d2ba16033dad: Pull complete 
0ceb82207cd7: Pull complete 
37f2405cae96: Pull complete 
e2482e017e53: Pull complete 
70deed891d42: Pull complete 
	启动mysql容器-d 后台运行-p 端口映射-v 卷挂载-e 环境配置--name 容器名字
[root@ecs-98457 ~]# docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7

启动之后,我们本机连接一下试试,记得打开阿里云服务器安全组设置的3310端口
在这里插入图片描述
我们再新建一个testcxz库
在这里插入图片描述
可以看到在宿主机上的data目录上也新建了testcxz库

具名和匿名挂载

匿名挂载

# 匿名挂载: -v:容器内路径(没有写容器外路径)
docker run -d -P --name nginx01 -v /etc/nginx nginx# 查看所有volume的情况
docker volume ls

具名挂载(常用)

# 具名挂载: -v 卷名:容器内路径
docker run -d -P --name nginx02 -v specific-nginx:/etc/nginx nginx# 查看所有volume的情况
docker volume ls# 查specific-nginx卷的具体信息
docker volume inspect specific-nginx

所有docker容器内的卷,没有指定目录情况下都是在/var/lib/docker/volumes/卷名/_data下

在这里插入图片描述

拓展

# 通过 容器内路径:ro/rw 限制读写权限
ro:read only 	只读,该路径文件只能通过宿主机来操作,容器内无法操作
rw:read write	可读可写docker run -d -P --name nginx02 -v specific-nginx:/etc/nginx:ro nginx
docker run -d -P --name nginx02 -v specific-nginx:/etc/nginx:rw nginx

Dockerfile

Dockerfile就是用来构建 docker 镜像的构建文件,就是一段命令脚本,通过这个脚本可以生成一个镜像
通过这个脚本可以生成镜像,镜像是一层一层的,脚本中就是一个个命令,每个命令对应一层
在这里插入图片描述

基础知识:
每个保留关键字(指令)都必须是大写字母
执行顺序从上往下顺序执行
#代表注释
每条指令都会创建并提交一个新的镜像层
在这里插入图片描述
DockerFile是面向开发的,逐渐成为企业交付的标准,以后发布项目就是打包成一个镜像,就需要编写dockerfile文件,十分简单!
dockerFile:构建文件,定义了一切步骤,源代码
dockerImages:通过dockerFile构建生成的镜像,最终发布的运行的产品
docker容器:容器就是镜像运行起来提供服务器

构建步骤:
编写一个dockerfile文件
docker build 构建成一个镜像
docker run 运行镜像
docker push 发布镜像(DockerHub、阿里云镜像仓库)
dockerHub:https://hub.docker.com/

#home目录下创建docker-test-volume目录
[root@ecs-98457 home]# mkdir docker-test-volume#进入 docker-test-volume 编辑dockerfile2脚本文件
[root@ecs-98457 home]# ls
docker-test-volume  mysql  test  test.java
[root@ecs-98457 home]# cd docker-test-volume/
[root@ecs-98457 docker-test-volume]# vim dockerfile2
# 创建一个dockerfile文件FROM centosVOLUME ["volume01","volume02"]CMD echo "----end----"CMD /bin/bash

在这里插入图片描述

#构建自己的容器
[root@ecs-98457 docker-test-volume]# docker build -f dockerfile2 -t cxz/centos:1.0 .

在这里插入图片描述
下面就显示我们的容器构建成功了
在这里插入图片描述

#我们来通过自己创建的镜像启动容器,查看其中的内容,可以看到生成镜像时自动挂载的数据卷目录volume01和volume02
[root@ecs-98457 /]# docker run -it cxz/centos:1.0 /bin/bash

在这里插入图片描述
这两个数据卷一定与外部有一个同步的目录!且我们设置的是匿名挂载

[root@ecs-98457 ~]# docker ps
CONTAINER ID   IMAGE            COMMAND                  CREATED         STATUS         PORTS                                                  NAMES
7563349b292c   cxz/centos:1.0   "/bin/bash"              6 seconds ago   Up 6 seconds                                                          dazzling_shannon
552f5b1eadf5   nginx            "/docker-entrypoint.…"   4 hours ago     Up 4 hours     0.0.0.0:49154->80/tcp, :::49154->80/tcp                nginx03
d96c768cb1d3   nginx            "/docker-entrypoint.…"   5 hours ago     Up 5 hours     0.0.0.0:49153->80/tcp, :::49153->80/tcp                nginx05
7fdc601d7b79   mysql:5.7        "docker-entrypoint.s…"   5 hours ago     Up 5 hours     33060/tcp, 0.0.0.0:3310->3306/tcp, :::3310->3306/tcp   mysql01
6ebe0e25bb5f   tomcat:9.0       "catalina.sh run"        47 hours ago    Up 47 hours    0.0.0.0:3305->8080/tcp, :::3305->8080/tcp              tomcat05
5964e6762cca   nginx            "/docker-entrypoint.…"   47 hours ago    Up 47 hours    0.0.0.0:3344->80/tcp, :::3344->80/tcp                  nginx02
[root@ecs-98457 ~]# docker inspect 7563349b292c

在这里插入图片描述

数据卷容器

实现多个容器之间同步数据
在这里插入图片描述
启动3个容器,通过我们自己创建的镜像启动

[root@ecs-98457 ~]# docker run -it --name docker01 cxz/centos:1.0

在这里插入图片描述

#Ctrl+P+Q 退出容器
#将docker02和docker01容器实现数据挂载卷数据同步
[root@ecs-98457 ~]# docker run -it --name docker02 --volumes-from docker01 cxz/centos:1.0

在这里插入图片描述
可以看到数据卷同步过来了
然后我们再docker02容器里面的volume01目录下新建cesi01文件
在这里插入图片描述
我们再进入到docker01容器中的volume01文件 可以看到同样生成了cesi01文件

[root@ecs-98457 /]# docker ps
CONTAINER ID   IMAGE            COMMAND                  CREATED          STATUS          PORTS                                                  NAMES
77e0f7603156   cxz/centos:1.0   "/bin/sh -c /bin/bash"   5 minutes ago    Up 5 minutes                                                           docker02
fcdc642792d4   cxz/centos:1.0   "/bin/sh -c /bin/bash"   9 minutes ago    Up 9 minutes                                                           docker01
7563349b292c   cxz/centos:1.0   "/bin/bash"              14 minutes ago   Up 14 minutes                                                          dazzling_shannon
552f5b1eadf5   nginx            "/docker-entrypoint.…"   4 hours ago      Up 4 hours      0.0.0.0:49154->80/tcp, :::49154->80/tcp                nginx03
d96c768cb1d3   nginx            "/docker-entrypoint.…"   5 hours ago      Up 5 hours      0.0.0.0:49153->80/tcp, :::49153->80/tcp                nginx05
7fdc601d7b79   mysql:5.7        "docker-entrypoint.s…"   6 hours ago      Up 6 hours      33060/tcp, 0.0.0.0:3310->3306/tcp, :::3310->3306/tcp   mysql01
6ebe0e25bb5f   tomcat:9.0       "catalina.sh run"        47 hours ago     Up 47 hours     0.0.0.0:3305->8080/tcp, :::3305->8080/tcp              tomcat05
5964e6762cca   nginx            "/docker-entrypoint.…"   47 hours ago     Up 47 hours     0.0.0.0:3344->80/tcp, :::3344->80/tcp                  nginx02
[root@ecs-98457 /]#  docker attach fcdc642792d4
[root@fcdc642792d4 /]# cd volume01
[root@fcdc642792d4 volume01]# ls
cesi01
[root@fcdc642792d4 volume01]# 

http://chatgpt.dhexx.cn/article/bjfvoAgm.shtml

相关文章

在LINUX-DEBIAN系统下挂载新硬盘的方法

LINUX-DEBIAN系统下挂载新硬盘的方法。 总共六个部分,一起来看看吧,非常简单的。 一、fdisk -l 查看硬盘的使用情况,也就是哪些硬盘没有挂载 下面显示的,三块硬盘,其中二和三是没有挂载的。 二、df -h 查看挂载情况…

挂载命令

1.mount命令基本格式 linux所有存储设备都必须挂载使用,包括硬盘 命令名称:mount命令所在路径:/bin/mount执行权限:所有用户 mount [-t 文件系统] [-L 卷标名] [-o 特殊选项] \ 设备文件名 挂载点# \:代表这一行没有…

vue挂载

一个人能力太小,聚沙成塔,抱团取火,分享知识,帮助学习, 有愿意或者有问题一起钻研,新人也好,老手也好,希望在这个寒冬下,尽力生活, 欢迎 一起 qq群&#xff0…

Linux文件系统挂载的概念

文章目录 20230518 文件系统挂载 挂载(mounting)是指由操作系统使一个存储设备(诸如硬盘、CD-ROM或共享资源)上的计算机文件和目录可供用户通过计算机的文件系统访问的一个过程。 一般来说,当计算机关机时&#xff0c…

iscsi挂载

服务端创建大小为1G的虚拟块设备 dd if/dev/zero of/root/virt_block_dev bs1M count1024 ---------------------------------------linux--------------------------------------- 服务端安装步骤(initiator-address以网段赋值,允许该网段的所有主机连接)&#x…

linux Nas挂载

文章目录 一、NAS服务端1. 首先查看服务器上是否有nfs和rpc相关软件2. 设置共享3. 使配置生效:4. 查看所有可挂载5. rpcbind启和动nfs6.配置防火墙7. 查看防火墙的状态8. 启动防火墙9. 开放端口10. 重新启动防火墙11. 查看已开放的端口 二、客户端(应用服务器)2.1.查看空间分布…

手把手教你挂载

文章目录 挂载是什么,我们为什么要挂载一步步演示挂载演示环境一些知识点挂载步骤Parted命令挂载 挂载是什么,我们为什么要挂载 在我看来,Linux下的硬盘挂载,相当于是windows的分配盘符。 Linux下一切皆文件,所以&…

何为挂载(mount)?

在操作系统的Lab中,我们用bximage创建了一个1.44mb的软盘镜像img 然后为了将我们编译好的汇编程序写入该镜像,使用了如下命令: sudo mount -o loop XX.img /mnt/floppy sudo cp 汇编程序 /mnt/floppy sudo umount /mnt/floppy这其中发生了什…

挂载(mount)

Linux中,所有的数据都是由文件的形式呈现的,整个Linux中使用的是目录树架构,但其实,我们所有的数据都是放置在磁盘分区中的,所以如何结合目录树结构与磁盘中的数据呢?这就牵扯到挂载了。 挂载:利…

它拖慢你的网速,还泄露你的个人隐私,学一招治治它

你可能有一种感觉,虽然5G时代已经来了,但网速并没有快得很明显。 你可能还有一种困扰,在手机上随便搜一个商品,几分钟后竟然接到了推销电话。 但你有没有想过,这两件事的幕后黑手,是同一个? …

三步带你解决Docker拉取镜像报错:x509: certificate has expired or is not yet valid

报错信息: ...... 47a32314928e: Waiting f1bef6c845ef: Waiting b7403b550949: Waiting 313a800f9488: Waiting f45c5939b598: Waiting docker: Get https://registry-1.docker.io/v2/: x509: certificate has expired or is not yet valid.报错信息翻译过来的意思…

突然发现一款优化神器

前言 很多行业都会采用企业级网络,但在使用的时候会遇到很多问题,比如: “电脑被安装上一些莫名其妙的应用程序,拖慢电脑速度,影响办公效率” “电脑桌面上总是会不定时出现一些广告弹窗,让人烦不胜烦”…

干掉广告和钓鱼,这款神器绝了!

大家好,我是良许。 前几天,搜狐丢人丢大发了,自家的员工居然遭遇了钓鱼诈骗。。 据报道,某员工使用邮件时被意外钓鱼导致密码泄露,进而被冒充财务部盗发邮件。共有 24 名员工被骗取 4 万余元。 要知道,搜…

在地产行业做安全?也许你该换个专业的企业级DNS

如果你是地产公司仅有的一名安全负责人,每天要管全国所有分支机构和员工的网络安全,你是否也经常感觉头顶发凉、无从下手?地产行业的网络安全难做,主要有以下几点原因: 1.地产行业发展快、核心业务数据多,…

这个好用的办公网优化工具,官宣免费了

文章目录 ⛳️ 1. OneDNS优点⛳️ 2. OneDNS典型场景 微步在线OneDNS公益版终于官宣永久免费了! https://page.ma.scrmtech.com/landing-page/index?pf_uid15831_1728&id12702&channel30327 ⛳️ 1. OneDNS优点 作为一个OneDNS公益版的老用户,…

怕远程办公不安全?大企业同款神器,网络加速、防护、上网管理

在日常办公中,我们往往会遇到以下这些情况: 有同事反应电脑运行慢,你接过电脑一看,好家伙,能数出名的“全家桶”装了个遍,内存利用率80%以上。能不慢才怪呢!有同事反应网速太慢,连网…

没想到,这款国产软件牛炸了。

身为运维的一员,您是不是也会遇到以下这些情况: 有同事反应电脑运行慢,你接过电脑一看,好家伙,能数出名的“全家桶”装了个遍,内存利用率80%以上。能不慢才怪呢!有同事反应网速太慢,…

论网络安全的重要性

[福利:\[网络安全重磅福利:入门&进阶全套282G学习资源包免费分享 !\]](https://mp.weixin.qq.com/s/BWb9OzaB-gVGVpkm161PMw ) 前几天在家居家办公的时候(用的自己的电脑),感觉电脑很卡, 弄七弄八的,还…

利用OneDNS同步chrome数据

将DNS服务器改成OneDNS的 117.50.11.11 备用改为 117.50.22.22 然后刷新自己的DNS缓存,接着测试一下https://test.onedns.net即可 这样既可以正常登陆Google账号了,然后就可以同步书签等数据了,niubility 具体步骤:转自onedns主页…

oneDNS解决google等登陆问题

万恶的GFW,严重影响到众多开放人员和研发人员的工作。Google、Gmail等被屏蔽已有些时日了,如今不但没解禁,相继的Line、OneDrive、DropBox等相继也被屏蔽了……其大部分原因都是DNS被污染或劫持,导致无法解析出正确的ip地址。 在分…