2015-12-08 21 views
13

Próbuję skonfigurować środowisko deweloperskie za pomocą kontenera dokera na komputerze z systemem Windows 7.Docker: Udostępnianie woluminu w systemie Windows przy użyciu przybornika Docker

Zainstalowałem przybornik Dockera dla Windows.

Mam obrazu z apache i php5.6 wewnątrz, to jest tutaj:

FROM php:5.6.15-apache 

RUN apt-get update && apt-get install -y \ 
apt-utils vim git php5-mysql php5-memcache php5-memcached php5-intl \ 
wget 
RUN apt-get install libapache2-mod-php5 -y -o Dpkg::Options::="--force-confdef" 
RUN docker-php-ext-install mbstring 
RUN docker-php-ext-install pdo pdo_mysql 
RUN apt-get install libcurl4-gnutls-dev -y 
RUN docker-php-ext-install curl 
RUN a2enmod rewrite 

ENV APACHE_RUN_USER myname 
ENV APACHE_RUN_GROUP www-data 
ENV APACHE_LOG_DIR /var/log/apache2 
ENV APACHE_LOCK_DIR /var/lock/apache2 
ENV APACHE_PID_FILE /var/run/apache2.pid 

EXPOSE 80 

COPY php.ini /usr/local/etc/php/php.ini 
COPY apache-config.conf /etc/apache2/sites-enabled/000-default.conf 
RUN echo "ServerName 127.0.1.1" >> /etc/apache2/apache2.conf 

Ten obraz jest tworzony i mogę go zobaczyć, kiedy biegnę „obrazów Döcker” w terminalu doker QuickStart.

W moim apache-config.conf, mam tylko mały wirtualny host, aby uzyskać dostęp do strony testowej za pomocą pliku index.php.

Potem spróbuj utworzyć kontener w terminalu szybkiego startu Docker:

docker run --name=php5.6_container --rm -v "//c/sites:/var/www/html" -p 80:80 -p 8080:8080 php5.6 

pojawia się następujący błąd:

AH00112: Warning: DocumentRoot [/var/www/html/test] does not exist 
AH00112: Warning: DocumentRoot [/var/www/html/test] does not exist 
[Tue Dec 08 16:36:37.703143 2015] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.10 (Debian) configured -- resuming normal operations 
[Tue Dec 08 16:36:37.703733 2015] [core:notice] [pid 1] AH00094: Command line: ' 
apache2 -D FOREGROUND' 

Wydaje się, że opcja moja objętość nie jest brane pod uwagę. Kontener nie jest tworzony.

Czy ktoś ma pojęcie o tym, co mogę zrobić źle?

Odpowiedz

32

Zobacz notatkę dla systemu Windows i komputerów Mac pod numerem https://docs.docker.com/engine/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume. W szczególności:

Jeśli używasz Docker Machine na Macu lub Windows, twój demon Docker ma ograniczony dostęp do systemu plików OS X lub Windows. Docker Machine próbuje automatycznie udostępniać katalog/Users (OS X) lub C: \ Users (Windows).

Zasadniczo trzeba będzie przenieść pliki witryny do czegoś takiego jak c:\Users\sites a następnie zamontować przy użyciu coś jak sugeruje się w dokumentacji:

docker run --name=php5.6_container --rm -v "/c/Users/sites:/var/www/html" -p 80:80 -p 8080:8080 php5.6 
+0

Dziękuję, sir! Do następnego kroku mam inne pytanie, jeśli masz pomysł: Teraz, gdy mój kontener działa, a apache działa, próbuję go otworzyć w przeglądarce, ale nie mogę Zrobiłem to, próbowałem sprawdzić mój pojemnik, ale nie znalazłem adresu IP ("IPAddress": "") i kiedy próbowałem edytować plik/etc/hosts na kontenerze, aby dodać 127.0.0.1 t est.loc i zrestartował usługę apache2, zatrzymał mój kontener i moja edycja nie została zapisana .. jakiś pomysł? – jiboulex

+0

To prawdopodobnie gwarantuje nowe pytanie. Wolę nie rozwiązywać problemów związanych z kolejnymi problemami jako komentarzami. –

0

Myślę, że dla opcji głośności dokowania podwójne cudzysłowy nie są wymagane.

docker run --name=php5.6_container --rm -v //c/sites:/var/www/html -p 80:80 -p 8080:8080 php5.6 

Sprawdź, czy działa. Nie jestem pewien.

Zobacz przykład odwzorowania głośności w Manage data in containers

+0

dziękuję za odpowiedź Somnath, ale to niczego nie zmienia :( – jiboulex

0

wiadomość jest „ostrzeżenie” nie jest komunikat o błędzie. Jesteś pewien, że twój kontener nie został utworzony? Czy sprawdziłeś za pomocą polecenia "docker ps -a"?

Jeśli wiadomość jest podstawową przyczyną problemu, należy uporządkować nieistnienie/var/www/html/test w swoim kontenerze. Jeśli nie jest to konieczne, należy usunąć go z konfiguracji apache (prawdopodobnie w pliku /etc/apache2/sites-enabled/000-default.conf lub /etc/apache2/apache2.conf).

Jeśli potrzebna jest/var/www/html/test, można spróbować dodać

RUN mkdir /var/www/html/test 

wewnątrz Dockerfile w celu upewnienia się katalog istnieje.

Ponadto w celu wypróbowania debugowania problemu można spróbować uruchomić kontener bez użycia woluminu. Jeśli nie ma błędów, powinieneś wtedy wejść do kontenera ("docker exec -it php5.6_container bash"), aby usunąć problem z twojego kontenera i sprawdzić strukturę twojego kontenera.

+0

Sprawdziłem po poleceniu run z docker ps -a ale nie utworzono kontenera, ponownie uruchomiłem polecenie bez cudzysłowów w opcjach głośności i wystąpił ten sam błąd, ale tym razem został utworzony kontener. Nie chcę uruchamiać polecenia mkdir, ponieważ folder testowy powinien znajdować się w woluminie, który próbuję udostępnić z moim kontenerem :(Działa dobrze w Linuksie, ale nie mogę go uruchomić w oknach :(: ( – jiboulex

+1

Czy jesteś pewien, że faktycznie masz dostęp do // c/sites ze środowiska Docker.Nie próbowałem jeszcze zestawu narzędzi Docker.Ale z poprzedniej wersji (Boot2Docker), wolałem używać ścieżki w // c/Users/Public. W twoim przypadku możesz skopiować katalogi do C:/Users/Public/sites, a następnie spróbuj zmapować swój wolumin za pomocą "-v // c/Users/Public/sites:/var/www/html " – iclman

0

Krok 1: C:/Program Files/Oracle/VirtualBox/VBoxManage sharedfolder add default -name $shared_folder -hostpath d:/data

Aby pokazać folderów współdzielonych VBoxManage showvminfo default | less

krok 2 (a): mount -t vboxsf -o uid=1000,gid=50 $shared_folder /data

krok 2 (b): Dodawanie automount do boot2docker

po zalogowaniu do urządzenia, edytować/tworzyć (jako root) /mnt/sda1/var/lib/boot2docker/bootlocal.sh dodając poniżej bloku do pliku, sda1 może być różny dla Ciebie ...

mkdir -p /data mount -t vboxsf -o uid=1000,gid=50 $shared_folder /data

następnie docker-machine restart default

etap 3: zwiększenie objętości podczas działania pojemnika (GOGS przykładowa) docker run --name=gogs -rm --net=host -d -v /fuple:/data gogs/gogs

Powiązane problemy