【Docker】在容器中管理数据&&数据卷挂载以及宿主机目录挂载

这篇具有很好参考价值的文章主要介绍了【Docker】在容器中管理数据&&数据卷挂载以及宿主机目录挂载。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【Docker】在容器中管理数据&&数据卷挂载以及宿主机目录挂载,docker,容器,运维

                                  🎉🎉欢迎来到我的CSDN主页!🎉🎉

                        🏅我是平顶山大师,一个在CSDN分享笔记的博主。📚📚

        🌟推荐给大家我的博客专栏《【Docker】在容器中管理数据》。🎯🎯

                        🎁如果感觉还不错的话请给我关注加三连吧!🎁🎁

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

1- 数据卷(Volumes)

2- 挂载主机目录(Bind mounts)

一,数据卷

1.1数据卷作用:

作用:为了很好的实现数据保存和数据共享,以正常的文件或者目录的形式存在于宿主机上。又被称作数据卷。

挂载数据卷的好处在于:它使得Docker容器与主机之间可以共享数据,并且在容器删除后,数据仍然存在于主机上。这样,即使容器被删除或重新创建,数据也不会丢失。(安全性高)另外,通过挂载数据卷,我们还可以在多个容器之间共享数据,这对于搭建基于微服务架构的应用非常有用。同时,数据卷还支持读写分离、只读和权限设置等功能,使得数据在容器内外的访问更加灵活和安全。(方便不同数据中的操作,因为容器中的文件,数据是操作不了的,只能在容器建立之前进行增删改

1.2使用数据卷(命令)

都是增删改查的操作可以使用 容器+数据卷+create,ls,inspect,rm的记忆方法来记忆 

        创建数据卷

docker volume create 数据卷名称

        查看所有数据卷

docker volume ls

        查看数据卷信息

docker volume inspect 数据卷名称

        删除一个volume

docker volume rm 数据卷名称

        注意:数据卷 是被设计用来持久化数据的,它的生命周期独立于容器,Docker不会在容器被删除后自动 删除数据卷,并且也不存在垃圾回收这样的机制来处理没有任何容器引用的数据卷,无主的数据卷 可能会占据很多空间,所以要及时删除.

 挂载数据卷

在用 docker run 命令的时候,使用 --mount 标记来将 数据卷 挂载到容器里。在一次 docker run 中可以挂载多个数据卷 。如果容器,数据卷中没有对应的文件文件夹会自动创建。

docker run -itd \
--name 容器名字 \
--mount source=数据卷名称,target=容器中的对应目录 \
镜像名称

【Docker】在容器中管理数据&&数据卷挂载以及宿主机目录挂载,docker,容器,运维

查看是否挂载成功

首先查看我们数据卷的目录位置

docker inspect name

【Docker】在容器中管理数据&&数据卷挂载以及宿主机目录挂载,docker,容器,运维

备注:

docker run -it
 --name c1
--mount source=t1,target=/test1 \
centos


c1容器中又建立了test1文件夹

touch c1.txt       --建立文件

cd                      --进入目录

二,挂载主机目录

2.1什么是目录挂载?

目录挂载是将主机上的一个目录直接挂载到容器中,容器中的文件会直接覆盖主机上的文件,这种方式不适合多个容器共享数据。目录挂载的好处是可以方便地将主机上的文件或目录与容器中的文件或目录进行同步,方便开发和调试。

2.目录挂载的基本使用


在宿主机上创建一个目录用于存放资源

docker run -itd \
--name 容器名字 \
--mount type=bind,source=宿主机目录,target=容器中的对应目录 \
镜像名称

【Docker】在容器中管理数据&&数据卷挂载以及宿主机目录挂载,docker,容器,运维

docker run -itd \        --运行一个新的容器且后台运行模式
--name t1 \                --起名字
-p 8080:8080 \           --将容器内的端口 8080 映射到宿主机的端口 8080等于访问外部8080就是访问到容器中8080

-v /soft:/user/local/tomcat/webapps \       --将本地宿主机上的目录 /soft 挂载到容器内

tomcat:8.5.20            --指定tomcat镜像版本启动容器,建议一样不然可能会报错

访问不到就尝试在防火墙上开端口

【Docker】在容器中管理数据&&数据卷挂载以及宿主机目录挂载,docker,容器,运维

开放端口
firewall-cmd --zone=public --add-port=8080/tcp        

sudo firewall-cmd --list-ports        --查看已经开放的端口
firewall-cmd reload        --刷新防火墙

【Docker】在容器中管理数据&&数据卷挂载以及宿主机目录挂载,docker,容器,运维

 但是这么它是将整个文件夹进行替换!!!!就相当于把其他内置的文件给覆盖了

方法一:

输入命令 : 

docker run -itd  \
--name t1  \
-p  8080:8080   \
-v  /soft:/usr/local/tomcat/webapps  \
tomcat:8.5.20

【Docker】在容器中管理数据&&数据卷挂载以及宿主机目录挂载,docker,容器,运维

【Docker】在容器中管理数据&&数据卷挂载以及宿主机目录挂载,docker,容器,运维

三,针对目录挂载进行优化以及部署一个war包

【Docker】在容器中管理数据&&数据卷挂载以及宿主机目录挂载,docker,容器,运维

方法二:

步骤:

3.1在虚拟机跟目录下创建一个文件夹:mkdir soft 

【Docker】在容器中管理数据&&数据卷挂载以及宿主机目录挂载,docker,容器,运维

在文件夹中指定文件挂载,并且指定挂载后的文件名称,输入命令 :

docker run -itd  \
--name t1  \
-p  8080:8080   \
-v  /soft/oapro.war:/usr/local/tomcat/webapps/oapro.war  \
tomcat:8.5.20

3.2修改tomcat的两个文件:

【Docker】在容器中管理数据&&数据卷挂载以及宿主机目录挂载,docker,容器,运维

修改:1

找到最后面:【Docker】在容器中管理数据&&数据卷挂载以及宿主机目录挂载,docker,容器,运维

<role rolename="manager-gui"/>
<user username="tomcat" password="123456" roles="manager-gui"/> 

修改:2

【Docker】在容器中管理数据&&数据卷挂载以及宿主机目录挂载,docker,容器,运维

【Docker】在容器中管理数据&&数据卷挂载以及宿主机目录挂载,docker,容器,运维

3放入war包

【Docker】在容器中管理数据&&数据卷挂载以及宿主机目录挂载,docker,容器,运维

输入命令:

docker run -itd \
--name t1 \
-v /soft/tomcat-users.xml:/usr/local/tomcat/conf/tomcat-users.xml \
-v /soft/context.xml:/usr/local/tomcat/webapps/manager/META-INF/context.xml \
-p 8080:8080 \
tomcat:8.5.20

这里出现一个错误:

docker: Error response from daemon: Conflict. The container name "/t1" is already in use by container "ffe7c2c9a7d88a06ff425256a7fe6f336745b9888b0a46e56dbc7218dc723936". You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.

 

原因是:已经有一个docker在运行这里要删掉:

docker stop ffe7c2c9a7d8

 docker rm ffe7c2c9a7d8
 

【Docker】在容器中管理数据&&数据卷挂载以及宿主机目录挂载,docker,容器,运维

【Docker】在容器中管理数据&&数据卷挂载以及宿主机目录挂载,docker,容器,运维

【Docker】在容器中管理数据&&数据卷挂载以及宿主机目录挂载,docker,容器,运维

【Docker】在容器中管理数据&&数据卷挂载以及宿主机目录挂载,docker,容器,运维

认真写博客的人,见一个少一个🤩🤩🤩🤩🤩🤩🤩🤩🤩

           👍 点赞支持,⭐️ 收藏学习,❤️ 关注不迷路~
                            💬 如有错漏请不吝指正~

                              平顶山大师-CSDN博客文章来源地址https://www.toymoban.com/news/detail-794900.html

到了这里,关于【Docker】在容器中管理数据&&数据卷挂载以及宿主机目录挂载的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 当docker中容器运行时,如何将目录和宿主机进行挂载

    容器已运行,但还想挂载文件 容器已经运行起来了,突然想给容器的目录进行挂载,通常是在运行容器时加上 -v  命令 进行挂载。运行起来的容器想挂载文件夹可以通过修改容器在宿主机的配置文件进行解决。 在配置文件中加入新的挂载 1.查看容器存放目录 2.进入该目录

    2024年01月25日
    浏览(38)
  • 解决docker通过volumes挂载文件,宿主机修改后容器内不同步,重启服务才能同步

    将文件的权限改为777,即 chmod 777 filename 。 详细解释在该文章: https://huaweicloud.csdn.net/633114e5d3efff3090b51a5a.html 说明: 这是由于linux系统文件挂载机制导致的。 docker通过volumes挂载文件到容器中,有以下两种方式: 1、挂载目录 2、挂载具体文件:并不是挂载了某个文件的路径,

    2024年03月10日
    浏览(49)
  • Docker:挂载宿主机的目录

    可以在docker run时通过: -v 宿主机目录:容器内目录 ,挂载宿主机的文件到容器: $ docker run -it -v /tmp/docker_share/:/tmp/share ubuntu /bin/bash 容器启动后,可以在容器里看到目录/tmp/share root@9d2d19b4923c:/tmp/share# touch test root@9d2d19b4923c:/tmp/share# ls test 在宿主机的/tmp/docker_share目录下也可以

    2024年02月09日
    浏览(33)
  • Docker挂载-宿主机软连接目录-问题

    挂载宿主机软连接的路径问题【 -v /usr/local/nginx/:/home/test/nginx/ 】,软连接可以映射任何路径,但有一个前提是:其所映射的路径必须要在容器中存在,否则就无法访问到数据 1、如果软连接路径在容器中已经存在,如 /root/home ,或者在当前挂载命令 -v 前面的 -v 命令已经将软

    2024年02月22日
    浏览(51)
  • docker搭建nginx并且挂载宿主机目录

    1、安装docker,这里就不赘述了 2、查看nginx版本 3、设置nginx对外的挂载目录 4、拷贝一份nginx.conf文件到/root/docker/nginx/conf/目录下 5、拉取相应的docker镜像 6、搭建nginx服务器 7、搭建完成之后查看容器的运行状态 8、至此,nginx就搭建完成了!!

    2024年02月11日
    浏览(31)
  • Docker】容器里面拷文件到宿主机[或]宿主机拷文件到容器里面

    【Docker】容器里面拷文件到宿主机[或]宿主机拷文件到容器里面 - 知乎 答:在宿主机里面执行以下命令 docker cp 容器名:要拷贝的文件在容器里面的路径 要拷贝到宿主机的相应路径 示例: 假设容器名为webnphp,要从容器里面拷贝的文件路为: 现在要将tox.ini从容器里面拷到宿主

    2024年02月06日
    浏览(47)
  • 【Docker】docker容器内获取宿主机的信息和执行宿主机的脚本

    我们可以通过在容器内远程连接宿主机,然后对宿主机进行操作。 注意: 要先安装 sshpass命令才行。 Dockerfile文件可以在你部署容器的时候自动安装。 docker部署springboot项目

    2024年02月11日
    浏览(49)
  • docker 容器与宿主机时间同步

    1.docker run 2.Docker file 3.docker-compose 4.宿主机直接执行命令给某个容器同步时间 注意:这种方式需要重启容器 docker exec -it 70ec41893d66 /bin/bash 回车后输入date验证即可

    2024年02月08日
    浏览(41)
  • Jenkins容器使用宿主机Docker

    构建镜像和发布镜像到harbor都需要使用到docker命令。而在Jenkins容器内部安装Docker官方推荐直接采用宿主机带的Docker即可。 设置Jenkins容器使用宿主机Docker 设置宿主机docker.sock权限: 添加数据卷

    2024年01月18日
    浏览(39)
  • Docker容器内执行宿主机指令

            最近项目有个需求,需要程序配置服务器IP并且可以重启服务器。如果程序直接部署在服务器,相信大家都会操作。但是程序是用docker运行的,在docker中执行指令就很麻烦了。这时候需要添加容器一些特殊的权限和执行一些特殊的命令就可以执行宿主机上面的指令

    2024年02月09日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包