docker如何挂载、修改文件

这篇文章主要讲解了“docker如何挂载、修改文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“docker如何挂载、修改文件”吧!

    docker 挂载、修改文件

    前段时间咱们使用Docker安装了Nginx并且系统学习了Nginx的相关知识,其中有一节是修改Nginx的配置达到方向代理的效果。咱们使用的是docker的 copy 命令从容器中 copy 出来相关的配置文件,在本地修改,修改完毕在使用docker的 copy 命令从本地 copy 到容器中,重启容器生效的。咱们的操作也是相当的费劲,俗话说条条大路通罗马,那有没有其他的方式可以更快捷的达到咱们想要的效果呢,答案当然毋庸置疑,今天咱们就整理下修改docker容器中的文件的几种方式,希望可以帮助大家。

    先说结论在看实践。修改docker容器中的文件有三种方式,各有有缺点。

    第一种:在docker中安装 vim 工具,这样做的优点就是容器创建的时候安装一次,以后就直接使用命令修改操作文件,方便快捷。缺点就是容器销毁的时候就丢失了,下次容器创建的时候还需要重新安装。

    第二种:使用docker 的 copy 命令将docker容器中的文件copy到本地修改,在用docker 的copy命令将修改好的文件复制回容器,优点是不需要安装和操作任何配置,缺点当然显而易见,每次修改都要进行好几次的copy,费时费力。

    第三种:当然是“挂载”,所谓挂载就是将容器的文件和本地的文件进行映射,修改本地文件就相当于修改了容器中的文件,优点就是方便不用进入容器内部就可以修改文件,并且不用频繁的 copy,这样对比下来大家都能看出来采用挂载是最有的解决方案,咱们本次记录都会记录下,然后大家分别尝试练习。

    docker如何挂载、修改文件

    第一种:安装工具

    因为容器是与本地几乎隔绝的,所以我们要先安装vim。安装完成后就可以修改配置文件了。

    1. 先更新包管理

    apt-get update

    2. 安装vim

    apt-get install vim

    时间比较慢,如果有找到如何更新安装源的小伙伴贴到评论区分享下

    第二种:docker copy命令

    docker 的copy修改容器文件分为两个步骤,第一步:从容器中copy文件到本地“从docker中cp文件到本地”,第二步:从本地copy文件到容器“从本地cp文件到docker容器”,注意容器文件位置和提前创建好本地文件的位置。

    # 从docker中cp文件到本地
    sudo docker cp 容器Id:/etc/nginx/conf.d/default.conf  /Users/liluyang/mydocker
     
    # 从本地cp文件到docker容器
    sudo docker cp /Users/liluyang/mydocker/default.conf 容器Id:/etc/nginx/conf.d/
     
    # 重启容器生效
    docker restart 容器ID

    第三种:docker 挂载

    docker 挂载就是将docker原来存在于容器中的文件,映射到本次服务器的磁盘上,这样做的好处就是修改文件方便,并且容器删除不应熙哪个挂载的文件,容器重新创建的时候还可以重复利用。也有两种方式可以采用控制台挂在也可以采用命令挂在咱们都梳理一下。

    第一种:控制台挂载

    第一步:准备工作

    首先在咱们本地创建要挂载的目标挂在路径。我已经在本地创建好了挂载目标路径,并且窗景了项目的目录文件。

    docker如何挂载、修改文件

    <html>
    <head>
    <title>Welcome to nginx!</title>
    <style>
        body {
            width: 35em;
            margin: 0 auto;
            font-family: Tahoma, Verdana, Arial, sans-serif;
        }
    </style>
    </head>
    <body>
    <h2>hello docker nginx 111!</h2>
    </body>
    </html>
    第二步:配置

    打开控制台找到对应的镜像。咱们选中nginx,点击后面的run,点击optional setting进行相关配置。其中比较重要的我都标记出来了,首先是映射端口,为了防止冲突我设置为8089,接下来是挂载的目标路径。就是上面咱们准备工作所创建的本地路径:/Users/liluyang/docker/volumes/nginxVolume/index。接下来是被挂载路径,就是咱们容器上的路径,我这里选择的是项目目录。

    docker如何挂载、修改文件

    docker如何挂载、修改文件

    第三步:运行

    配置完毕,点击“run”走你。使用docker命令查看 docker ps。

    docker如何挂载、修改文件

    第四步:验证

    浏览器输入localhost:8088,是没有挂载的文件的结果。

    docker如何挂载、修改文件

    浏览器输入localhost:8089,是挂载了的文件的结果。

    docker如何挂载、修改文件

    第二种:命令挂载

    docker挂载的第二种方式就更简单了,采用命令挂载。咱们使用命令挂载的容器名称叫“docker_nginx”,监听的端口是8010,并且挂在和8089那个容器一样。

    docker run --name docker_nginx -d -p 8010:80 
    -v /Users/liluyang/docker/volumes/nginxVolume/index:/usr/share/nginx/htmlnginx

    验证也没问题,结果一样。

    docker如何挂载、修改文件

    实践:文件修改

    前面介绍了几种修改文件的准备工作,接下来就实际操作一下看看效果。关于第二种docker copy命令修改文件,大家可以看看“Docker Nginx 反向代理”这篇文章里面就是使用的命令方式修改文件,这里不做赘述了。https://www.jb51.cc/article/242320.htm。接下来咱们看看挂载修改文件的效果。这里我修改了一下文件内容并保存。

    docker如何挂载、修改文件

    可以看到http://localhost:8010/,http://localhost:8089/都生效了,是不是很简单方便呢。

    docker如何挂载、修改文件

    docker如何挂载、修改文件

    感谢各位的阅读,以上就是“docker如何挂载、修改文件”的内容了,经过本文的学习后,相信大家对docker如何挂载、修改文件这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程之家,小编将为大家推送更多相关知识点的文章,欢迎关注!

    版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

    相关推荐


    最近一直在开发Apworks框架的案例代码,同时也在一起修复Apworks框架中的Bug和一些设计上的不足。遇到的一个普遍问题是,代码的调试过程需要依赖很多外部系统,比如MongoDB、PostgreSQL、RabbitMQ等。当然可以在本机逐一安装这些服务,然后对服务进行配置,使其满足自己开发调试
    最近每天都在空闲时间努力编写Apworks框架的案例代码WeText。在文本发布和处理微服务中,我打算使用微软的SQL Server for Linux来做演示,于是也就在自己的docker-compose中加入了MS SQL Server的服务。其实在Docker中运行SQL Server是非常容
    在《Kubernetes中分布式存储Rook-Ceph部署快速演练》文章中,我快速介绍了Kubernetes中分布式存储Rook-Ceph的部署过程,这里介绍如何在部署于Kubernetes的ASP.NET Core MVC的应用程序中使用Rook-Ceph所创建的存储对象。 构建ASP.NET C
    最近在项目中有涉及到Kubernetes的分布式存储部分的内容,也抽空多了解了一些。项目主要基于Rook-Ceph运行,考虑到Rook-Ceph部署也不那么简单,官方文档的步骤起点也不算低,因此,在整合官方文档的某些步骤的基础上,写篇文章简单总结一下。 Rook-Ceph是Kubernetes中分布
    CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.netcore(二) 之 Dockerfile CentOS下Docker与.netcore(三)之 三剑客之一Docker-Compose CentOS下Docker与.netcore(四)之 三剑客之一D
    CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.netcore(二) 之 Dockerfile CentOS下Docker与.netcore(三)之 三剑客之一Docker-Compose CentOS下Docker与.netcore(四)之 三剑客之一D
    构建镜像最具挑战性的一点是使镜像大小尽可能的小。Dockerfile中的每条指令都为图像添加了一个图层,您需要记住在移动到下一层之前清理任何不需要的工件。对于多阶段构建,您可以在Dockerfile中使用多个FROM语句。每个FROM指令可以使用不同的基础,并且每个指令都开始一个新的构建。您可以选择
    本文介绍compose配置文件参数的使用,熟练编写compose文件 [root@docker lnmp]# cat lnmp.yaml version: &#39;3&#39; services: nginx: build: /root/docker_demo/nginx/ ports: - &q
    环境 docker-machine主机:192.168.1.9 docker主机:192.168.1.10 步骤: 安装docker-machine 创建ssh密钥对,实现两主机无密登录 创建docker主机,命名host1 变更docker环境变量 运行容器查看两端是否同步 镜像容器同步测试成功
    CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.netcore(二) 之 Dockerfile CentOS下Docker与.netcore(三)之 三剑客之一Docker-Compose CentOS下Docker与.netcore(四)之 三剑客之一D
    https://blog.csdn.net/wanglei_storage/article/details/77508620 实践中会发现,生产环境中使用单个 Docker 节点是远远不够的,搭建 Docker 集群势在必行。然而,面对 Kubernetes, Mesos 以及 Swarm 等众多容
    1.引言 紧接上篇.NET Core容器化@Docker,这一节我们先来介绍如何使用Nginx来完成.NET Core应用的反向代理,然后再介绍多容器应用的部署问题。 2. Why Need Nginx .NET Core中默认的Web Server为Kestrel。 Kestrel is grea
    docker rm `docker ps -a | grep Exited | awk &#39;{print $1}&#39;` 删除异常停止的docker容器 docker rmi -f `docker images | grep &#39;&lt;none&gt;&#39; | awk &#3
    什么是Docker Compose 在微服务盛行的今天,我们通常是这么定义Compose的:对容器的统一启动和关闭的编排工具。 但是我以前还是有个疑惑,谁会用Compose在一台服务器上部署多个服务呢?干脆直接用单体服务就行了!直到我遇到了以下的一个需求,让我明白了在一台服务器上不得不用多个服务的时
    CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.netcore(二) 之 Dockerfile CentOS下Docker与.netcore(三)之 三剑客之一Docker-Compose CentOS下Docker与.netcore(四)之 三剑客之一D
    很多时候,我们在本地开发过程中程序运行很正常,但是发布到线上之后由于环境的原因,可能会有一些异常。通常我们会通过日志来分析问题,除了日志还有一种常用的调试手段就是:附加进程。 VS中的附加进程非常强大,目前提供了9种常用的附加方式。 在当前.Net Core支持跨平台的大背景下,其中Linux环境和
    https://www.cnblogs.com/bigberg/p/8867326.html 一、简介 Docker有个编排工具docker-compose,可以将组成某个应该的多个docker容器编排在一起,同时管理。同样在Swarm集群中,可以使用docker stack 将一组相关联的服务进行
    .Net6中想实现对某个网址截屏,可通过Selenium模拟访问网址并实现截图。 实现 安装Nuget包 &lt;PackageReference Include=&quot;Selenium.Chrome.WebDriver&quot; Version=&quot;85.0.0&quot; /&g
    原文&#160;https://www.cnblogs.com/gispathfinder/p/5871043.html 我们在使用docker run创建Docker容器时,可以用--net选项指定容器的网络模式,Docker有以下4种网络模式: host模式,使用--net=host指定。 co