修改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-compose启动redis多机集群的实现(6台服务器3主3从)

    docker-compose启动redis多机集群的实现(6台服务器3主3从)

    本文主要介绍了docker-compose启动redis多机集群的实现(6台服务器3主3从),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • 基于docker的 nacos安装部署过程

    基于docker的 nacos安装部署过程

    这篇文章主要介绍了基于docker的 nacos安装部署,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-08-08
  • Docker-Compose 容器集群的快速编排方法

    Docker-Compose 容器集群的快速编排方法

    Docker-Compose项目由Python编写,调用Docker服务提供的API来对容器进行管理。因此,只要所操作的平台支持Docker API, 就可以在其上利用Compose来进行编排管理,这篇文章主要介绍了Docker-Compose 容器集群的快速编排,需要的朋友可以参考下
    2022-07-07
  • docker比赛提交常用命令小结

    docker比赛提交常用命令小结

    这篇文章主要介绍了docker比赛提交常用命令小结,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • docker私库Harbor的架构与组件说明

    docker私库Harbor的架构与组件说明

    今天小编就为大家分享一篇关于docker私库Harbor的架构与组件说明,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • 详解docker容器硬盘动态扩容

    详解docker容器硬盘动态扩容

    本篇文章主要介绍了详解docker容器硬盘动态扩容,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • Docker Desktop无法正常启动解决(failed to start...)

    Docker Desktop无法正常启动解决(failed to start...)

    有一段时间没有使用docker了,突然要用到结果发现docker desktop用不了了,这篇文章主要给大家介绍了关于Docker Desktop无法正常启动解决的过程,,需要的朋友可以参考下
    2023-01-01
  • Docker部署Node.js的方法步骤

    Docker部署Node.js的方法步骤

    这篇文章主要介绍了Docker部署Node.js的方法步骤。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • 使用Docker部署Dashdot服务器仪表盘的步骤

    使用Docker部署Dashdot服务器仪表盘的步骤

    Dashdot是一款简单、实用的开源服务器仪表盘,设计时考虑到了玻璃形态,它旨在用于较小的 VPS 和私人服务器,这篇文章主要介绍了使用Docker部署Dashdot服务器仪表盘,需要的朋友可以参考下
    2022-12-12
  • CentOS 7.x docker使用overlay2存储方式

    CentOS 7.x docker使用overlay2存储方式

    这篇文章主要介绍了CentOS 7.x docker使用overlay2存储方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11

最新评论