質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

Q&A

解決済

2回答

8029閲覧

VagrantでなぜかホストPCの3000番ポートが使えなくエラーがでてしまいます。別PCでvagrant up すると上手くいきます。

qaz3330

総合スコア113

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

0グッド

0クリップ

投稿2016/08/22 13:16

※ MacOS(ゲストOSはcentos)

vagrant upをするときに次のようなエラーがでます。

Vagrant cannot forward the specified ports on this VM, since they would collide with some other application that is already listening on these ports. The forwarded port to 3000 is already in use on the host machine. To fix this, modify your current project's Vagrantfile to use another port. Example, where '1234' would be replaced by a unique host port: config.vm.network :forwarded_port, guest: 3000, host: 1234 Sometimes, Vagrant will attempt to auto-correct this for you. In this case, Vagrant was unable to. This is usually because the guest machine is in a state which doesn't allow modifying port forwarding. You could try 'vagrant reload' (equivalent of running a halt followed by an up) so vagrant can attempt to auto-correct this upon booting. Be warned that any unsaved work might be lost.

もともとのvagrantfileは次のようになっております。

config.vm.network :forwarded_port, guest: 3000, host: 3000

エラー内容の通り、hostを 1234にするとうまくいきましたが、なぜ3000ではダメなのかがわからず困っております。

ちなみに、別のMacで同じようにvagrant upをすると、hostは3000のままで上手くいきました。

そのため、vagrantfileの設定というよりかは、現在使っているPCの他の環境が干渉しているのではないかと思いました。

しかし、それを調べるために、何をして原因調査していけば良いのかがわかりません。

$ netstat

とかして調査しているのをみたことがありますが、こういうふうに調査すればいいのかがわかりません。

宜しくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

The forwarded port to 3000 is already in use on the host machine.
干渉というか、何かによって3000はもう使われているという状態ですね。

railsの開発サーバー、node.jsのサーバーなど、3000はよく使われるイメージがあるのでそのあたり心当たりありませんか。

OS Xだと、sudo lsof -i tcp:3000でプロセス調べられるので、psコマンドやアクティビティモニタでプロセスを調べてみると良いかもしれません。lsofだけで気づく場合もあるかもですが。

以下は、python -m CGIHTTPServerでポート8000を使っている状態で実行しました(一部伏せてます)

$ sudo lsof -i tcp:8000 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME Python 12089 xxxxxxxx 3u IPv4 0x--------------- 0t0 TCP *:----- (LISTEN)

投稿2016/08/22 13:28

flied_onion

総合スコア2604

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

qaz3330

2016/08/22 13:32

ご回答ありがとうございます。 vagrant upを2回以上やっていたみたいでして、占有していたプロセスはvagrant自身でした? PCの再起動をして、もう一度試してみたところ上手くいきました。
guest

0

何かのサービスが3000ポートを既に利用している状態のようですね。

terminalにてlsofコマンドで状態確認してみてはいかがでしょうか。
該当プロセスIDとCOMMANDが特定できるかと思います。

$ lsof -n -P -i :3000

参考URL

投稿2016/08/22 13:26

takyafumin

総合スコア2335

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

qaz3330

2016/08/22 13:32

ご回答ありがとうございます。 vagrant upを2回以上やっていたみたいでして、占有していたプロセスはvagrant自身でした? PCの再起動をして、もう一度試してみたところ上手くいきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問