Docker对我来说在Mac上运行良好,但是我必须在VirtualBox(或Parallels或VMWare
Fusion)中运行docker主机,因为Mac的内核不支持docker。
所以我尝试在Ubuntu桌面上设置应用程序和docker-compose-
本机地,其中docker客户端和docker主机都物理上运行在同一系统上。这可行,但是我正在运行的Docker容器无法写入已安装的主机卷。
我使用docker-compose进行以下设置:
volumes:
- ./api:/usr/src/app
因此,我将主机Ubuntu OS的“ api”目录挂载到/ usr / src / app下的docker容器中。
docker inspect <container ID>
显示该卷可写
"Destination": "/usr/src/app",
"Mode": "rw",
"RW": true
但是事实并非如此:permission denied
当我尝试在Docker容器中创建目录或编辑文件时得到提示。
我用谷歌搜索了这个问题,当然,我遇到了一些CentOS / RHEL的SELinux问题,但是 我运行的是Ubuntu 15.10(64位版本)
,而不是CentOS。
如果您uid
在主机(id -u
)上的主机名uid
与docker容器中的用户名(通常为“ docker”)不同,则可能会出现此问题。你可以试试:
chmod a+rwx -R project-dir/
核选项会使您的git
工作区变得肮脏,这会极大地烦扰您,因此这不是最佳的长期解决方案。它可以止血。
为了进一步理解该问题,您可能会发现以下有用:
问题内容: 我已经能够成功使用以下卷在Docker容器之间共享文件夹 但是我的问题是,这与在Dockerfile中使用命令之间有什么区别 我正在使用带有命令的图像,并且想知道如何与主机共享它。我已经使用上面的命令完成了此操作,但我不知道是否同时需要和和。 问题答案: 该命令将在您的容器中安装一个目录,并将在该目录中创建或编辑的所有文件存储 在容器文件结构外部的 主机磁盘上,绕过联合文件系统。 这个
问题内容: 如何从Docker容器控制主机? 例如,如何执行复制到主机的bash脚本? 问题答案: 那真的取决于您需要该bash脚本执行的操作! 例如,如果bash脚本仅回显某些输出,则可以执行 另一种可能性是您希望bash脚本安装某些软件-例如要安装docker-compose的脚本。你可以做类似的事情 但是,此时,您真的必须深入了解脚本在做什么,以允许容器从容器内部对其主机授予特定权限。
如何从docker容器控制主机? 例如,如何执行复制到主机的bash脚本?
我有一个Dockerfile: 当demo.php执行时,它会创建一个文件,我想将该文件复制到主机上的卷。是否可以使用这样的卷将文件从容器中恢复到主机上?
如果我执行docker命令,如 我得到一个错误,docker没有安装,我可以做sudo apt get install docker来安装它。如果我这样做,它会说docker是最新版本。我是否需要设置二进制文件的某种路径才能运行它? 如果我做,没有答案。