Menjalankan docker
registri dengan perintah di bawah ini selalu menimbulkan kesalahan:
dev:tmp me$ docker run \
-d --name registry-v1 \
-e SETTINGS_FLAVOR=local \
-e STORAGE_PATH=/registry \
-e SEARCH_BACKEND=sqlalchemy \
-e LOGLEVEL=DEBUG \
-p 5000:5000 \
registry:0.9.1
Error response from daemon: Conflict. The name "registry-v1" is already in use by container f9e5798a82e0. You have to delete (or rename) that container to be able to reuse that name.
Bagaimana cara mencegah kesalahan ini?
docker ps -a
semua wadah dalam hal ini.docker start -a container-name
adalah perintah yang dapat Anda gunakan untuk memulai wadah yang telah dibuatdocker run
. Perhatikan-a
bendera yang merupakan singkatan--attach
. Dengan cara ini wadah dimulai di latar depan, sama seperti ketika Anda menggunakandocker run
(yang menjalankan wadah di latar depan secara default).docker create
membuat wadah tetapi tidak menjalankannya.Itu berarti Anda telah memulai sebuah wadah di masa lalu dengan parameter
docker run --name registry-v1 ...
.Anda harus menghapusnya terlebih dahulu sebelum dapat membuat ulang wadah dengan nama yang sama
docker rm registry-v1
. Ketika wadah itu masih berjalan, Anda harus menghentikannya terlebih dahulu sebelum Anda bisa menghapusnyadocker stop registry-v1
. Atau cukup pilih nama yang berbeda untuk wadah baru.Untuk mendapatkan daftar kontainer yang ada dan nama mereka cukup memanggil
docker ps -a
.sumber
docker rm $(docker ps -aq --filter name=myContainerName)
docker rm myContainerName
?Di sini yang saya lakukan, itu berfungsi dengan baik.
langkah 1: (daftar kontainer docker dengan namanya)
Langkah 2:
sumber
Hanya untuk menjelaskan apa yang orang lain katakan (butuh beberapa waktu untuk saya mengerti) adalah bahwa, secara sederhana, ketika Anda melihat kesalahan ini, itu berarti Anda sudah memiliki sebuah wadah dan apa yang harus Anda lakukan adalah menjalankannya. Meskipun secara intuitif
docker run
seharusnya menjalankannya, tetapi tidak. Perintahdocker run
ini digunakan untuk MULAI wadah untuk pertama kalinya. Untuk menjalankan wadah yang ada, apa yang Anda butuhkan adalahdocker start $container-name
. Begitu banyak meminta pengembang untuk membuat perintah yang bermakna / intuitif.sumber
Anda memiliki 2 opsi untuk memperbaikinya ...
Hapus wadah sebelumnya menggunakan nama itu, dengan perintah
docker rm $(docker ps -aq --filter name=myContainerName)
ATAU
--name registry-v1
menjadi seperti--name myAnotherContainerName
Anda mendapatkan kesalahan ini karena nama wadah (yaitu
registry-v1
) digunakan oleh wadah lain di masa lalu ... meskipun wadah itu mungkin telah keluar yaitu (saat ini tidak digunakan).sumber
Ketika Anda sedang membangun gambar baru Anda sering ingin menjalankan wadah baru setiap kali dan dengan nama yang sama. Saya menemukan cara termudah adalah memulai wadah dengan opsi --rm :
misalnya
Sayangnya itu digunakan hampir secara acak dalam contoh-contoh dari dokumen
sumber
--rm
. Itu tidak restart.--rm
hanya berfungsi jika Anda telah membuat wadah menggunakan--rm
bendera. Ini berarti, jika Anda membuat wadah tanpa--rm
bendera, Anda harus menghapusnya secara manual sebelum Anda dapat memanfaatkanrm
bendera tersebut.Sebab
Wadah dengan nama yang sama masih ada.
Larutan
Untuk menggunakan kembali nama wadah yang sama, hapus wadah yang ada dengan:
Penjelasan
Kontainer dapat ada di negara-negara berikut, di mana nama wadah tidak dapat digunakan untuk wadah lain:
created
restarting
running
paused
exited
dead
Anda dapat melihat wadah dalam
running
keadaan dengan menggunakan:Untuk menampilkan wadah di semua negara bagian dan mencari tahu apakah nama wadah diambil, gunakan:
sumber
Inilah cara saya mengatasi ini di ubuntu 18:
$ sudo docker ps -a
Untuk setiap wadah lakukan:
$ sudo docker stop container_ID
$ sudo docker rm container_ID
sumber
Anda dapat menghapusnya dengan perintah
sudo docker rm YOUR_CONTAINER_ID
, lalu jalankan wadah baru dengansudo docker run ...
; atau mulai ulang wadah yang ada dengansudo docker start YOUR_CONTAINER_ID
sumber
Saya telah memecahkan masalah dengan melakukan langkah-langkah berikut dan saya harap ini membantu.
docker ps -a
untuk mencantumkan semua wadah di sistem Anda.docker rm --force name_of_container
Saya punya masalah menggunakan NIFI dan saya telah menghapus dan menginstal ulang menggunakan buruh pelabuhan. Semoga berhasil.
sumber
Saya hanya belajar buruh pelabuhan dan ini membuat saya juga. Saya sudah menghentikan wadah dengan nama itu dan karena itu saya pikir saya bisa menjalankan wadah baru dengan nama itu.
Bukan kasusnya. Hanya karena wadah dihentikan, tidak berarti wadah tidak dapat dimulai lagi, dan menyimpan semua parameter yang sama dengan yang dibuatnya (termasuk namanya).
ketika saya berlari
docker ps -a
saat itulah saya melihat semua wadah uji tiruan yang saya buat saat saya bermain-main.Tidak masalah, karena saya tidak ingin itu lagi, saya baru saja melakukannya
docker rm containername
di mana wadah baru saya diizinkan untuk berjalan dengan nama lama.Ah, dan sekarang setelah saya selesai menulis jawaban ini, saya melihat komentar Slawosz tentang jawaban Walt Howard di atas menyarankan penggunaan
docker ps -a
sumber