0

私がやりたいことは、2 つ以上の vagrant box を同時に実行することです。今私が抱えている問題は、「2222 への転送されたポートは、ホスト マシンで既に使用されています」という警告が表示されることです。puPHPet のセットアップ中に Vagrant ボックスをポート 2222 に設定していないため、これは奇妙です。

私の2つのconfig.yamlファイルの関連部分は次のとおりです。

vagrantfile-local:
    vm:
        box: puphpet/ubuntu1404-x64
        box_url: puphpet/ubuntu1404-x64
        hostname: ''
        memory: '1024'
        cpus: '1'
        chosen_provider: virtualbox
        network:
            private_network: 192.168.56.101
            forwarded_port:
                dL5if56LAPQo:
                    host: '6645'
                    guest: '22'

---
vagrantfile-local:
    vm:
        box: puphpet/ubuntu1404-x64
        box_url: puphpet/ubuntu1404-x64
        hostname: ''
        memory: '1024'
        cpus: '1'
        chosen_provider: virtualbox
        network:
            private_network: 192.168.56.102
            forwarded_port:
                dL5if56LAPQo:
                    host: '6646'
                    guest: '22'

私のせいだと思いますが、ポート 2222 がどこにも割り当てられていません (おそらくデフォルトです)。

4

1 に答える 1

0

それは少しチートであり、コアの問題を解決しませんが、私にとっては十分です. 問題を解決するために私がしたことは、puPHPet が生成した Vagrant ファイルを変更することでした。転送ポート行を次のように変更しました。

data['vm']['network']['forwarded_port'].each do |i, port|
    if port['guest'] != '' && port['host'] != ''
      config.vm.network :forwarded_port, guest: port['guest'].to_i, host: port['host'].to_i, auto_correct: true
    end
  end

「、auto_correct: true」を追加しました。これは、Vagrant のドキュメントが auto_correct について述べていることです。


ポートの衝突と修正

複数の Vagrant マシンを実行しているときに、互いに衝突する転送ポート定義を無意識のうちに作成することは一般的です (たとえば、ポート 8080 に転送される 2 つの別々の Vagrant プロジェクト)。Vagrant には、これを自動的に検出して修正する組み込みのメカニズムが含まれています。

ポート衝突検出は常に行われます。Vagrant では、ホストのポートがトラフィックまたは接続を受け入れているように見える転送ポートを定義することはできません。

ポート競合の自動修正は、転送されたポートごとに手動で有効にする必要があります。これは、発生すると驚くことが多く、Vagrant ユーザーにポートが適切に転送されていないと思わせる可能性があるためです。自動修正を有効にするのは簡単です:

Vagrant.configure("2") do |config|
  config.vm.network "forwarded_port", guest: 80, host: 8080,
    auto_correct: true
end

true に設定された最後の :auto_correct パラメータは、Vagrant に衝突を自動修正するように指示します。vagrant up または vagrant reload の間、Vagrant は衝突の検出と行われた自動修正に関する情報を出力するので、注意してそれに応じて行動することができます。


私はそれをもっとうまく説明できなかったでしょう:)

于 2015-03-20T09:13:54.113 に答える