Cara Menggunakan Docker Exec Untuk Mengakses dan Mengelola Container

Hai, Sobat Jagoan! Sebagaimana yang mungkin sudah kamu tahu tentang docker yaitu alat yang berguna sebagai wadah (container) aplikasi dan semua kebutuhan sistemnya. Container docker dapat dijalankan di mana saja sehingga kamu tidak perlu melakukan konfigurasi banyak langkah jika ingin menjalankan di perangkat lain.

Ketika sedang mengembangkan atau deploy aplikasi di dalam contaiiner, kadang kamu perlu memeriksa apa yang terjadi di dalamnya. Docker menyediakan perintah bernama docker exec yang memungkinkan kamu untuk menjalankan perintah di dalam container yang sedang aktif dan masuk ke dalam container. Hal ini sangat berguna karena kamu bisa melakukan aktivitas seperti debugging atau sekadar mengecek isi container tanpa menghentikannya.

Jadi, simak cara menggunakan perintah docker exec untuk mengakses dan mengelola container di artikel ini sampai akhir ya!

Prasyarat

  1. Sudah menginstal docker, jika belum ikuti STEP 1 pada langkah setelah ini
  2. Artikel ini mengasumsikan kamu menjalankan perintah docker tanpa sudo

STEP 1: Menginstal Docker

Fyi, artikel ini menggunakan server Ubuntu 24.04. Jika belum menginstal docker, berikut langkah-langkahnya.

  • Update sistem agar menggunakan paket terbaru.
				
					sudo apt update
				
			
  • Instal dependensi yang dibutuhkan menggunakan perintah:
				
					sudo apt install curl apt-transport-https ca-certificates software-properties-common
				
			
  • Lalu, tambahkan GPG key resmi Docker:
				
					curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
				
			
  • Selanjutnya, tambahkan repositori APT Docker ke sistem. Perintah ini akan membuat berkas repositori docker.list di direktori /etc/apt/sources.list.d.
				
					echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullconsole.log( 'Code is Poetry' );echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
				
			
  • Setelah itu, update ulang daftar paket sistem
				
					sudo apt update
				
			
  • Instal docker dengan perintah:
				
					sudo apt install -y docker-ce docker-ce-cli containerd.io -y
				
			
  • Untuk mengecek docker sudah berjalan, jalankan perintah di bawah ini.
				
					sudo systemctl status docker
				
			
1-sudo-systemctl-status-docker

Apabila statusnya muncul “active (running)” artinya docker aktif dan berhasil dipasang.

  • Supaya tidak perlu mengetik sudo setiap kali pakai docker, jalankan perintah berikut:
				
					sudo usermod -aG docker $USER
newgrp
				
			
  • Lalu, logout dan login ulang ke server.
  • Sekarang coba jalankan perintah docker tanpa sudo, misalnya dengan mengecek versi docker yang sudah diinstal.
				
					docker version
				
			

STEP 2: Menyiapkan Container

Untuk menggunakan perintah docker exec kamu memerlukan container docker yang sedang berjalan. Apabila belum punya, jalankan container uji dengan perintah berikut:

				
					docker run -d --name container-name alpine watch "date >> /var/log/date.log"
				
			
2-tambah-image-alpine

Keterangan:

Perintah di atas akan membuat container baru dari image resmi Alpine milik Linux yang populer karena ringan dan minimalis.

  • -d -> menjalankan container di background (detached)
  • –name container name -> memberi nama container
  • alpine -> image yang digunakan
  • watch “date >> /var/log/date.log” -> perintah yang dijalankan di dalam container

Jangan lupa ganti container-name dengan nama yang kamu inginkan untuk containernya.

STEP 3: Menjalankan Docker Exec

Untuk menjalankan docker exec, ketahui dulu nama atau ID container dengan menjalankan perintah:

				
					docker ps
				
			

Outputnya kurang lebih pada gambar di bawah ini.

3-docker-ps-alpine

Kamu bisa menggunakan Container ID atau NAMES untuk memberitahu perintah `docker exec` kontainer mana yang akan digunakan.

Jika ingin mengganti nama container:

				
					docker rename container-name new-name
				
			

STEP 4: Menjalankan Shell dalam Container

Menjalankan Interaktif Shell dalam Container

Jika kamu ingin menggunakan shell interaktif di dalam kontainer docker, misalnya untuk menjelajahi sistem berkas atau mendebug proses yang sedang berjalan, gunakan perintah `docker exec` dengan opsi `-i` dan `-t`.

Opsi `-i` menjaga agar input tetap terbuka ke kontainer, sedangkan opsi `-t` membuat terminal palsu yang dapat dihubungkan oleh shell. Opsi-opsi ini dapat digabungkan seperti ini:

				
					docker exec -it container-name sh
				
			

Perintah tersebut akan menjalankan shell sh di dalam kontainer yang ditentukan, memberikan prompt shell dasar.

Untuk keluar dari kontainer, ketik exit lalu tekan ENTER.

				
					/ # exit
				
			

Kalau image memiliki bash, kamu bisa mengganti sh dengan bash.

Menjalankan Perintah Non-Interaktif

Untuk menjalankan perintah di dalam kontainer docker yang sedang berjalan tetapi tidak memerlukan interaksi, gunakan command:

				
					docker exec container-name tail /var/log/date.log
				
			

Output menampilkan 10 baris terakhir file log.

4-output-tail

Pada dasarnya perintah ini sama dengan membuka shell interaktif untuk kontainer Docker (seperti yang dilakukan pada langkah sebelumnya dengan perintah `docker exec -it container-name sh`) dan kemudian menjalankan perintah `tail /var/log/date.log`. Namun, perintah ini langsung mengembalikan output tanpa membuka pseudo-terminal.

Menjalankan Perintah di Direktori Tertentu

Untuk menjalankan perintah di direktori tertentu dalam kontainer, gunakan flag –workdir untuk menentukan direktori. Perintah contoh di bawah ini menetapkan direktori /tmp sebagai direktori kerja, lalu menjalankan perintah pwd, yang menampilkan direktori kerja saat ini:

				
					docker exec --workdir /tmp container-name pwd
				
			

Outputnya:

				
					root@vps:~# docker exec --workdir /tmp cont-alpine pwd
/tmp

				
			

Menjalankan Perintah Sebagai User Lain

Untuk menjalankan perintah sebagai pengguna yang berbeda di dalam kontainer, tambahkan flag –user.

				
					docker exec --user guest container-name whoami
				
			

Ini akan menggunakan pengguna guest untuk menjalankan perintah whoami di dalam kontainer. Perintah whoami menampilkan nama pengguna saat ini.

Outputnya:

				
					root@vps:~# docker exec --user guest cont-alpine whoami
guest

				
			

Menyisipkan Environment Variable ke Container

Ketika kamu menjalankan sebuah container docker, kadang perlu mengirimkan environment variable ke dalam container agar aplikasi di dalamnya bisa berfungsi sesuai kebutuhan.

Docker memungkinkan kamu untuk mengirimkan environment variabel tersebut saat container dijalankan dengan menggunakan flag -e.

				
					docker exec -e TEST=username container-name env
				
			

Perintah ini menetapkan environment variabel TEST menjadi username, lalu menjalankan perintah env di dalam kontainer. Perintah env kemudian menampilkan semua variabel lingkungan.

Outputnya:

5-environment-variable-env

Kamu bisa melihat bahwa variabel TEST bernilai username.

Jika banyak variabel, gunakan:

				
					docker exec -e TEST=username -e ENVIRONMENT=prod container-name env
				
			

ATAU gunakan file .env jika ingin memasukkan banyak environment variable sekaligus ke dalam container dengan menggunakan flag –env-file.

  • Pertama, buat file .env menggunakan editor teks. Di sini kita akan membuka file baru dengan nano, tetapi kamu dapat menggunakan editor apa pun.
				
					nano .env
				
			
  • Isi file tersebut dengan script di bawah ini. Lalu, simpan hasilnya dengan Ctrl+X, Y lalu Enter.
				
					TEST=jagoanhosting
ENVIRONMENT=prod

				
			
  • Lalu, jalankan:
				
					docker exec --env-file .env container-name env
				
			
  • Output yang dihasilkan akan menampilkan environment variable yang sudah ditetapkan tadi.
6-environment-variable-file-env

Jika kamu menggunakan lebih dari satu file .env, kamu bisa menambahkan beberapa flag –env-file. Jika ada variabel yang sama di beberapa file, maka file yang ditulis terakhir dalam perintah akan menimpa nilai sebelumnya.

Error yang Sering Muncul dan Solusinya

1. Error: “Container not found”

Error: No such container: container-name

Kesalahan “No such container” berarti kontainer yang ditentukan tidak ada, dan mungkin menandakan nama kontainer yang salah eja. Gunakan perintah `docker ps` untuk menampilkan daftar kontainer yang sedang berjalan dan periksa kembali namanya.

Error response from daemon: Permission denied

Kesalahan “Permission denied” biasanya terjadi ketika pengguna yang menjalankan perintah docker exec tidak memiliki izin yang cukup untuk mengakses kontainer. Pastikan pengguna memiliki izin yang diperlukan atau jalankan perintah dengan sudo.

Error response from daemon: Container 2a94aae70ea5dc92a12e30b13d0613dd6ca5919174d73e62e29cb0f79db6e4ab is not running

Pesan kesalahan ini menunjukkan bahwa kontainer yang ditentukan sudah ada, tetapi saat ini tidak sedang berjalan. Hal ini dapat terjadi jika kontainer sebelumnya telah dimulai dan kemudian dihentikan, atau jika kontainer tersebut mengalami crash atau keluar karena kesalahan. Untuk mengatasi masalah ini, kamu dapat memulai kembali kontainer menggunakan perintah `docker start`, diikuti dengan nama kontainer:

				
					docker start container-name
				
			

Error response from daemon: Container container-name is paused, unpause the container before exec

Kesalahan “The Container is paused” menunjukkan bahwa kontainer yang ditentukan saat ini berada dalam keadaan tertahan. Ini berarti kontainer tersebut tidak sedang berjalan, tetapi juga tidak dihentikan. Sebelum kakmu dapat menjalankan perintah di dalam kontainer, kamuperlu mengaktifkannya kembali menggunakan perintah:

				
					docker unpause container-name
				
			

Demikian perintah docker exec kamu bisa mengatur perilaku aplikasi tanpa harus mengubah kode atau file konfigurasi di dalam container, Sob jadi kamu bisa lebih fleksibel dalam melakukan debugging, testing, atau penyesuaian konfigurasi secara langsung tanpa perlu rebuild image atau deploy ulang container.

Kalau ada yang masih bikin bingung, jangan ragu hubungi Tim Support Jagoan Hosting melalui Live Chat atau Open Ticket, Sob!

Related Posts
Tips Mengatasi Error Undefined Index / Variable

Pengantar Halo sobat Jagoan! di tutorial kali ini kita bakalan membahas permasalahan Error Undefined Index/Variable. Pasti sekarang kamu lagi main-main Read more

Tutorial Mudah Setting Mail pada Mac Operating System

Hai Sob! Apakah Sobat butuh panduan untuk melakukan setting Mail pada Mac OS Sobat? Tenang aja Sob! Jagoan Hosting selalu Read more

Tutorial Mempercepat Load Website dengan Caching Browser

Hai Sob! Apa Sobat lagi bingung gimana caranya mempercepat load website dengan caching browser? Santai aja Sob, dibawah ini banyak Read more

Tutorial Menambahkan Module phpinfo mysqli, gd, pdo, zip, mcrypt, mbstring melalui cpanel select php version

Pernahkah kamu mengalami error yang berkaitan dengan phpinfo mysqli, gd, pdo, zip, mcrypt, mbstring? Nggak perlu panik, Sob, kamu hanya Read more