修改运行中容器内的文件
在本步骤中,我们将学习如何修改运行中容器内的文件。这在调试时非常有用,例如更改配置文件或向已运行的容器添加临时脚本。
我们将首先基于 ubuntu
镜像运行一个简单容器,它比 alpine
功能更丰富,包含 shell 和常用工具。
docker run -d --name my-ubuntu ubuntu sleep 3600
该命令以分离模式 (-d
) 运行 Ubuntu 容器,并使用 sleep 3600
命令使其运行一小时。我们将容器命名为 my-ubuntu
以便引用。
现在,使用 docker exec
获取运行中容器内的 shell。
docker exec -it my-ubuntu /bin/bash
你现在应该已进入 my-ubuntu
容器的 bash shell。提示符会变化以反映你正在容器内。
在容器内,让我们在 /tmp
目录创建一个新文件。
echo "This is a test file." > /tmp/test_file.txt
现在验证文件是否已创建并包含正确内容。
cat /tmp/test_file.txt
你应该会看到输出 This is a test file.
。这确认我们能够在运行中的容器内创建并写入文件。
要退出容器 shell,只需输入 exit
。
exit
现在你已回到 LabEx VM 终端。
我们还可以使用 docker cp
命令在运行中容器内外复制文件。让我们在 LabEx VM 上创建一个文件并复制到容器中。
首先,在 ~/project
目录创建名为 local_file.txt
的文件。
echo "This file is from the host." > ~/project/local_file.txt
现在将该文件复制到 my-ubuntu
容器的 /tmp
目录。
docker cp ~/project/local_file.txt my-ubuntu:/tmp/
docker cp
的格式是 docker cp <源路径> <容器名>:<目标路径>
或 docker cp <容器名>:<源路径> <目标路径>
。
让我们验证文件是否已复制到容器中。重新进入容器 shell。
docker exec -it my-ubuntu /bin/bash
在容器内,检查 /tmp
中是否存在 local_file.txt
。
ls /tmp/
你应该会看到 local_file.txt
与 test_file.txt
一起列出。
现在查看容器内 local_file.txt
的内容。
cat /tmp/local_file.txt
你应该会看到输出 This file is from the host.
。
再次退出容器 shell。
exit
最后,清理容器。
docker stop my-ubuntu
docker rm my-ubuntu
本步骤演示了如何使用 docker exec
获取 shell 和标准 Linux 命令来修改运行中容器内的文件,以及如何使用 docker cp
在主机和容器之间复制文件。