前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Docker 数据卷操作以及挂载nginx

Docker 数据卷操作以及挂载nginx

作者头像
兰舟千帆
发布2022-07-16 13:38:51
发布2022-07-16 13:38:51
1.2K00
代码可运行
举报
运行总次数:0
代码可运行

Docker 数据卷操作

数据卷技术的引出

我们需要明白docker镜像的一些特点。我们装载在docker上的镜像的权限只是可读的。是不可以修改的。 你想啊!我们会基于镜像创建容器并启动,如果镜像文件可以被任意修改的话就会出现衣蛾问题。总之,docker中安装的镜像文件是不能够被修改的。

我们运行的容器程序只是基于镜像的基础,容器之间相互隔离。

当我们需要修改我们的运行着的容器的时候,我们需要进到容器里去修改容器中的文件。步骤比较繁琐,而且这样的修改只是基于只读的权限创建的一个新的读写层。这个读写层并没有对原只读权限的层次造成影响。但是这个修改只是暂时的,当我们重启容器或者删除容器的时候,原来的配置更改就会消失。

所以我们提出一种数据卷的技术。

那么数据卷可以做到哪些呢?

数据卷可供一个多个容器去使用,它有一些特性,可以实现在容器之间的共享和复用,还有,我们修改了数据卷后,这个数据卷会立马生效。并且不会影响到镜像,当然也是不可能影响到镜像的,并且不会随着容器的删除而消失。

到这里你先明白它的大概,下面我们开始介绍它的具体用法你就知道它可以干嘛了,他到底起到什么样的作用。

创建数据卷与删除

首先我们创建一个数据卷

代码语言:javascript
代码运行次数:0
运行
复制
docker volume create html

你可以查看自己创建的数据卷有没有成功,或者说,你当前目录下有哪些数据卷。

代码语言:javascript
代码运行次数:0
运行
复制
docker volume ls

查看指定数据卷的具体的详细的信息

代码语言:javascript
代码运行次数:0
运行
复制
docker volume inspect html

红色这边标记数据卷在宿主机的目录位置

当然你也可以去删除数据卷

代码语言:javascript
代码运行次数:0
运行
复制
docker volume rm html

这时如果显示你的这个卷正在被使用。你该怎么办?

这是因为你的数据卷被使用了,你不能删除它。你必须删除容器后,才可以删除它。

你可以使用命令来列出当前运行的容器 显示所有的容器,包括未运行的

代码语言:javascript
代码运行次数:0
运行
复制
docker ps -a 

你可以不对比容器id来找到是哪个容器在使用到数据卷,注意这里你不要比对id的全部字符串,因为字符串太长,他这里是显示不完整的,你只要比对出现的这几位即可

现在我们找到了是我的nginx的一个容器使用到了,我将这个容器删掉,注意这个容器正在运行,我们可以加上-f对其删除。

然后我们删除数据卷

你看这样就删除成功了 然后你确认一下,现在html数据卷就没有了。

还有一个删除可以删除所有没有使用到的数据卷

代码语言:javascript
代码运行次数:0
运行
复制
 docker volume prune

现在就什么也没有了

数据卷的挂载

在我们没有使用数据卷的时候我们是直接运行容器然后指定数据卷的,现在可以进行一个对数据卷的挂载,也就是叫数据卷挂载到我们容器中。

代码语言:javascript
代码运行次数:0
运行
复制
docker run --name nginx_test03 -v html:/usr/share/nginx/html -p 8092:80 -d nginx

docker run 代表创建并运行容器 – name 指定常见容器的名字 -v 指定对数据卷进行挂载 -p指定映射端口 -d 代表后台运行

上面这行命令可以执行将数据卷创建出来并挂载的操作,所以我们不需要去单独创建了。

我们将数据卷挂载了,现在我们进入数据卷的位置,看看到底有没有挂在上。

我们先查看html数据卷的位置

代码语言:javascript
代码运行次数:0
运行
复制
docker volume inspect html

我们进入到这个目录

代码语言:javascript
代码运行次数:0
运行
复制
 cd /var/lib/docker/volumes/html/_data

然后ls查看当前目录

代码语言:javascript
代码运行次数:0
运行
复制
ls

整体效果

我们可以看到数据卷已经成功挂载好了,index.html是nginx的默认启动页面。这样当你去想要修改nginx的启动页的时候你直接在数据卷中修改就好了。

现在我们查看这个index.html

代码语言:javascript
代码运行次数:0
运行
复制
cat index.html

红色·标记是默认启动欢迎的页面英文

我们尝试先做一个访问,在这之前,你先需要开放你运行这个容器开放的端口。我的是8092 你可以先查看防火墙状态,防火墙一般是必然在运行的,特别是服务器,如果你是本地虚拟机的话,直接关闭防火墙就直接不用担心防火墙的端口限制了。

代码语言:javascript
代码运行次数:0
运行
复制
 firewall-cmd --state

我们可以查看当前防火墙开放了哪些端口号

代码语言:javascript
代码运行次数:0
运行
复制
 firewall-cmd --zone=public --list-ports

可以看到现在我们的8092端口没有被开放,现在我们需要进行开放。

代码语言:javascript
代码运行次数:0
运行
复制
firewall-cmd --zone=public --add-port=8092/tcp --permanent

然后我们呢,让防火墙重新加载配置,让它生效

代码语言:javascript
代码运行次数:0
运行
复制
 firewall-cmd --reload   

然后我们再次查看防火墙目前开放的端口

代码语言:javascript
代码运行次数:0
运行
复制
firewall-cmd --zone=public --list-ports

好,现在我们去访问,公网ip+端口号

如果你的是通过FinalShell连接远程服务器的话,怎么查看自己服务器的公网呢?不必去再登录阿里云再去查看了。

代码语言:javascript
代码运行次数:0
运行
复制
curl cip.cc

好现在访问

你看这么界面就是这样子。 我们现在在数据卷进行一个修改,如果你忘记数据卷在哪里,

这些命令我们上面也都提到过

我们可以用我们的vim命令,没有的话自己去下载一个

代码语言:javascript
代码运行次数:0
运行
复制
vim index.html

当然你还可以用FinalShell在文件目录打开编辑也比较舒服。这些你都可以选的。你甚至可以用你本机的编辑器。

用编辑器修改后保存就可以了。

你现在再去刷新原来访问地址会发现立马就变了,就是这么同步,这就是数据卷的魅力。

有了这个基础,以后的页面设计自己就可以去做了。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Docker 数据卷操作
  • 数据卷技术的引出
    • 创建数据卷与删除
    • 数据卷的挂载
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档