向 Docker 容器中拷贝文件可以通过以下几种方法实现:
docker cp
命令(最简单常用)语法:
docker cp <本地文件路径> <容器名或ID>:<容器内目标路径>
docker cp <容器名或ID>:<容器内文件路径> <本地目标路径> # 反向操作(从容器拷贝到宿主机)
示例:
# 将宿主机文件拷贝到容器
docker cp /host/path/file.txt my-container:/container/path/
# 从容器拷贝文件到宿主机
docker cp my-container:/container/path/file.txt /host/path/
注意: - 命令需在宿主机上执行。 - 容器无需处于运行状态(但需存在)。
适合需要频繁共享文件的场景(文件变更实时同步)。
方法:
docker run -v /host/path:/container/path my-image
或对已存在的容器:
docker run --name my-container -v /host/path:/container/path my-image
优点: - 文件双向实时同步。 - 适合开发调试场景。
docker exec
和重定向(临时操作)若容器内已安装 tar
或 cat
等工具,可通过管道传输:
示例:
# 宿主机 -> 容器
cat /host/path/file.txt | docker exec -i my-container sh -c 'cat > /container/path/file.txt'
# 容器 -> 宿主机
docker exec my-container cat /container/path/file.txt > /host/path/file.txt
通过 Dockerfile
的 COPY
或 ADD
指令将文件打包到镜像中:
FROM alpine
COPY /host/path/file.txt /container/path/
然后重新构建镜像:
docker build -t my-new-image .
适用场景: - 文件需要持久化到镜像中。
-u root
:
bash
docker exec -u root my-container touch /path/file.txt
bash
docker exec my-container mkdir -p /container/path
docker cp
。Dockerfile
的 COPY
。根据实际需求选择最合适的方式即可。