Your cart is currently empty!
Docker: Membuat dan Menjalankan Container
Kita akan menelusuri perintah docker run
dan opsi-opsi nya untuk membuat dan menjalankan container.
# Syntax
docker run \
--name <some-container-name> \
-d \
-it \
-p <host-port>:<container-port> \
-e <env-key>=<env-value> \
-v <host-dir/file>:<container-dir/file> \
--rm \
<image-name>[:<image-tag>] \
[/bin/bash, /bin/sh, <container-cmd>]
#1. Mengunduh image. Sebelum kita bisa membuat dan menjalankan container, kita memerlukan image. Untuk contoh kali ini saya akan menggunakan pre-built wordpress image yang ada di Docker Hub. Di dalam image ini sudah ada web server dan aplikasinya.
$ docker pull wordpress
#2. Menjalankan docker run
tanpa opsi. Console akan terikat dengan STDOUT/STDERR dan satu-satu nya cara untuk keluar adalah dengan menghentikan container (CTRL+C). Setelah container berhenti bisa dijalankan lagi dengan perintah docker start <container_id/name>
.
$ docker run wordpress
WordPress not found in /var/www/html - copying now...
Complete! WordPress has been successfully copied to /var/www/html
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.3. Set the 'ServerName' directive globally to suppress this message
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.3. Set the 'ServerName' directive globally to suppress this message
[Fri Dec 25 12:23:17.606228 2020] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.38 (Debian) PHP/7.4.13 configured -- resuming normal operations
[Fri Dec 25 12:23:17.614375 2020] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'
^C[Fri Dec 25 12:26:50.495138 2020] [mpm_prefork:notice] [pid 1] AH00169: caught SIGTERM, shutting down
#3. Menjalankan docker run
dengan opsi -i -t
atau -it
. Sama seperti tanpa opsi #2 tetapi untuk keluar tidak perlu menghentikan container. Dengan menekan CTRL+P and CTRL+Q untuk detach, container akan tetap berjalan di background.
$ docker run -it wordpress
WordPress not found in /var/www/html - copying now...
Complete! WordPress has been successfully copied to /var/www/html
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.3. Set the 'ServerName' directive globally to suppress this message
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.3. Set the 'ServerName' directive globally to suppress this message
[Fri Dec 25 12:23:17.606228 2020] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.38 (Debian) PHP/7.4.13 configured -- resuming normal operations
[Fri Dec 25 12:23:17.614375 2020] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'
^P^Q
Untuk kembali kedalam container (re-attach):
$ docker exec -it <container-id | container-name> /bin/bash
Jika anda menggunakan perintah berikut untuk kembali ke dalam container (re-attach) maka container akan berhenti.
$ docker attach <container-id | container-name>
[Fri Dec 25 13:08:15.846523 2020] [mpm_prefork:notice] [pid 1] AH00170: caught SIGWINCH, shutting down gracefully
#4. Menjalankan docker run
dengan opsi -it
lalu diakhiri dengan /bin/bash
(posisi /bin/bash harus setelah nama image). Masuk kedalam shell setelah container selesai dibuat.
$ docker run -it wordpress /bin/bash
root@e005b557a86c:/var/www/html#
#5. Menjalankan docker run
dengan opsi -d
(detach). Container berjalan di background.
$ docker run -d wordpress
a8c64aa49aa05952c2b1862724e8d38e713c3cd0e92f09baac93eb901b8882e4
#6. Menjalankan docker run
dengan opsi -p <host_port>:<container_port>
. Mengikat port 8080 milik host dengan port 80 milik container.
$ docker run -d -p 8080:80 wordpress
a8c64aa49aa05952c2b1862724e8d38e713c3cd0e92f09baac93eb901b8882e4
#7. Menjalankan docker run
dengan opsi --rm
. Container akan automatis terhapus jika berhenti/diberhentikan.
$ docker run --rm wordpress
#8 Menjalankan docker run
dengan opsi –name <container_name>. Menetapkan nama container. Jika tanpa opsi ini, container diberikan nama secara acak (random) oleh Docker.
$ docker run --name wp1 wordpress
#9 Menjalankan docker run
dengan opsi -v <host_dir/file>:<container_dir/file>
. Folder/file pada host akan terhubung dengan folder/file pada container. File pada host directory /test akan di overwrite oleh file pada container directory /var/html/test.
$ docker run -d -v /test:/var/html/test wordpress
Selamat mencoba!
Leave a Reply