Windows 7コンピューターのDockerコンテナーを使用して開発者環境をセットアップしようとしています。
Windows用のDockerツールボックスをインストールしました。
ApacheとPHP 5.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
このイメージが作成され、Dockerクイックスタートターミナルで「docker images」を実行すると表示されます。
Apache-config.confには、index.phpファイルだけでテストWebサイトにアクセスするための小さな仮想ホストがあります。
次に、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'
私の音量オプションは考慮されていないようです。そして、コンテナは作成されません。
何が間違っているのでしょうか?
https://docs.docker.com/engine/userguide/dockervolumes/#mount-a-Host-directory-as-a-data-volume でWindowsおよびMacに関する注意を参照してください。特に:
MacまたはWindowsでDocker Machineを使用している場合、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
ステップ1: C:/Program Files/Oracle/VirtualBox/VBoxManage sharedfolder add default -name $shared_folder -hostpath d:/data
共有フォルダーを表示するには:
VBoxManage showvminfo default | less
ステップ2(a):mount -t vboxsf -o uid=1000,gid=50 $shared_folder /data
ステップ2(b):boot2dockerへの自動マウントの追加
マシンにログインしながら、編集/作成(ルートとして)/mnt/sda1/var/lib/boot2docker/bootlocal.sh
以下のブロックをファイルに追加することにより、sda1が異なる場合があります...
mkdir -p /data mount -t vboxsf -o uid=1000,gid=50 $shared_folder /data
次に、docker-machine restart default
ステップ3:コンテナーの実行時にボリュームを追加する(例としてgogs)docker run --name=gogs -rm --net=Host -d -v /fuple:/data gogs/gogs
次に、コンソールに入力してデフォルトを再起動します
docker-machine restart default
メッセージは「警告」であり、エラーメッセージではありません。コンテナが作成されていませんか?コマンド「docker ps -a」で確認しましたか?
メッセージが問題の根本原因である場合、コンテナ内に存在しない/ var/www/html/testを整理する必要があります。必要ない場合は、Apache構成から削除する必要があります(おそらくファイル/etc/Apache2/sites-enabled/000-default.confまたは/etc/Apache2/Apache2.conf内)。
/ var/www/html/testが必要な場合は、追加してみてください
RUN mkdir /var/www/html/test
dockerfile内で、ディレクトリが存在することを確認します。
また、問題のデバッグを試みるために、ボリュームを使用せずにコンテナーを実行してみてください。エラーがない場合は、コンテナ(「docker exec -it php5.6_container bash」)を入力して、コンテナ内の潜在的な問題をデバッグし、コンテナの構造を確認する必要があります。
Dockerボリュームオプションでは、二重引用符は不要だと思います。
docker run --name=php5.6_container --rm -v //c/sites:/var/www/html -p 80:80 -p 8080:8080 php5.6
動作しているか確認してください。私はわかりません。
コンテナ内のデータの管理のボリュームマッピングの例を参照してください。