2016-10-31 16 views
1

ドッカー作成用ファイルに基づいて、さまざまな設定のプロジェクトが多数あります。 私は別のプロジェクトを開始したい場合はdocker-compose stop現在のプロジェクトとdocker-compose up別のプロジェクトを開始します。 しかし、私の問題は次のように聞こえます:2つ以上のドッカーを同時に起動するには? 私のOSのlinux ubuntuです。失敗した私は、エラー複数のドッカー作成用ファイルを同時に実行する方法

を得た別のプロジェクトのドライバーがエンドポイント に外部接続をプログラミングすることは0.0.0.0:3306のバインドmpdockerenv_db_1失敗を実行しようとした場合

application: 
    build: code 
    volumes: 
     - ./mp:/var/www/mp 
     - ./logs/mp:/var/www/mp/app/logs 
    tty: true 
db: 
    image: mysql 
    ports: 
     - 3306:3306 
    environment: 
     MYSQL_ROOT_PASSWORD: root 
     MYSQL_DATABASE: mp-DB 
     MYSQL_USER: root 
     MYSQL_PASSWORD: root 
php: 
    build: php-fpm 
    ports: 
     - 9000:9000 
    volumes_from: 
     - application 
    links: 
     - db 
nginx: 
    build: nginx 
    ports: 
     - 80:80 
    links: 
     - php 
    volumes_from: 
     - application 
    volumes: 
     - ./logs/nginx/:/var/log/nginx 
elk: 
    image: willdurand/elk 
    ports: 
     - 81:80 
    volumes: 
     - ./elk/logstash:/etc/logstash 
     - ./elk/logstash/patterns:/opt/logstash/patterns 
    volumes_from: 
     - application 
     - php 
     - nginx 

: 私のような外観をドッキングウィンドウ-構成するポートを既に を割り当てています '

私は異なるポートのコンテナからポートを転送する必要があると思いますが、それを行う方法はわかりません。

+0

これらのプロジェクトは、同じフォルダにありますか?画像の呼び出し方法'docker-compose up proj1'と' docker-compose up proj2'を試しましたか? config docker-compose.ymlファイルはどのように見えますか? –

+0

両方のプロジェクトを同時に実行するとどうなりますか? – Rao

+0

各プロジェクトロケールは異なるフォルダにあり、設定を含む独自のドッカー作成ファイルを持っています。別のプロジェクトを実行しようとすると、エラー 'ドライバがエンドポイントmpdockerenv_db_1の外部接続をプログラミングできませんでした。0.0.0.0:3306のバインドに失敗しました:ポートは既に割り当てられています' –

答えて

2

docker-composeは、あなたの質問を正確に作成するためのツールです。

私は、複雑なプロジェクトがあり、システム環境を処理するために整理してよりきれいな方法が必要であると考えています。

通常、docker-compose.ymlファイルには、あなたが使用するmeanyドッカーのイメージを持つことができます。

私が使用して部分的なファイルf.example:

  • ポート:

    mongo: 
    image: mongo:latest 
    ports: 
    - "3002:27017" 
    environment: 
    MONGODB_DATABASE: "meteor-console-dev" 
    
    php-fpm-dev: 
    image: jokediaz/php-fpm.5.6-laravel 
    volumes: 
    - ./repos/datamigration:/usr/share/nginx/html/datamigration 
    - ./unixsock:/sock 
    - ./config/php-fpm-5.6/:/usr/local/etc/php 
    links: 
    - mongo 
    

    我々が取るのであれば、次の規則を見て、あなたは、外部ポート出力マッピングすることができます:内部ドッカポートを

  • 環境:システム環境を設定します。var

  • のボリューム:あなたのファイルシステムからディレクトリをマッピングしている:内側へ ドッカコンテナ(あなたがデコンテナを破壊した場合でも、これらのデータはpresistedされます)

  • リンク:ドッキングウィンドウは、内部ので、少し内部ネットDNS管理を持っていますあなたが入力した場合:docker network inspect bridgeコマンドでは、サブネット範囲とゲートウェイ(通常は172.17.0.1)が表示されるので、docker内の実行中のアプリケーションが、ドッカー(小さなDNS)は、あるコンテナから他のコンテナへマップすることができます。

もう一つのポイントは、ドッキングウィンドウ-構成ドッカ - コンがために変更された場合、最大良いアイデアは前にダウンドッキングウィンドウは、構成にすることです、あなたがしたすべての変更を再作成します(慎重にこれが削除されますするようにすることですマッピングされていないボリューム)を消去して空き領域を解放します。

は、ドッキングウィンドウ-COMPOSEファイル参照を見てみましょう:あなたのケースで

docker-compose file reference

ports: 
    - 3306:3306 

ポート3306は、ホストによって使用されています。 (ポートが使用されているので、おそらく、あなたのシステムでのMySQLの実行中のインスタンスを持っている)

だから、単に他の空きポートに変更します。

ports: 
    - 3308:3306 
+1

ありがとうございます。私は私の問題を解決しました。私の問題はポートでした。 –

関連する問題