Подтвердить что ты не робот

Docker: совместное использование тома в Windows с помощью панели инструментов Docker

Я пытаюсь настроить среду dev через контейнер докеров на моем компьютере с Windows 7.

Я установил панель инструментов Docker для окон.

У меня есть изображение с apache и php5.6 внутри, вот оно:

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

Это изображение создано, и я вижу его, когда я запускаю "файлы докеров" в терминале быстрого запуска докера.

В моем apache-config.conf у меня есть маленький виртуальный хост для доступа к тестовому сайту с помощью только файла index.php.

Затем я пытаюсь создать контейнер в терминале быстрого запуска Docker:

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

Я получаю следующую ошибку:

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'

Похоже, что мой параметр объема не учитывается. И контейнер не создан.

Есть ли у кого-нибудь представление о том, что я могу делать неправильно?

4b9b3361

Ответ 1

См. примечание для Windows и Mac по адресу https://docs.docker.com/engine/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume. В частности:

Если вы используете Docker Machine на Mac или Windows, ваш демон Docker имеет ограниченный доступ к вашей файловой системе OS X или Windows. Docker Machine пытается автоматизировать обмен файлами /Users (OS X) или C:\Users (Windows).

В принципе, вам нужно будет переместить файлы своего сайта куда-нибудь, например c:\Users\sites, а затем смонтировать с помощью чего-то вроде предлагаемого в документации:

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

Ответ 2

Я думаю, что для вариантов объема докеры двойные кавычки не требуются.

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

Проверьте, работает ли он. Я не уверен.

См. пример отображения томов в Управление данными в контейнерах

Ответ 3

Сообщение является "ПРЕДУПРЕЖДЕНИЕ", а не сообщением об ошибке. Вы уверены, что ваш контейнер не создан? Вы проверили с помощью команды "docker ps -a"?

Если сообщение является основной причиной вашей проблемы, вы должны разобраться с отсутствием /var/www/html/test внутри вашего контейнера. Если это не нужно, вы должны удалить его из конфигурации apache (возможно, внутри файла /etc/apache 2/sites-enabled/000-default.conf или/etc/apache2/apache2.conf).

Если требуется /var/www/html/test, вы можете попробовать и добавить

RUN mkdir /var/www/html/test

внутри вашего файла Docker, чтобы убедиться, что каталог существует.

Кроме того, чтобы попробовать отладить проблему, вы можете попробовать запустить контейнер без использования тома. Если нет ошибки, вы должны ввести контейнер ( "docker exec -it php5.6_container bash" ), чтобы отладить потенциальную проблему внутри вашего контейнера и проверить структуру вашего контейнера.