我正在尝试为我们使用的Docker容器构建一个备份和恢复解决方案。

我有一个我创建的Docker基础镜像ubuntu:base,不想每次都用Docker文件重新构建它来添加文件。

我想创建一个从主机运行的脚本,并使用ubuntu:base Docker映像创建一个新容器,然后将文件复制到该容器中。

如何将文件从主机复制到容器?


当前回答

容器向上语法:

docker run -v /HOST/folder:/Container/floder 

在docker文件中

COPY hom* /myFolder/        # adds all files starting with "hom"
COPY hom?.txt /myFolder/    # ? is replaced with any single character, e.g., "home.txt"

其他回答

使用Docker 1.8,Docker cp能够将文件从主机复制到容器。请参阅Docker博客文章Announcing Docker 1.8:内容信任、工具箱以及注册表和编排更新。

docker cp SRC_PATH CONTAINER_ID:DEST_PATH

例如,我想将我的文件xxxx/download/jenkins复制到tomcat

我开始获取容器Tomcat的id

docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
63686740b488        tomcat              "catalina.sh run"   12 seconds ago      Up 11 seconds       0.0.0.0:8080->8080/tcp   peaceful_babbage

docker cp xxxx/download/jenkins.war  63686740b488:usr/local/tomcat/webapps/

假设容器已经在运行,请键入给定的命令:

# cat /path/to/host/file/ | docker exec -i -t <container_id> bash -c "/bin/cat > /path/to/container/file"

要使用共享目录共享文件,请键入以下命令运行容器:

# docker run -v /path/to/host/dir:/path/to/container/dir ...

注意:由于容器的用户与主机的用户不同,因此可能会出现权限问题。

docker cp[OPTIONS]SRC_PATH CONTAINER:DEST_PATH从主机复制到容器。

docker cp[OPTIONS]CONTAINER:SRC_PATH DEST_PATH将从容器复制到主机。

tar和dockercp是复制目录中所有内容的好组合。

创建数据卷容器

docker create --name dvc --volume /path/on/container cirros

保留目录层次结构

tar -c -C /path/on/local/machine . | docker cp - dvc:/path/on/container

检查您的工作

docker run --rm --volumes-from dvc cirros ls -al /path/on/container