docker 目前如火如荼,确实方便,好多程序都提供 docker版,在日常测试中通过docker非常方便,但是会经常遇到 docker 中没有vi 命了,当需要编辑个配置文件的时候,很是不方便,这里总结记录如下。

安装 vi 命令

当然在docker中安装 vi 命令是最彻底的。以下是docker中安装vi的步骤

  1. 确定容器的基础镜像
    首先,确定你的容器使用的是什么基础镜像(如 Debian、Ubuntu、Alpine、CentOS 等)。运行以下命令查看:
1
cat /etc/os-release
  1. 安装 vi
    根据基础镜像类型选择正确的包管理工具安装 vi。

Debian/Ubuntu 系列镜像
使用 apt-get 安装 vi 或 vim:

1
apt-get update && apt-get install -y vim

这个通常要运行 apt-get update 否则可能会找不到vim。

Alpine 系列镜像
Alpine 是一个轻量级镜像,通常没有自带 vi。可以通过 apk 安装:

1
apk add vim

CentOS/RHEL 系列镜像
使用 yum 安装 vi 或 vim:

1
yum install -y vim
  1. 使用其他工具替代(临时方案)
    如果不想安装 vi,可以使用以下工具进行临时编辑:

使用 echo 或 cat 直接创建或修改文件:

1
echo "内容" > 文件名

如果容器内有 nano 或其他文本编辑器,可以尝试使用:

1
nano 文件名

使用挂载主机文件: 在主机上编辑文件后,通过挂载的方式映射到容器:

1
docker run -v /path/to/local/file:/path/in/container -it your-image

其实目前最常用的docker 基础景象是 Debian/Ubuntu 系列镜像,不过目前随着版本的升级,老版本的 源都已经失效了,有的时候无法通过之间安装vim的方式,下面说下通过宿主机的方式试下

直接从容器复制文件到宿主机,编辑后再复制回去

从容器中复制文件到宿主机
使用 docker cp 命令将容器中的文件复制到宿主机:

1
docker cp 22b1d1f05599:/var/www/html/config/config.php /path/on/host/config.php

这会将容器中的文件复制到宿主机的 /path/on/host/config.php 路径。

在宿主机上编辑文件
使用宿主机上的文本编辑器(如 vim 或 nano)编辑文件:

1
vim /path/on/host/config.php

将文件复制回容器
编辑完成后,将文件复制回容器:

1
docker cp /path/on/host/config.php 22b1d1f05599:/var/www/html/config/config.php

方法 2:挂载宿主机目录到容器(没测试过)
如果可以重新运行容器,可以使用挂载方式直接将宿主机的文件夹挂载到容器内。

停止当前容器

1
docker stop 22b1d1f05599

启动时挂载文件或目录
将宿主机上的文件夹或文件挂载到容器中。例如:

1
docker run -v /path/on/host/config.php:/var/www/html/config/config.php -it your-image

这样,你可以直接在宿主机上编辑 /path/on/host/config.php 文件,修改内容会直接反映在容器中。

原文作者: liups.com

原文链接: http://liups.com/posts/71938eb2/

许可协议: 知识共享署名-非商业性使用 4.0 国际许可协议