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
- Sudah menginstal docker, jika belum ikuti STEP 1 pada langkah setelah ini
- 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

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"

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.

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.

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:

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.

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.
2. Erorr: “Permission denied”
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.
3. Error: “Container is not running”
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
4. Error: “Container is paused”
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!
Pengantar Halo sobat Jagoan! di tutorial kali ini kita bakalan membahas permasalahan Error Undefined Index/Variable. Pasti sekarang kamu lagi main-main Read more
Hai Sob! Apakah Sobat butuh panduan untuk melakukan setting Mail pada Mac OS Sobat? Tenang aja Sob! Jagoan Hosting selalu Read more
Hai Sob! Apa Sobat lagi bingung gimana caranya mempercepat load website dengan caching browser? Santai aja Sob, dibawah ini banyak Read more
Pernahkah kamu mengalami error yang berkaitan dengan phpinfo mysqli, gd, pdo, zip, mcrypt, mbstring? Nggak perlu panik, Sob, kamu hanya Read more