Saya benar-benar pemula di buruh pelabuhan. Saya mencoba memulai penampung keluar seperti berikut,
Saya mendaftar semua wadah yang tersedia menggunakan
docker ps -a
. Itu tercantum sebagai berikut:Saya memasukkan perintah berikut untuk memulai wadah yang berada di tahap keluar dan masuk ke terminal gambar itu.
docker start 79b3fa70b51d docker exec -it 79b3fa70b51d /bin/sh
Itu melempar kesalahan berikut.
FATA[0000] Error response from daemon: Container 79b3fa70b51d is not running
Tapi ketika saya mulai menggunakan wadah docker start 79b3fa70b51d
. Itu melempar ID penampung sebagai keluaran yang normal jika semuanya bekerja normal. Saya tidak yakin apa yang menyebabkan kesalahan ini. Ide tentang penyebab dan saran tentang ini akan sangat membantu saya. Terima kasih sebelumnya.
docker
docker-container
Orang asing
sumber
sumber
Jawaban:
Penampung
79b3fa70b51d
tampaknya hanya melakukanecho
.Artinya itu dimulai, bergema dan kemudian segera keluar.
docker exec
Perintah berikutnya tidak akan menemukannya berjalan untuk melampirkan sendiri ke penampung itu dan menjalankan perintah apa pun: sudah terlambat. Penampung sudah keluar.sumber
docker run -it --rm udhayakumar/busyboxwithtouch
seharusnya cukup untuk membuka sesi. Titik masuk default harus / bin / sh, tetapi itu tergantung pada Dockerfile Anda: Anda mungkin telah menentukan titik masuk dan / atau CMD yang berbeda.docker exec
) melampirkannya.Secara default, penampung buruh pelabuhan akan segera keluar jika Anda tidak memiliki tugas apa pun yang berjalan di penampung tersebut.
Agar penampung tetap berjalan di latar belakang, coba jalankan dengan
--detach
(atau-d
) argumen.Contoh:
sumber
Jika tidak memungkinkan untuk memulai proses utama lagi (untuk waktu yang cukup lama), ada juga kemungkinan untuk
commit
penampung ke gambar baru dan menjalankan penampung baru dari gambar ini. Meskipun ini bukan alur kerja praktik terbaik yang biasa , saya merasa sangat berguna untuk men-debug skrip yang gagal sesekali.sumber
bash
proses dalam penampung. Anda mungkin menjalankan server web sebelumnya sehingga Anda harus memeriksa perintah mana yang perlu digunakan untuk mengaktifkan kembali server.Pertama-tama, kita harus menjalankan container buruh pelabuhan
Setelah itu, periksa container buruh pelabuhan:
Kemudian jalankan dengan menggunakan perintah di bawah ini:
sumber
Ini biasanya terjadi pada kebanyakan gambar OS dasar (centos, debian, dll.), Atau juga dengan gambar node .
Taruhan terbaik Anda adalah menjalankan gambar dalam mode interaktif . Contoh di bawah ini dengan gambar node :
Outputnya adalah
root@cacc7897a20c:/# echo $SHELL /bin/bash
sumber
Inilah yang berhasil untuk saya.
Dapatkan ID penampung dan mulai ulang.
sumber
Ini telah diposting oleh L0j1k di posting di bawah ini dan bekerja untuk saya.
Bagaimana cara masuk ke shell kontainer Docker?
sumber
Alasannya adalah apa yang dikatakan jawaban yang diterima. Saya menambahkan beberapa informasi tambahan, yang dapat memberikan pemahaman lebih lanjut tentang masalah ini.
Created
,Running
,Stopped
,Exited
,Dead
dan lain-lain yang saya tahu.docker create
, daemon buruh pelabuhan akan membuat sebuah kontainer dengan statusnyaCreated
.docker start
, daemon buruh pelabuhan akan memulai penampung yang ada yang statusnya mungkinCreated
atauStopped
.docker run
, daemon buruh pelabuhan akan menyelesaikannya dalam dua langkah:docker create
dandocker start
.docker stop
, jelas daemon buruh pelabuhan akan menghentikan sebuah kontainer. Dengan demikian wadah akan masukStopped
berstatus.Exited
.Kapan prosesnya keluar? Dengan kata lain, bagaimana prosesnya, bagaimana kita memulainya?
Jawabannya ada
CMD
di file docker ataucommand
dalam ekspresi berikut, yang secarabash
default di beberapa gambar, yaitu ubutu: 18.04.sumber
docker run -it <image_id> /bin/bash
Jalankan dalam mode interaktif dengan menjalankan bash shell
sumber
-d
benderanya salah ketik di sini?Bagi siapa pun yang mencoba sesuatu yang serupa menggunakan Dockerfile ...
Berjalan dalam mode terpisah tidak akan membantu. Penampung akan selalu keluar (berhenti berjalan) jika perintahnya tidak memblokir, hal ini terjadi pada bash.
Dalam kasus ini, solusinya adalah: 1. Lakukan gambar yang dihasilkan: (container_name = nama container yang ingin Anda gunakan untuk mendasarkan gambar, image_name = nama gambar yang akan dibuat docker commit container_name image_name 2. Gunakan buruh pelabuhan menjalankan untuk membuat kontainer baru menggunakan gambar baru, menentukan perintah yang ingin Anda jalankan. Di sini, saya akan menjalankan "bash": docker run -it image_name bash
Ini akan memberi Anda login interaktif yang Anda cari.
sumber
Berikut adalah solusi ketika container buruh pelabuhan keluar secara normal dan Anda dapat mengedit Dockerfile.
Umumnya, ketika kontainer buruh pelabuhan dijalankan, aplikasi dilayani dengan menjalankan perintah. Dari referensi Dockerfile ,
Saat Anda membuat gambar dan tidak menentukan perintah apa pun dengan CMD atau ENTRYPOINT, perintah CMD atau ENTRYPOINT gambar dasar akan dijalankan.
Misalnya, Dockerfile Resmi Ubuntu memiliki
CMD ["/bin/bash"]
( https://hub.docker.com/_/ubuntu ). Sekarang,bin/bash/
perintah dapat menerima masukan dandocker run -it IMAGE_ID
perintah melampirkan STDIN ke penampung. Hasilnya adalah Anda mendapatkan terminal interaktif dan penampung terus berjalan.Ketika perintah dengan CMD atau ENTRYPOINT ditentukan di Dockerfile, perintah ini akan dijalankan saat menjalankan container. Sekarang, jika perintah ini dapat selesai tanpa memerlukan input apa pun, perintah akan selesai dan container akan keluar. TIDAK
docker run -it IMAGE_ID
akan menyediakan terminal interaktif dalam kasus ini. Contohnya adalah image buruh pelabuhan yang dibangun dari Dockerfile di bawah ini-Jika Anda perlu pergi ke terminal gambar ini, Anda harus menjaga kontainer tetap berjalan dengan memodifikasi perintah entrypoint.
Setelah menjalankan penampung secara normal
docker run IMAGE_ID
, Anda bisa pergi ke terminal lain dan menggunakandocker exec -it CONTAINER_ID bash
untuk mendapatkan terminal penampung.sumber
Dalam kasus saya, saya mengubah nama file dan nama direktori tertentu dari direktori induk Dockerfile. Karena penampung mana tidak menemukan parameter yang diperlukan untuk memulainya lagi.
Setelah mengganti namanya kembali ke nama aslinya, wadah dimulai seperti mentega.
sumber
Saya memiliki pandangan berbeda tentang ini. Saya dapat melakukan
docker ps
dan melihat bahwa ada kontainer buruh pelabuhan yang berjalan, saya bahkan mencoba untuk memulainya kembali, tetapi segera setelah saya mencoba untuk mendapatkan sesi untuk itu denganNew-PSSession -ContainerId $containerId -RunAsAdministrator
Itu akan kesalahan, mengatakan:Masalah saya adalah saya menjalankan dengan layanan jaringan dan tidak memiliki cukup izin untuk melihat wadah, meskipun saya telah memberinya izin untuk menjalankan perintah buruh pelabuhan (dengan konfigurasi grup keamanan buruh pelabuhan)
Saya tidak tahu cara mengaktifkan bekerja dengan container, jadi saya harus kembali menjalankannya sebagai pengguna admin
sumber