13

Macbook Pro ラップトップを使用しており、docker-machine (0.5.0)とdocker -compose (1.5.0)を実行してコンテナーを稼働させています。

これは、docker-machine を使用して、virtualbox の boot2docker 駆動の HOST マシンを作成していることを意味します。これは、docker デーモンを実行し、すべてのコンテナーをホストします。

HOSTS と VOLUME の概念は、Docker とドキュメントを参照しているため、重要な点が欠けていると思います。

これは私の docker-compose.yml ファイルです (web は単に php:5.6-apache イメージをビルドします):

web:
  restart: "always"
  build: ./docker-containers/web
  ports:
    - "8080:80"
  volumes:
    - ./src:/var/www/html
  links:
    - mysql:mysql

mysql:
  restart: "always"
  image: mysql:5.7
  volumes_from:
    - data
  ports:
    - "3306:3306"
  environment:
    - MYSQL_ROOT_PASSWORD=XXX

data:
  restart: "no"
  image: mysql:5.7
  volumes:
    - /var/lib/mysql
  command: "true" 

ボリュームの Docker Compose ファイルのドキュメントはこちら: http://docs.docker.com/compose/compose-file/

ボリュームについて -マウント パスをボリュームとして指定し、オプションでホスト マシン上のパス (HOST:CONTAINER) またはアクセス モード (HOST:CONTAINER:ro) を指定します。

この場合の HOST は、docker-machine によって作成された VM を指しますよね? それともローカルの macbook ファイル システムですか? VM のパスをコンテナーにマウントしますか?

Webの下で私は宣言します:

volumes:
  - ./src:/var/www/html

これは、私の macbook pro のローカル macbook ファイル システム./srcフォルダーを Web コンテナーにマッピングしています。私の理解が正しければ、 VMの./srcフォルダーをWeb コンテナー内の/var/www/htmlにマッピングするべきではありませんか?! 理論的には、ローカルの mac ファイル システム フォルダー./srcを最初に VMに COPY する必要があると思います。次に、このボリューム宣言を行います。docker-compose は魔法のように一度にすべてを行っているようですが? 混乱している

最後に、mysql データを永続化するためにデータのみのコンテナーを作成していることがわかります。私は宣言しました:

volumes:
   - /var/lib/mysql

これにより、HOST boot2docker VM に/var/lib/mysqlフォルダーが作成され、VM 上のこのフォルダーに移動できるようになりませんか (はい/いいえ)。docker-machine を使用して自分のマシンに ssh し、次に/var/libに移動すると、 mysqlフォルダーがまったくない?! なぜ作成されていないのですか?構成に何か問題がありますか? :/

前もって感謝します!ここで私が間違っていることについての説明をいただければ幸いです。

4

1 に答える 1