web-dev-qa-db-ja.com

Docker:Docker Toolboxを使用してWindowsでボリュームを共有する

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'

私の音量オプションは考慮されていないようです。そして、コンテナは作成されません。

何が間違っているのでしょうか?

19
jiboulex

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
55
Andy Shinn

ステップ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

4
langdead
  • 「Oracle VM VirtualBox」を開く
  • 「デフォルトが選択されたら」「構成」をクリックします
  • 「せん断フォルダ」に移動し、目的のフォルダを追加します
  • 次に、コンソールに入力してデフォルトを再起動します

    docker-machine restart default

4
Claude Janz

メッセージは「警告」であり、エラーメッセージではありません。コンテナが作成されていませんか?コマンド「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」)を入力して、コンテナ内の潜在的な問題をデバッグし、コンテナの構造を確認する必要があります。

0
iclman

Dockerボリュームオプションでは、二重引用符は不要だと思います。

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

動作しているか確認してください。私はわかりません。

コンテナ内のデータの管理のボリュームマッピングの例を参照してください。

0
Somnath Muluk