如何在 shell 到 Docker 容器后编辑文件?
在创建Docker镜像时,您需要为镜像指定构建上下文。图像构建上下文包含您希望包含在您将来自该图像的容器中的所有文件。这包括您的应用程序的源代码、Dockerfile、其他系统文件等。一旦您使用Dockerbuild命令指定了构建上下文的位置,您就可以构建映像。
此外,您可以使用Dockerfile中的COPY指令甚至Dockercp命令从本地机器复制容器内的文件。但是如果你想编辑容器内的文件怎么办?简而言之,可能会出现您访问了容器的shell或bash并且想要编辑容器内的文件的情况。在本文中,我们将具体讨论如何做到这一点。
首先,您需要先创建一个图像,以便在创建与该图像关联的容器时,您可以访问容器内的文本文件。有两种方法可以这样做。您可以直接在Dockerfile中使用COPY指令,也可以直接在容器内创建文件。
让我们创建并运行一个Ubuntu容器。
$ docker run -it --name=mycont ubuntu /bin/bash
在上面的Docker运行命令中,我们使用了-i和-t选项,它们代表交互式和伪TTY。这些选项允许我们通过提供输入与容器进行交互。接下来,我们使用了/bin/bash命令,该命令设置了在容器启动后立即执行的默认命令。因此,当我们运行上述命令时,我们将可以访问ubuntu容器的bash。
您甚至可以通过列出所有活动容器来验证容器是否正在活动。保持这个容器bash在终端中运行,打开一个新终端并执行以下命令。
$ docker ps
您会发现您创建的mycont容器正在积极运行。
一旦您可以访问容器的bash,您就可以像与Linux/Ubuntu终端交互一样与它进行交互。要创建文件,我们可以使用touch命令
您可以在容器的bash中执行此命令。
# touch nhooo.txt
要验证文件的创建,您可以列出所有内容。
# ls
如果要编辑容器内的文件,则需要访问文件编辑器。您可以使用nano或在容器内安装vim包。在执行此操作之前,请确保更新容器
# apt-get -y update
现在,您可以使用以下命令安装vim包。
# apt-get -y install vim
现在,使用vim编辑器打开该文件。您可以使用以下命令来执行此操作。
# vi nhooo.txt
要在文件中插入内容,您需要调用插入模式。只需按键盘上的i键。接下来,输入您想要的任何内容。要保存内容,按退出键退出插入模式,输入:q,然后按回车键保存并退出。
要验证,请使用cat命令打印文件中的内容。
# cat nhooo.txt
通过这种方式,您可以使用您选择的任何编辑器来编辑容器内的文件。
如果您已经有一个在后台运行的容器,您甚至可以使用Dockerexec命令来访问容器的bash。
$ docker exec -itbash
重复上述步骤以创建和编辑文件。
另一种可能是更好的方法是使用Dockerfile直接安装vim编辑器。您可以使用RUN指令执行此操作。让我们来看看。考虑下面的Dockerfile。
FROM ubuntu:latest WORKDIR /app COPY . . RUN ["apt-get", "-y", "update"] RUN ["apt-get", "install", "-y", "vim"]
默认情况下,当您拉取Ubuntu映像时,您将找不到任何文本编辑器。因此,您需要手动安装它。COPY指令将从主机中的当前目录复制容器默认工作目录中的所有文件。在此Dockerfile上执行Dockerbuild命令以构建映像后,您可以使用Dockerrun命令运行容器。
$ docker run -it --name=mycontbash
这样做,您将可以使用已经安装的vim编辑器访问容器的bash。
To conclude, in this article, we discussed how to create and edit a file inside a Docker container if you have access to the container’s shell. You can use the Docker run command if you don’t have a container or the Docker exec command if you already have a container running. You can install any text editor that you prefer.