web-dev-qa-db-ja.com

Docker-0.0.0.0:4000のバインドに失敗しました:ポートは既に割り当てられています

初めてdockerを使用し、これを実装しようとしていました- https://docs.docker.com/get-started/part2/#tag-the-image

ある段階で、このコマンドでローカルホストに接続しようとしていました-

$ curl http://localhost:4000

このエラーを示した

curl: (7) Failed to connect to localhost port 4000: Connection refused

しかし、私は次のコードでこれを解決しました-

$ docker-machine ip default
$ curl http://192.168.99.100:4000

その後、すべてがうまくいきましたが、最後の部分では、チュートリアルに従って次の行を使用してアプリを実行しようとしました...

$ docker run -p 4000:80 anibar/get-started:part1

しかし、私はこのエラーを受け取りました

C:\Program Files\Docker Toolbox\docker.exe: Error response from daemon: driver failed programming external connectivity on endpoint goofy_bohr (63f5691ef18ad6d6389ef52c56198389c7a627e5fa4a79133d6bbf13953a7c98): Bind for 0.0.0.0:4000 failed: port is already allocated.

ポートは割り当てられているようですので、これを解決する方法を教えてください。

26
Anik Barua

同じポートを使用する新しいコンテナを起動する前に、起動した以前のコンテナが強制終了されていることを確認する必要があります。

docker container ls
docker rm -f <container-name>
52
yamenk

IgorBeazに敬意を表して、現在のコンテナの実行を停止する必要があります。そのために、現在のCONTAINER IDを知ることになります。

$ docker container ls

次のようになります:

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                  NAMES
12a32e8928ef        friendlyhello       "python app.py"     51 seconds ago      Up 50 seconds       0.0.0.0:4000->80/tcp   romantic_tesla   

次に、次の方法でコンテナを停止します。

$ docker stop 12a32e8928ef

最後に、あなたがやりたいことをやろうとします、例えば:

$ docker run -p 4000:80 friendlyhello
11
user5965280

上記の2つの答えは正しいですが、私にとってはうまくいきませんでした。

  1. docker container lsenter image description here
  2. その後、docker container ls -aを試しましたが、その後、以前に終了して実行されていたすべてのプロセスが表示されました。
  3. その後、docker stop <container id>またはdocker container stop <container id>が機能しませんでした
  4. それからdocker rm -f <container id>を試しましたが、うまくいきました。
  5. 今、これでdocker container ls -aを試しましたが、このプロセスは存在しませんでした。
5
paul

私はこのように解決しました:

まず、実行中のすべてのコンテナーを停止しました。

docker-compose down

次に、lsofコマンドを実行して、ポートを使用してプロセスを見つけました(私にとってはポート9000でした)

Sudo lsof -i -P -n | grep 9000

最後に、プロセスを「強制終了」しました(私の場合、VSCode拡張機能でした)。

kill -9 <process id>
3
Alexandre Lara

docker-composeでこの問題を抱えている人のために。同様のサービスを持つ複数のプロジェクト(つまり、異なるフォルダー)がある場合、他のプロジェクトのdocker-compose stopを実行する必要があります。

2
everyman

コンテナを停止してもうまくいきませんでした。 docker-compose.ymlのポートを変更しました。

1
Morgan

Docker-composeでも同じ問題が発生しました。

  1. ドッカーを再起動.
  2. Docker-composeを再度開始します。
  3. .
1
KIA CEED

docker psは、Dockerで実行されているコンテナのリストを表示します。
必要なポートで実行されているものを見つけ、PIDを書き留めます

次のコマンドを使用して、そのコンテナを停止および削除します
docker stop PID
docker rm PID
今docker-composeを実行すると、必要なポートを解放したのでサービスが実行されます。

0