Lebih
Bagaimana aku bisa masuk kontainer Docker's shell?
I'm memulai bekerja dengan Docker. I'm menggunakan WordPress gambar dasar dan docker-menulis.
I'm mencoba untuk ssh ke salah satu wadah untuk memeriksa file/direktori yang dibuat selama awal membangun. Saya mencoba untuk menjalankan docker-menulis menjalankan containername ls -la
, tapi itu tidak't melakukan apa-apa. Bahkan jika itu terjadi, aku'd suka memiliki konsol di mana saya dapat melintasi struktur direktori, daripada menjalankan satu perintah. Apa cara yang tepat untuk melakukan hal ini dengan Docker?
979
24
docker melampirkan
akan memungkinkan anda terhubung ke anda Docker container, tapi ini isn't benar-benar hal yang sama sepertissh
. Jika anda container menjalankan webserver, misalnya,docker melampirkan
mungkin akan menghubungkan anda ke stdout web server proses. Itu tidak't selalu memberikan anda sebuah shell.The
docker exec
perintah ini mungkin apa yang anda cari, ini akan membiarkan anda menjalankan perintah sewenang-wenang yang ada di dalam wadah. Misalnya:Tentu saja, apapun perintah yang anda jalankan harus ada dalam wadah filesystem.
Perintah di atas
<mycontainer>
adalah nama atau ID target wadah. Itu doesn't peduli apakah atau tidak anda're menggunakandocker menulis
; hanya menjalankandocker ps
dan menggunakan salah satu ID (string heksadesimal ditampilkan di kolom pertama) atau nama (ditampilkan dalam kolom terakhir). E. g., mengingat:Saya dapat menjalankan:
Aku bisa mencapai hal yang sama dengan menjalankan:
Demikian pula, saya bisa memulai shell dalam wadah;
Untuk bash dalam menjalankan wadah, ketik ini:
Let's mengatakan, untuk alasan yang tidak anda sendiri, anda benar-benar ingin menggunakan SSH. Dibutuhkan beberapa langkah, tapi itu bisa dilakukan. Berikut ini adalah perintah-perintah yang akan anda jalankan dalam wadah untuk mengatur itu...
Sekarang anda bahkan dapat menjalankan aplikasi grafis (jika mereka dipasang di dalam wadah) menggunakan X11 forwarding untuk SSH client:
Berikut ini adalah beberapa sumber daya terkait:
Pemberitahuan: ini jawaban mempromosikan alat I've tertulis.
I've menciptakan kemas SSH server yang dapat anda 'stick' untuk setiap kontainer. Dengan cara ini anda dapat membuat komposisi dengan setiap wadah. Satu-satunya persyaratan adalah bahwa wadah yang telah Bash.
Contoh berikut akan start SSH server yang terpasang ke sebuah wadah dengan nama 'saya-wadah'.
Ketika anda terhubung ke SSH ini layanan (dengan SSH client pilihan) Bash sesi akan dimulai dalam wadah dengan nama 'saya-wadah'.
Untuk petunjuk lebih lanjut dan dokumentasi melihat: https://github.com/jeroenpeeters/docker-ssh
Jika anda're sini mencari Docker Menulis-jawaban tertentu seperti aku, ia menyediakan cara yang mudah tanpa harus mencari dihasilkan container ID.
docker-menulis exec
mengambil nama layanan sesuaidocker-menulis.yml
file.Jadi untuk mendapatkan Bash shell untuk anda 'web' layanan, yang dapat anda lakukan:
Jika anda're menggunakan Docker pada Windows dan ingin mendapatkan akses shell ke wadah, gunakan ini:
Kemungkinan besar, anda sudah memiliki Git Bash diinstal. Jika anda don't, pastikan untuk menginstalnya.
SSH ke wadah Docker menggunakan perintah ini:
Dalam beberapa kasus gambar anda dapat Alpine berbasis. Dalam hal ini akan membuang:
Karena
/bin/bash
doesn't ada. Bukannya ini harus anda gunakan:atau
Jika wadah sudah keluar (mungkin karena beberapa kesalahan), yang dapat anda lakukan
atau
atau
untuk membuat sebuah wadah baru dan mendapatkan shell ke dalamnya. Karena anda ditentukan --rm, wadah akan dihapus ketika anda keluar dari shell.
Untuk terhubung ke cmd di Windows wadah, gunakan
Dimana d8c25fde2769 adalah id wadah.
GOINSIDE SOLUSI
install
goinside
command line tool dengan:dan masuk ke dalam wadah docker dengan tepat ukuran terminal dengan:
tua menjawab
Kami've menempatkan potongan ini di
~/.profil
:Hal ini tidak hanya membuat semua orang bisa mendapatkan dalam menjalankan wadah dengan:
Hal ini juga memecahkan lama tinggal tentang masalah tetap Docker container terminal ukuran. Yang sangat menjengkelkan jika anda menghadapi hal ini.
Juga jika anda mengikuti link anda'll memiliki perintah penyelesaian untuk docker container nama juga.
Sederhana!
Daftar keluar semua gambar Docker:
Pada sistem saya itu menunjukkan output sebagai berikut:
Saya memiliki dua Docker gambar pada PC saya. Let's mengatakan saya ingin menjalankan pertama.
Ini akan memberikan anda terminal kontrol dari kontainernya. Sekarang anda dapat melakukan semua jenis shell operasi di dalam wadah. Seperti melakukan
ls
akan menampilkan semua folder di root file sistem.Gunakan:
Cara lain, meskipun ada bahaya untuk itu, adalah dengan menggunakan
pasang
, tetapi jika anda Pilih + C untuk keluar dari sesi ini, anda juga akan berhenti wadah. Jika anda hanya ingin melihat apa yang terjadi, gunakandocker log -f
.Gunakan perintah ini:
Untuk memeriksa file, jalankan
docker run-it <gambar> /bin/bash
untuk mendapatkan interaktif terminal. Daftar gambar dapat diperoleh dengangambar docker
. Dalam bertentangan dengandocker exec
solusi ini bekerja juga dalam kasus ketika sebuah gambar doesn't start (atau berhenti segera setelah menjalankan).docker exec
pasti akan menjadi solusi. Cara mudah untuk bekerja dengan pertanyaan yang anda tanya adalah dengan mounting direktori di dalam Docker untuk sistem lokal's direktori.Sehingga anda bisa melihat perubahan dalam jalan lokal langsung.
Atau tergantung pada shell, dapat
Anda bisa mendapatkan wadah-Id melalui
docker ps
perintah-i
= interaktif-t
= untuk mengalokasikan psuedo-TTYanda dapat berinteraksi dengan terminal di docker container dengan melewati opsi -ti
-t adalah singkatan dari terminal aku berdiri untuk interaktif
Jika anda memiliki Docker diinstal dengan
Kitematic
, anda dapat menggunakan GUI. BukaKitematic
dari Docker ikon dan diKitematic
jendela pilih wadah, dan kemudian klik padaexec
icon.Anda dapat melihat wadah log dan banyak wadah informasi (di tab settings) di GUI ini juga.
I've menciptakan fungsi terminal untuk akses yang lebih mudah ke wadah's terminal. Mungkin itu's berguna untuk kalian juga:
Sehingga hasilnya, bukan mengetik:
anda'll menulis:
Masukan kode berikut ke dalam file ~/.bash_profile (atau apa pun yang bekerja untuk anda), kemudian buka jendela terminal baru dan menikmati shortcut: