修改Docker容器内文件的三种实现方式

 更新时间:2024年08月01日 10:31:12   作者:何中应  
这篇文章主要介绍了修改Docker容器内文件的三种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

说明:本文介绍修改Docker容器内文件的三种方式

方式一:直接修改

敲下面的命令,进入Docker容器,如mysql

docker exec -it mysql /bin/bash

修改mysql的配置文件,/etc/my.cnf

vim /etc/my.cnf

如下,如果vim不行,可试下vi或其他编辑命令,总之,我试了一些编辑命令,是无法编辑的

方式二:将文件复制到容器外

敲下面的命令,将容器内需要修改的文件拷贝到容器外面,如mysql容器,将容器内的配置文件复制到容器外。

如下,将my.cnf复制到容器外的当前位置

docker cp mysql:/etc/my.cnf ./

修改配置,如端口号,改回3306

修改完成,敲下面的命令,将文件复制回容器里

docker cp ./my.cnf mysql:/etc/

进入容器查看,可见修改成功。

这时重启容器,容器内MySQL服务的端口就是3306

方式三:使用数据卷

敲下面的命令,创建一个数据卷;

docker volume create mysql

敲下面的命令,查看已创建的数据卷;

docker volume ls

运行容器时,加上-v 数据卷名称:容器内路径挂载数据卷,这样容器内的文件就可以在容器外修改了,是同步的。

如下,我想把mysql容器内的/etc路径挂载到mysql数据卷上。

docker run --name=mysql -v mysql:/etc -e MYSQL_ROOT_PASSWORD=123456 -p 4406:4406 -d mysql:8.1.0

敲下面的命令,查看数据卷挂载的、容器内路径在哪里,这里的mysql是数据卷的名称。

docker volume inspect mysql

切换到这个路径,可以看到这里的文件其实就是mysql容器内下的/etc文件夹,在这里我们可以直接修改MySQL配置文件,my.cnf

端口号设置为4406,因为刚刚启动容器指定的容器内端口是4406,不改成4406是没法使用MySQL的

修改完,重启容器生效。

另外

另外,关于容器的数据卷。我们运行容器时,docker会自动为我们挂载一个数据卷,保存容器内的应用产生的数据,可敲下面的命令查看

docker inspect -f '{{range .Mounts}}{{.Name}} {{end}}' 容器名

如上,是我创建的MySQL容器自动创建的数据卷。这个数据卷挂载的是容器内/var/lib/mysql路径,该路径下存储了MySQL的数据。

所以,如果你不小心删除了容器,也不要担心数据会丢失,可以再运行一个容器,然后挂载这个数据卷,这样运行的容器就是有历史数据的(亲测有效)

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 如何使用docker配置wordpress

    如何使用docker配置wordpress

    本文详细介绍了如何使用Docker安装并配置WordPress,包括配置Yum源下载Docker,检查安装成功,并设置开机启动,还涉及了如何配置MySQL密码,以及设置php.ini来增加WordPress的文件上传大小限制,最后,通过访问指定IP完成WordPress的配置
    2024-10-10
  • Docker端口冲突与CentOS防火墙管理的完整指南

    Docker端口冲突与CentOS防火墙管理的完整指南

    在日常的开发和部署过程中,我们经常会遇到各种网络和端口相关的问题,本文将通过一个真实的案例,详细讲解如何解决Docker端口冲突问题,并深入探讨CentOS系统中的防火墙管理策略
    2025-08-08
  • docker pull镜像的时候下载卡死问题及解决过程

    docker pull镜像的时候下载卡死问题及解决过程

    Docker pull镜像卡死时,删除overlay2和tmp目录文件可能因权限问题报错,重新安装Docker或重启服务可解决,此为个人经验,供参考,欢迎支持脚本之家
    2025-09-09
  • S3命令行工具Docker容器运行过程

    S3命令行工具Docker容器运行过程

    本文介绍了使用Dockerfile和两种方式(环境变量文件和逐个传递环境变量)来运行容器并构建镜像,以实现从S3存储桶上传和下载文件的功能
    2026-04-04
  • 聊聊Docker不适合跑 MySQL 的N个原因

    聊聊Docker不适合跑 MySQL 的N个原因

    容器是为了解决“在切换运行环境时,如何保证软件能够正常运行”这一问题,这篇文章主要介绍了Docker 为什么不适合跑 MySQL?有N个原因,需要的朋友可以参考下
    2022-12-12
  • docker update 命令与环境变量管理方法

    docker update 命令与环境变量管理方法

    本文介绍Docker中dockerupdate命令用于动态调整运行中容器的配置,如资源限制、重启策略等,但部分需重启生效,环境变量在启动时设置,无法动态修改,建议通过挂载文件或Docker Compose管理,感兴趣的朋友跟随小编一起看看吧
    2025-07-07
  • Docker 批量删除容器或镜像的操作方法

    Docker 批量删除容器或镜像的操作方法

    这篇文章主要介绍了Docker 批量删除容器或镜像的操作方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • Docker部署Java项目实践详细介绍

    Docker部署Java项目实践详细介绍

    Docker是一种流行的容器化平台,用于部署和管理Java项目,这篇文章主要给大家介绍了关于Docker部署Java项目的相关资料,通过构建Docker镜像、编写Dockerfile和使用DockerCompose进行多服务部署,需要的朋友可以参考下
    2025-05-05
  • docker中Dockerfile方式建立镜像HelloWorld

    docker中Dockerfile方式建立镜像HelloWorld

    这篇文章主要介绍了docker中Dockerfile方式建立镜像HelloWorld,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • docker启动nginx无法访问的问题解决

    docker启动nginx无法访问的问题解决

    本文主要介绍了docker启动nginx无法访问的问题解决,主要遇到404错误,问题原因是配置文件路径错误和权限问题,下面就来具体介绍一下问题解决,感兴趣的可以了解一下
    2025-02-02

最新评论