簡體   English   中英

在Windows 8上安裝的Docker卷無法正常工作

[英]Docker volumes mounting on Windows 8 is not working

上下文

我想在Windows 8上運行一個Docker Compose應用程序。我在Ubuntu 16.04下運行它並且它完美地工作。

這個Docker Compose運行:

  • nginx的
  • PHP-FPM

兩個容器使用卷。

我的.env文件:

COMPOSE_CONVERT_WINDOWS_PATHS=1
APPLICATION_PATH=//C/Users/my_user/Documents/Development/my_application

docker-compose.yml文件:

version: '2'

services:
  web:
    build: ../application-web/
    ports:
     - "80:80"
    tty: true
    # Add a volume to link php code on the host and inside the container
    volumes:
     - ${APPLICATION_PATH}:/usr/share/nginx/html/application
     - ${APPLICATION_PATH}/docker_files/docker-assistant:/usr/share/nginx/html/assistant
    # Add hostnames to allow devs to call special url to open sites
    extra_hosts:
     - "localhost:127.0.0.1"
     - "assistant.docker:127.0.0.1"
     - "application.dev:127.0.0.1"
    depends_on:
     - custom-php
    links:
     - custom-php:custom-php

  custom-php:
    build: ../application-php/
    ports:
     - "50:50"
    volumes:
     - ${APPLICATION_PATH}:/usr/share/nginx/html/application
     - ${APPLICATION_PATH}/docker_files/docker-assistant:/usr/share/nginx/html/assistant

問題

當我運行docker-compose up ,一切順利。 容器開始。 但是當我嘗試在我的網絡瀏覽器中訪問http://192.168.99.100時,我收到403錯誤。

我的調查顯示nginx和php容器中沒有掛載的卷:

docker exec -it compose_web_1 bash
ls -la /usr/share/nginx/html/assistant/

節目

drwxr.xr.x 2 root root   80 May 18 15:30 .
drwxr.xr.x 2 root root 4096 May 18 16:10 ..

似乎Docker無法安裝卷。 為什么?

其他信息

  • 我正在使用Docker工具箱: https//www.docker.com/products/docker-toolbox
  • 我知道這是一個很好的IP地址,因為當我嘗試在我的網絡瀏覽器中訪問它時,我看到我的nginx容器顯示了日志。
  • 設置為//C:/Users/my_user/Documents/Development/my_application的環境變量APPLICATION_PATH無法工作,因為Docker使用“:”字符作為卷聲明的分隔符:

    錯誤:卷// C:/ Users / my_user / Documents / Development / my_application:// C:/ Users / my_user / Documents / Development / my_application格式不正確,應該是external:internal [:mode]

  • 這不是一個nginx問題,因為當我在文件夾中創建一個index.phtml文件時,我能夠運行它:

     <?php echo 'Hello world!'; 

好的,我終於做到了!

TL; DR

按照這些說明,可以訪問容器內的C:\\。

1.安裝Docker Toolbox

去吧: https//www.docker.com/products/docker-toolbox

安裝它。

2.運行Hello世界

打開Docker快速啟動終端。

Docker快速啟動終端已打開

在其中運行:

docker run hello-world

3.與Docker共享C:\\

打開Virtualbox

Virtualbox打開了

打開default虛擬機的配置並轉到shared folders

配置默認虛擬機

單擊右側的按鈕修改或創建新的共享文件夾。 將選項設置為:

  • C:\\
  • C
  • 自動安裝
  • 永久配置

然后驗證。

在此輸入圖像描述

4.激活共享

關閉default虛擬機,然后重新啟動它。

5.設置你的路徑

eG如果您有.env文件:

COMPOSE_CONVERT_WINDOWS_PATHS=1
APPLICATION_PATH=//C/path_from_C_to_the_folder_you_want_to_share_on_the_volume

/!\\ 需要 COMPOSE_CONVERT_WINDOWS_PATHS設置為1!

6.開始撰寫

在Docker快速入門終端中:

Docker快速啟動終端已打開

轉到Docker Compose文件夾,然后啟動它:

cd /path_to_your_compose_folder
docker-compose up

我為什么這樣做? 這太復雜了!

Docker技術依賴於Linux命名空間。 沒有Linux,它無法工作。 為了允許在Windows上使用Docker,Docker需要安裝Linux虛擬機。 所有容器都將在其中運行。

Docker堆棧解釋

現在,在Virtualbox中創建並運行default虛擬機,這就是您必須使用Virtualbox共享文件夾的原因。

共享后, default虛擬機將在其中安裝一個帶有自定義名稱的文件夾(在上面的示例中,它是C但它可能是elephant或其他)。

最后,Docker會將卷從default虛擬機安裝到容器中:您必須在卷聲明中使用default機器共享文件夾的名稱(在上面的示例中,它是C但它可能是elephant或其他)。

Docker文件夾共享說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM