Docker在创建安装源路径时编写错误

时间:2017-08-18 20:17:48

标签: docker docker-compose

我使用cloustuary创建了一个docker-compose.yml。下载并将其放入我的Laravel项目文件夹并运行docker-compose up -d后发生下载,然后我收到此消息:

  

错误:for worker-1无法启动service worker-1:创建安装源路径时出错'/ var / www / html / lensin / html':mkdir / var / www:只读文件系统

     

错误:对于nginx无法启动服务nginx:创建安装源路径时出错'/ var / www / html / lensin / html':mkdir / var / www:只读文件系统

     

错误:for app无法启动服务app:创建安装源路径时出错'/ var / www / html / lensin / html':mkdir / var / www:只读文件系统

     

错误:for workspace无法启动服务工作区:创建安装源路径时出错'/ var / www / html / lensin / html':mkdir / var / www:只读文件系统   错误:在启动项目时遇到错误。

我在Ubuntu 17上,甚至尝试将777设置为所有文件夹,并使用sudo运行它,但结果是一样的。我还尝试移动文件并编辑yml中的卷。

这是我的docker撰写文件:

version: '2'
services:
    nginx:
        image: 'cloudestuary/nginx:mainline-fpm'
        restart: always
        environment:
            CLIENT_MAX_BODY_SIZE: 100m
            DOCUMENT_ROOT: /var/www/html/public
            INDEX_FILE: index.php
            PHP_FPM: app
        networks:
            - app
        volumes:
            - './html:/var/www/html'
        ports:
            - '80:80'
    app:
        image: 'cloudestuary/php-fpm:7.1'
        restart: always
        environment:
            MAX_UPLOAD_FILE_SIZE: 100m
            APP_URL: 'http://lensin.localhost'
            APP_KEY: 'base64:2X9U1HiBdmfbwvZ4UkwUP/25svg7439HXKWL1F8Xn1c='
            DB_CONNECTION: mysql
            DB_HOST: mysql
            DB_PORT: '3306'
            DB_DATABASE: cloudestuary
            DB_USER: cloudestuary
            DB_PASSWORD: secret
        networks:
            - app
        volumes:
            - './html:/var/www/html'
    workspace:
        image: 'cloudestuary/php-workspace:7.1'
        restart: always
        ports:
            - '2222:22'
        environment:
            MAX_UPLOAD_FILE_SIZE: 100m
            APP_URL: 'http://lensin.localhost'
            APP_KEY: 'base64:2X9U1HiBdmfbwvZ4UkwUP/25svg7439HXKWL1F8Xn1c='
            DB_CONNECTION: mysql
            DB_HOST: mysql
            DB_PORT: '3306'
            DB_DATABASE: cloudestuary
            DB_USER: cloudestuary
            DB_PASSWORD: secret
            SSH_PASSWORD: xsKEVWXPrdAeg
        networks:
            - app
        volumes:
            - './html:/var/www/html'
    worker-1:
        image: 'cloudestuary/php-cli:7.1'
        restart: always
        networks:
            - app
        environment: {  }
        volumes:
            - './html:/var/www/html'
        command: 'php artisan queue:work'
    mysql:
        image: 'mysql:5.7'
        restart: always
        networks:
            - app
        environment:
            MYSQL_ROOT_PASSWORD: toor
            MYSQL_PASSWORD: secret
            MYSQL_USER: cloudestuary
            MYSQL_DATABASE: cloudestuary
        volumes:
            - 'mysql-data:/var/lib/mysql'
volumes:
    mysql-data: {  }
networks:
    app: {  }

5 个答案:

答案 0 :(得分:7)

重新启动您的docker服务。然后问题就会解决。

sudo systemctl restart docker

答案 1 :(得分:0)

从快照中删除Docker

snap remove docker

删除泊坞窗目录,和旧版本(这没关系,如果这些都不存在的话)

rm -R /var/lib/docker

sudo apt-get remove docker docker-engine docker.io

安装官方docker软件包:https://docs.docker.com/install/linux/docker-ce/ubuntu/

答案 2 :(得分:0)

如果您可以负担时间和不便,请重新安装Ubuntu。

我知道,蚊子用锤子敲击??我尝试了所有我可以找到的其他建议,即

  
      
  • 从我的实例中卸载,清除并手动删除所有提及的docker。
  •   
  • 从snap移除docker(如@HyperionX建议)。
  •   

以上无效:( ... 但是我重新安装了! :D:D !!

重新安装后,从官方仓库中安装docker和docker-compose

  
      
  1. 这里:https://docs.docker.com/install/linux/docker-ce/ubuntu/#install-docker-ce
  2.   
  3. 在这里:https://docs.docker.com/compose/install/
  4.   

一切就绪!!!!




Ubuntu重新安装(建议)

由于我的解决方案如果盲目执行,可能会给您带来更多麻烦,因此我个人建议下面的备份和还原步骤 最少 (您的用例可能参与其中。)

在擦除当前安装之前可能要备份一些文件

  • 任何活动的git仓库
  • .ssh/etc/ssh目录(也许用tar -zcvf archive-name.tgz directory-name压缩它们)
  • 任何vpn文件(例如/etc/openvpn/username.conf
  • iptable规则(即 root sudo iptables-save > iptables.backup

重新安装Ubuntu时(我的情况是18.04)

  1. 请勿从ubuntu安装菜单安装任何提及的docker(我宁愿完全放弃所有软件包),因为这似乎会让您直接进入。

  2. 但是 DO 安装ssh服务器

完成后,复制到新机器中

  • git仓库和其他文件,例如vpn的
  • 提取所有压缩文件tar -zxvf archive-name.tgz(并移至正确的目录)
  • 还原iptables sudo iptables-restore < iptables.backup

答案 3 :(得分:0)

对于Windows 10上的Docker,有时您只需要等待一会(1-5分钟),然后再次执行docker-compose up

希望这会对其他人有所帮助。

答案 4 :(得分:0)

导致我来到这里的是Kubernetes V1VolumeMount。部署应用程序时,我得到了相同的错误格式:

ERROR: for <pod_name> Cannot start <service_name>: error while creating mount source path '<source_path>': mkdir <dir_path>: read-only file system

在一开始,我还考虑权限错误,因此该消息有点误导。原来,我正在尝试安装源映像中不存在的内容。因此,我没有教养的建议是,确认您尝试装载的内容确实存在,如果不存在,则可能不需要该装载路径。

P.S。我看到没有一个可接受的答案,所以我希望我的贡献不会引起不必要的混乱。