Ketika saya menjalankan docker-compose up
proyek Docker saya gagal dengan pesan berikut:
Error starting userland proxy: listen tcp 0.0.0.0:3000: bind: address already in use
netstat -pna | grep 3000
tunjukkan ini:
tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN -
Saya sudah mencoba docker-compose down
, tetapi tidak membantu.
ubuntu
docker
ubuntu-14.04
bind
docker-compose
Ngoral
sumber
sumber
sudo netstat -pna | grep 3000
untuk mendapatkan proses yang mendengarkan.sudo
untuk melihat nama proses.sudo
bisa mengubah keluaran :)Jawaban:
Dalam kasus Anda, itu adalah beberapa proses lain yang menggunakan port dan seperti yang ditunjukkan dalam komentar,
sudo netstat -pna | grep 3000
membantu Anda dalam memecahkan masalah.Sementara dalam kasus lain (saya sendiri mengalaminya berkali-kali) sebagian besar adalah wadah yang sama yang berjalan di beberapa contoh lain. Dalam hal
docker ps
ini sangat membantu karena saya sering membiarkan container yang sama berjalan di direktori lain dan kemudian mencoba menjalankan lagi di tempat lain, di mana nama container yang sama digunakan.Bagaimana
docker ps
membantu saya:docker rm -f $(docker ps -aq)
adalah perintah singkat yang saya gunakan untuk menghapus semua kontainer.Edit: Menambahkan bagaimana
docker ps
membantu saya.sumber
docker-compose down
membantudocker-compose up
. Sementara saya merekomendasikan dalam jawaban saya untuk menemukan wadah yang sudah berjalan dan mengambil tindakan yang diinginkan. Saya merasa pantas untuk menghapusnya, jika seseorang tidak ingin menghapusnya, maka ada malah menggunakanrm
gunakanstop
untuk menghentikannya.tensorflow/tensorflow
gambar yang akan dijalankan. Bagaimana cara menyiapkan gambar saya untuk dijalankan di port lain. Saya sudah mencoba ini:docker run -it -d -p 8888:8000 tensorflow/tensorflow
Saya mengikat port 8888 dari gambar saya ke 8000 pada klien, tetapi tidak berhasil.-d
opsi. Sekarang, port diekspos sebagaiHOST:CONTAINER
. Jadi Anda harus laridocker run -it -p 8000:8888
Ini membantu saya:
docker-compose down # Stop container on current dir if there is a docker-compose.yml docker rm -fv $(docker ps -aq) # Remove all containers sudo lsof -i -P -n | grep <port number> # List who's using the port
lalu:
kill -9 <process id>
(macOS) atausudo kill <process id>
(Linux).Sumber: komentar oleh pengguna Rub21 .
sumber
docker rm -fv $(docker ps -aq)
baris ini yang saya butuhkan. Terima kasihSaya memiliki masalah yang sama,
docker-compose down --rmi all
(di direktori yang sama tempat Anda menjalankan docker-compose)membantu
sumber
down
adalah hal terakhir yang biasanya ingin Anda lakukan. Kehilangan keadaan saat ini bukanlah sepotong gula.Untuk Linux / Unix:
Pencarian sederhana untuk utilitas linux menggunakan perintah berikut
Ini akan menunjukkan pemrosesan yang berjalan di port ini, lalu matikan proses itu menggunakan PID (cari PID di baris) dari proses itu.
sumber
Saya memiliki masalah yang sama. Saya memperbaikinya dengan menghentikan layanan Apache2 di host saya.
sumber
Dalam kasus saya itu
Dan yang saya butuhkan hanyalah mematikan debug mendengarkan di php storm
sumber
Dalam beberapa kasus, sangat penting untuk melakukan debugging yang lebih mendalam pada masalah sebelum menghentikan container atau menghentikan proses.
Pertimbangkan untuk mengikuti checklist di bawah ini:
1) Periksa Anda saat ini lingkungan buruh pelabuhan compose
Run
docker-compose ps
.Jika port sedang digunakan oleh kontainer lain, hentikan
docker-compose stop <service-name-in-compose-file>
atau lepaskan dengan menggantistop
denganrm
.2) Periksa penampung yang berjalan di luar ruang kerja Anda saat ini.
Jalankan
docker ps
untuk melihat daftar semua penampung yang berjalan di bawah host Anda.Jika Anda menemukan port sedang digunakan oleh kontainer lain, Anda dapat menghentikannya dengan
docker stop <container-id>
.(*) Karena Anda tidak berada dalam cakupan
compose
lingkungan asal - sebaiknya gunakan inspeksi buruh pelabuhan terlebih dahulu untuk mengumpulkan lebih banyak informasi tentang container yang akan Anda hentikan.3) Periksa apakah port digunakan oleh proses lain yang berjalan pada host
Misalnya jika port 6379 dijalankan:
(*) Anda juga dapat menggunakan perintah lsof yang terutama digunakan untuk mengambil informasi tentang file yang dibuka oleh berbagai proses (saya sarankan berjalan
netstat
sebelum itu).Jadi, Jika output di atas
PID
adalah915
. Sekarang Anda dapat menjalankan:Dan lihat ID dari proses induk (
PPID
) dan perintah eksekusi.Anda juga dapat menjalankan:
$ pstree -s <PID>
ke tampilan visual proses dan proses terkaitnya.Dalam kasus kami, kami dapat melihat bahwa proses mungkin adalah daemon (PPID adalah 1) - Dalam hal ini pertimbangkan untuk menjalankan:
A)
$ cat /proc/<PID>/status
untuk mendapatkan informasi yang lebih mendalam tentang proses seperti jumlah utas yang muncul oleh proses, kemampuannya, dll. '.B)
$ systemctl status <PID>
untuk melihatsystemdunit yang menyebabkan terciptanya proses tertentu. Jika layanan tidak kritis - Anda bisa menghentikan dan menonaktifkan layanan .4) Mulai ulang layanan Docker
Run:
sudo service docker restart
.5) Anda mencapai titik ini dan ..
Hanya jika ini tidak membahayakan sistem Anda - pertimbangkan untuk memulai ulang server.
sumber
Saya meningkatkan buruh pelabuhan saya sore ini dan mengalami masalah yang sama. Saya mencoba memulai ulang buruh pelabuhan tetapi tidak berhasil.
Akhirnya, saya harus me-restart komputer saya dan berhasil. Pasti bug.
sumber
Periksa
docker-compose.yml
, mungkin kasus port ditentukan dua kali.sumber
Saya mengalami masalah yang sama beberapa kali. Memulai ulang buruh pelabuhan tampaknya berhasil
sumber
Saya menyelesaikan masalah dengan memulai ulang Docker.
sumber
dan kemudian restart komputer Anda
sumber
Variasi dari jawaban @ DmitrySandalov: Saya menjalankan tomcat / java pada 8080, yang harus terus berjalan. Melihat file docker-compose.yml dan mengubah entri untuk 8080 menjadi pilihan saya yang lain.
Bekerja dengan sempurna. (Satu-satunya masalah adalah perubahan akan terhapus jika saya memperbarui proyek, karena ini berasal dari repo eksternal.)
sumber
Hanya catatan tambahan jika Anda memiliki masalah yang sama dan dengan Windows:
Dalam kasus saya, proses dalam cara saya adil
grafana-server.exe
. Karena saya pertama kali mengunduh versi biner dan mengklik dua kali file yang dapat dieksekusi, dan sekarang mulai sebagai layanan oleh penggunaSYSTEM
yang saya tidak dapattaskkill
(tanpa izin)Saya harus pergi ke "Manajer layanan" Windows dan mencari layanan "Grafana", dan menghentikannya. Setelah itu port 3000 tidak lagi ditempati.
Semoga membantu.
sumber
Yang menggunakan port 8888 adalah Jupiter dan saya harus mengubah file konfigurasi notebook Jupiter untuk berjalan di port lain.
untuk mendaftar siapa yang menggunakan port khusus itu. sudo lsof -i -P -n | grep 9
Anda dapat menentukan porta yang Anda inginkan agar Jupyter menjalankan tanpa komentar / mengedit baris berikut di ~ / .jupyter / jupyter_notebook_config.py:
c.NotebookApp.port = 9999
Jika Anda tidak memiliki jupyter_notebook_config.py coba jalankan jupyter notebook --generate-config. Lihat ini untuk detail lebih lanjut tentang konfigurasi Jupyter.
sumber
Mengubah network_mode: "bridge" menjadi "host" berhasil untuk saya.
Ini dengan
sumber
Sebelum dijalankan di: docker run -d --name oracle -p 1521: 1521 -p 5500: 5500 qa / oracle Saya baru saja mengubah port menjadi docker run -d --name oracle -p 1522: 1522 -p 5500: 5500 qa / oracle
ini bekerja dengan baik untukku !
sumber
Di mesin saya, PID tidak ditampilkan dari perintah ini
netstat -tulpn
untuk port yang sedang digunakan (8080), jadi saya tidak dapat mematikannya, mematikan container dan memulai ulang komputer tidak berfungsi. Jadiservice docker restart
perintah restart buruh pelabuhan untuk saya (ubuntu) dan port tidak lagi digunakan dan saya senang chap dan pergi untuk makan siang.sumber
Saya mendapatkan kesalahan di bawah ini ketika saya mencoba untuk meluncurkan sebuah conatier baru- dengarkan tcp 0.0.0.0:8080: bind: alamat sudah digunakan.
Solusi: netstat -tulnp | grep 8080
[[email protected] (aws_main) ~] # netstat -tulnp | grep 8080 tcp 0 0 0.0.0.0:8080 0.0.0.0:* DENGARKAN 12749 / java [[email protected] (aws_main) ~] #
bunuh -9 12749
Kemudian coba luncurkan kembali wadah yang seharusnya berfungsi
sumber
Apakah triknya.
sumber