Biasanya, Anda ingin aplikasi Docker terisi penuh, tetapi terkadang untuk tujuan pengembangan atau otomatisasi, bekerja dengan container Docker seolah-olah ada VM Linux berguna untuk bekerja dengan container Docker. Docker menyediakan alat untuk menjalankan perintah dan bahkan seluruh shell di dalam container.
Menjalankan Perintah Dalam Wadah
Untuk menjalankan perintah dalam wadah, Anda memerlukan ID wadahnya, kecuali jika Anda telah menyiapkan nama khusus untuk wadah itu. Ini adalah string hex panjang yang dapat Anda temukan dari daftar proses Docker:
docker ps
Kemudian, Anda dapat menggunakan exec -it
perintah untuk dijalankan di dalam container. Misalnya, melihat output dari file log:
docker exec -it containerID tail /var/log/nginx/access.log
Anda juga dapat menjalankan skrip di dalam wadah:
docker exec -it containerID script.sh
-it
flag masing-masing untuk "mode interaktif" dan TTY, dan digunakan hampir sepanjang waktu. Ada beberapa flag lain yang bisa Anda gunakan:
--workdir
atau-w
mengubah direktori saat ini sebelum perintah.--detach
, atau-d
, menjalankan perintah di latar belakang.--env
, atau-e
, menyetel variabel lingkungan sebelum dijalankan.--env-file
melakukan hal yang sama, tetapi lebih aman untuk menangani rahasia.--privileged
menjalankan perintah dengan izin yang diperluas.--user
berjalan sebagai pengguna yang berbeda
Tentu saja, ini hanya berfungsi pada wadah yang sedang berjalan. Jika ingin menjeda container untuk melakukan pemeliharaan, Anda harus menerapkan pembaruan melalui versi image baru, atau melakukan perubahan pada data yang dipasang pada volume dari OS host.
SSHing Ke dalam Wadah
Anda tidak terbatas pada perintah sederhana, Anda sebenarnya dapat membuka shell dengan menjalankan /bin/bash
sebagai perintah. Anda mungkin terbatas pada alat yang tersedia—sebagian besar container menampilkan instalasi Linux yang cukup sederhana—tetapi ini membuat menjalankan banyak perintah menjadi jauh lebih mudah.
docker exec -it containerID /bin/bash
Ini hanyalah shell yang dapat diakses dari Host, yang berfungsi dengan baik dalam banyak kasus. Tetapi, jika Anda mau, Anda dapat mengatur wadah Anda agar sepenuhnya tersedia melalui SSH seperti VPS. Anda dapat membaca selengkapnya tentang menyiapkannya di panduan kami untuk menjalankan layanan SSH di wadah Docker.
TERKAIT: Cara SSH Menjadi Wadah Docker
Menyalin Berkas Ke Dan Dari Wadah
Menjalankan perintah dengan exec -it
berfungsi, tetapi masih ada lapisan antara host dan penampung yang mencegah pembuatan skrip yang mudah. Pertama, meskipun mudah untuk mengirim perintah ke sebuah wadah, lebih sulit untuk mengeluarkan output dari sistem file.
Meskipun Anda dapat menyalurkan STDOUT dari exec -it
ke layanan lain di OS host, Anda juga dapat menyalin file ke dan dari sistem file penampung. Misalnya, mengeluarkan file log dan menempelkannya di host:
docker cp container:/var/log/nginx/example.log example.log
Atau mengeluarkan seluruh direktori:
docker cp nginx:/etc/nginx/ nginxconfig/
Jika Anda sering melakukan ini, Anda mungkin ingin mempertimbangkan untuk menggunakan pengikatan atau pemasangan volume untuk membuat data dapat diakses langsung dari host.
TERKAIT: Cara Menggunakan Docker Cp untuk Menyalin File Antara Host dan Kontainer