Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wordpress 如何将docker容器中的目录装载到主机?_Wordpress_Docker_Boot2docker - Fatal编程技术网

Wordpress 如何将docker容器中的目录装载到主机?

Wordpress 如何将docker容器中的目录装载到主机?,wordpress,docker,boot2docker,Wordpress,Docker,Boot2docker,在docker容器中装载主机目录非常容易 但我需要另一种方式 我使用docker容器作为开发WordPress插件的开发环境。这个docker容器包含运行WordPress所需的一切(MySQL、Apache、PHP和WordPress)。我从docker容器中的主机挂载我的plugin src文件夹,以便在开发过程中测试我的插件 对于调试,如果在主机上运行的IDE对docker容器中的WordPress文件具有读取权限,这将非常有用 我找到了两种解决问题的方法,但两种方法似乎都很难解决 将数据

在docker容器中装载主机目录非常容易

但我需要另一种方式

我使用docker容器作为开发WordPress插件的开发环境。这个docker容器包含运行WordPress所需的一切(MySQL、Apache、PHP和WordPress)。我从docker容器中的主机挂载我的plugin src文件夹,以便在开发过程中测试我的插件

对于调试,如果在主机上运行的IDE对docker容器中的WordPress文件具有读取权限,这将非常有用

我找到了两种解决问题的方法,但两种方法似乎都很难解决

  • 将数据卷添加到docker容器,以及WordPress文件的路径

    码头工人跑-v/usr/share/wordpress/

    Docker将此目录添加到主机/var/lib/Docker/vfs/dir上的路径。。。但是您需要使用docker inspect查找实际路径,并且需要root访问权限才能查看文件

  • 将主机目录装载到docker容器,并将容器中的WordPress文件复制到装载的主机目录。符号链接似乎不起作用

  • 有更好的方法吗?不复制文件或更改访问权限


    谢谢大家!

    为什么不直接做:
    docker run-v/usr/share/wordpress/:/usr/share/wordpress
    。现在,您的本地/usr/share/wordpress/被映射到Docker容器中的/usr/share/wordpress,并且两者都有相同的文件。您也可以通过这种方式安装到容器中的其他位置。语法是host\u path:container\u path,因此如果您想将/usr/share/wordpress从主机装载到容器上的/my/new/path,您只需执行以下操作:
    docker run-v/usr/share/wordpress/:/my/new/path

    您可以使用smb与以下人员共享文件:

    docker run --rm -v $(which docker):/docker -v /var/run/docker.sock:/docker.sock svendowideit/samba <container name>
    
    docker-run--rm-v$(哪个docker):/docker-v/var/run/docker.sock:/docker.sock svendowideit/samba
    
    将WordPress文件复制到挂载文件夹是解决方案

    我将容器中的文件从原始文件夹移动到装入的文件夹,并使用符号链接将它们链接回原始文件夹


    重要的是,容器可以跟随容器中的符号链接,但主机不能。因此,仅仅使用从原始文件夹到已装入文件夹的符号链接是行不通的,因为主机无法在容器中跟踪符号链接

    如果您使用卷而不是文件系统路径,则可以这样做。如果它已经不存在,它会自动为您创建

    docker run -d -v usr_share_wordpress:/usr/share/wordpress --name your_container ... image
    
    停止或删除容器后,卷将与容器中的文件一起存储在文件系统中

    您可以使用busybox映像在_容器的生命周期内检查卷内容。比如:

    docker run -it --rm --volumes-from your_container busybox sh
    
    关闭
    您的_容器后
    您仍然可以使用以下工具检查音量:

    docker run -it --rm -v usr_share_wordpress:/usr/share/wordpress busybox sh
    

    列出具有
    docker卷ls
    的卷

    我也需要将容器中的文件公开给主机。到今天为止,这方面还有一个新的进展。提到的一个解决方法是使用
    绑定
    ,它非常简洁;它在容器启动并运行时工作:

    container_root=$(docker inspect --format {{.State.Pid}} "$container_name")/root
    sudo bindfs --map=root/"$USER" "$container_root/$app_folder" "$host_folder"
    

    PS:我不确定这是否有利于生产,但它应该在开发场景中工作

    本地/usr/share/wordpress将替换容器中/usr/share/wordpress的内容。本地文件夹为空,只有容器文件夹包含WordPress文件。因此,容器中的WordPress文件将替换为空的本地文件夹。我需要另一种方法。@KaiHofstetter您可以将原始wordpress文件保存在
    /usr/share/wordpress
    之外的其他位置,并在容器启动时将其复制到那里(通常由entrypoint脚本完成)。通过这种方式,您可以将文件传播回主机映射目录。我们是否可以转到文件系统级别,即
    /var/lib/docker
    ,创建一个从主机文件夹到容器文件夹的符号链接?只要您能找到它就行了?