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!


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *