Mempertimbangkan:
docker run -it centos /bin/bash
Saya menekan Ctrl+ Duntuk keluar.
Saya ingin terus menjalankan wadah ini, tetapi ternyata saya tidak bisa.
Satu-satunya metode adalah
docker commit `docker ps -q -l` my_image
docker run -it my_image /bin/bash
Apakah saya benar? Apakah ada metode yang lebih baik? (Saya menggunakan buruh pelabuhan 0.8.0.)
Jawaban:
Anda dapat memulai ulang wadah yang sudah ada setelah keluar dan perubahan Anda masih ada.
sumber
docker start `docker ps -q -l` && docker attach `docker ps -q -l`
docker start -i $(docker ps -q -l)
. ;-) Penamaan dapat membantu untuk lebih mengontrol wadah mana yang dipilih.-l
dapatkan yang terakhir, ok ...`docker ps -q -l`
bit adalah perluasan. Ini akan diganti dengan id dari kontainer terakhir (-l) dibuat. -q hanya menekan info lain (bedsides id) biasanya dikeluarkan oleh`docker ps`
. ---- note: Backtick bukan tanda kutip, itu memiliki arti yang sangat istimewa. Segala sesuatu yang Anda ketik di antara backticks dievaluasi (dieksekusi) oleh shell sebelum perintah utama - unix.stackexchange.com/questions/27428/…Created...
dari mana tidak dapat dimulai dengandocker start ...
. Namun itu dapat dimulai kembali menggunakandocker restart ...
-l
hanya mendapat buruh pelabuhan "terbaru". Jika Anda seperti saya dandocker ps -a
menunjukkan lebih dari satu hal yang harus Anda mulai, maka Anda dapat memulai kembali "semua" (-a) dengan mengubah perintah di atasdocker start `docker ps -q -a`
.-q
hanya membuatnya "tenang" (bukan keluaran logging).Penjelasan:
docker start
mulai wadah (memerlukan nama atau ID)-a
melampirkan ke-i
mode interaktifdocker ps
wadah Daftar-q
daftar kontainer-l
hanya daftar ID kontainer saja wadah dibuat terakhirsumber
Menggunakan:
Ini akan memulai semua kontainer yang berada dalam keadaan keluar.
Ini akan terhubung ke wadah tertentu.
sumber
docker exec -it <container id> /bin/bash
(atau hanya bash).Jika Anda ingin melakukannya dalam beberapa, perintah yang mudah diingat:
docker ps -a
docker start -i <name/id>
The
-i
flag mengatakan buruh pelabuhan untuk melampirkan stdin wadah ini.Jika wadah tidak dimulai dengan shell interaktif untuk terhubung, Anda perlu melakukan ini untuk menjalankan shell:
The
/bin/sh
adalah shell biasanya tersedia dengan gambar berbasis alpine.sumber
Error response from daemon: Container <id> is not running
Jika Anda ingin melanjutkan tepat satu wadah Docker dengan nama yang dikenal:
sumber
docker start <name>
mana <nama> adalah nama wadah Anda. Setidaknya dengan buruh pelabuhan v19.03.8Ikuti langkah ini:
Jalankan perintah di bawah ini untuk melihat bahwa semua layanan kontainer berjalan dan berhenti. Opsi
-a
diberikan untuk melihat bahwa wadah juga berhentiKemudian mulai wadah buruh pelabuhan dengan
container_id
atau dengan nama tag wadahKatakan dari gambar di atas, container id 4b161b302337
Jadi perintah yang harus dijalankan adalah
Satu dapat memverifikasi apakah wadah berjalan dengan
sumber
Jika Anda memiliki wadah bernama maka itu dapat dimulai dengan menjalankan
di mana container_name adalah nama dari wadah yang harus diberikan pada saat membuat wadah. Anda dapat mengganti
container_name
dengan id wadah jika wadah tidak bernama. ID kontainer dapat ditemukan dengan menjalankan:sumber
Perintah-perintah ini akan berfungsi untuk wadah apa pun (tidak hanya yang terakhir keluar). Cara ini akan berfungsi bahkan setelah sistem Anda reboot. Untuk melakukannya, perintah-perintah ini akan menggunakan "container id".
Langkah:
Daftar semua buruh pelabuhan dengan menggunakan perintah ini dan catat id wadah dari wadah yang ingin Anda restart:
docker ps -a
Mulai wadah Anda menggunakan id wadah:
docker start <container_id>
Lampirkan dan jalankan wadah Anda:
docker attach <container_id>
CATATAN: Bekerja di linux
sumber
dengan nama
atau dengan Id
ini restart kontainer berhenti, gunakan -i untuk melampirkan STDIN kontainer atau bukan -i Anda dapat melampirkan ke sesi kontainer (jika Anda menjalankan dengan -it)
sumber
Ini akan memulai semua wadah yang dalam kondisi 'Keluar'
sumber