您的位置:首页 > 财经 > 产业 > 杭州网络推广平台_北京最大的广告制作公司_百度在线使用_友缘在线官网

杭州网络推广平台_北京最大的广告制作公司_百度在线使用_友缘在线官网

2024/12/23 3:50:54 来源:https://blog.csdn.net/jkjkjkjk_/article/details/142471071  浏览:    关键词:杭州网络推广平台_北京最大的广告制作公司_百度在线使用_友缘在线官网
杭州网络推广平台_北京最大的广告制作公司_百度在线使用_友缘在线官网

如何自己commit一个镜像

这里还是先引用一下老师的笔记
在这里插入图片描述

关于如何自己commit一个镜像这个问题目前因为从仓库中拉下来的Tomcat里面是没有项目的,所以把webapps.dist里面的拷贝到webapps里面去作为自己的镜像在commit一下

这里用Tomcat举例子首先把镜像拉取下来执行 docker pull tomcat 我这里已经有了最新版本。
在这里插入图片描述

有了Tomcat镜像之后就执行docker run -it -p 8080:8080 tomcat来启动tomcat 这里因为tomcat是一个前台应用所以得使用快捷键 ctrl + p + q来退出当前容器这样子退出不会让tomcat容器停止运行
在这里插入图片描述

退出来之后就可以进入我们的tomcat控制台,这个时候我们执行docker exec -it 40359d451d90 /bin/bash可以看到我们已经进入进来了
在这里插入图片描述
因为从镜像仓库当中下载的镜像里面的webapps里面是空的所以为了方便我们测试我们这个时候需要把webapps.dist拷贝到webapps里面去
我们执行cp -r webapps.dist/* webapps
在这里插入图片描述

这个时候就可以访问我们的tomcat服务器了记得开启阿里云服务器的安全组对应的端口哈!!!!

在这里插入图片描述

下一步就是commit镜像了执行命令docker commit -a="迟茗阳" -m="在webapp里面添加了一些东西" 40359d451d90 tomcat02:1.0注意这里镜像名字吧不能有大写字母

在这里插入图片描述

这个时候就看镜像多了一个tomcat02
在这里插入图片描述
一直到这里结合我前面写的就算是入门docker了但是还远远不够!!!后面还得学习docker数据卷 docker 网络和dockerfile

容器数据卷

还是上来先引用一下老师的笔记
在这里插入图片描述

在这里插入图片描述

下面是我自己的理解和总结---------------------------------

容器数据卷的概念主要为了解决容器数据持久化的问题。当容器停止或删除时,其内部的状态和数据通常会丢失。为了确保这些重要信息能够长期保存,即使在容器生命周期结束后也能继续访问,数据卷技术应运而生。

具体来说,数据卷允许将容器内的特定目录与宿主机上的一个目录进行绑定。这意味着,当你对容器内指定目录下的文件进行任何修改时,实际上是在直接操作宿主机上对应的文件。以MySQL为例,假设你基于官方MySQL镜像启动了一个容器。在这个过程中,你可以设置一个数据卷,将MySQL的数据目录(例如,包含数据库文件的目录)挂载到宿主机的一个特定位置。这样一来,无论何时你在MySQL容器中创建、修改或删除数据库,这些操作都会反映在宿主机的相应目录下,从而实现了数据的持久化存储。

这种做法的好处显而易见:

  • 数据保护:即使容器被删除或替换,由于数据实际存储于宿主机,因此不会丢失。
  • 灵活性:多个容器可以共享同一个宿主机上的数据卷,这在需要跨多个服务或应用共享数据的情况下非常有用。
  • 易于备份和恢复:因为数据独立于容器存在,所以更容易进行备份和恢复操作。

总之,通过使用数据卷,不仅解决了容器化应用中常见的数据持久化问题,还增强了系统的灵活性和可维护性。

下面是实际的测试内容------------------------
还是先引用一下老师的笔记
在这里插入图片描述

启动一个centos容器把centos容器里面的home目录挂载到宿主机的home/ceshi目录下面去
执行命令docker run -it -v /home/ceshi:/home centos /bin/bash做一个挂载并且进入到容器当中去
在这里插入图片描述
可以看到多了一个cecshi目录这就相当于做了一个挂载之后再宿主机上面添加东西会自动同步到容器内,在容器内添加的东西会自动同步到宿主机里面去
这个时候可以执行docker inspect 容器id来查看容器的详细信息来看看他是否已经挂载成功了可以看到是已经挂载成功的了
在这里插入图片描述

可以看到现在容器里面和容器外面的两个挂载的内容是一样的都是空的
在这里插入图片描述

现在开始新建文件在容器里面新建一个文件test.java在容器外面不用新建会自动同步
在这里插入图片描述

在容器外面新建的也会自动同步到里面去
在这里插入图片描述

上面是新建文件,容器内外新建文件都是一样的接下来看文件里面的内容!!
还是一样的我们在容器里面对test01.txt写一个侧测试内容看看能不能自动同步到容器外面去
结论是容器里面修改的文件内容会自动同步到容器外面去
在这里插入图片描述
接下来看容器外面修改的文件内容能不能自动同步到容器里面去
在这里插入图片描述

注意以下这里就算是停止了容器因为已经把数据挂载出去了所以数据也不会丢失,删除容器数据也不会丢失!!!但是弊端就是会占用两倍的存储

mysql同步数据

这里因为docker的镜像加速国内都给封锁了所以这里只能先往后放了,有需要的直接取看老师的视频
狂神说dockermysql同步数据
其实就是用数据卷技术把mysql存储数据的地方挂载到宿主机上面去

具名挂载和匿名挂载

具名挂在和匿名挂载其实就也是外挂数据卷,没啥区别就是前面启动容器的时候我们指定了容器里面的/home目录挂载到/home/ceshi 要是使用匿名挂在我们可以不指定挂载的目录

我们使用NGINX镜像启动一个具名数据卷

docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx
启动玩之后因为我们指定了数据卷的名字但是没有指定挂载的数据卷在宿主机上面的路径,docker会自动的有一个空间来存储这些没有指定宿主机路径的挂载

匿名挂载和具名挂载的区别
匿名挂载和具名挂载都是Docker中的数据卷挂载方式,主要用于容器的数据持久化。具体来说:

  1. 匿名挂载:
  • 不需要指定挂载卷的名称。
  • 适合临时使用或不需要持久化数据的情况。
  • 如果容器被删除,匿名卷也会被删除。
  1. 具名挂载:
  • 明确指定挂载卷的名称。
  • 适合需要持久化数据和更好地管理数据的情况。
  • 即使容器被删除,具名卷依然存在,可以通过名称进行管理。
    挂载之后可以使用docker volume ls来查看已经有的具名挂载和匿名挂载,其实匿名挂载就是不指定名字但是对于docker来说有一个哈希码也是一样的
    使用NGINX镜像启动具名数据卷
    假设我们要使用NGINX镜像启动一个具名数据卷,具体步骤如下:
    1.创建具名卷:
    docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx
    创建匿名卷用这个命令
    docker run -d -P --name nginx03 -v /etc/nginx nginx
    2.创建成功之后可以执行 docker volume ls 来查看已经有的卷
    在这里插入图片描述

可以查看数据卷的详细信息
在这里插入图片描述

总结一下数据卷的挂载方式

-v 容器内路径 # 匿名挂载
-v 数据卷名:/容器内路径 # 具名挂载
-v /宿主机路径:/容器内路径 # 指定路径挂载

版权声明:

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

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