Cara Membuat dan Mengonfigurasi Gambar Docker Kustom Secara Otomatis dengan Dockerfile - Bagian 3


Tutorial ini akan berkonsentrasi pada cara membuat image Docker kustom berdasarkan Ubuntu dengan layanan Apache terinstal. Seluruh proses akan diotomatisasi menggunakan Dockerfile.

Gambar Docker dapat dibuat secara otomatis dari file teks, bernama Dockerfiles. File Docker berisi instruksi atau perintah langkah demi langkah yang digunakan untuk membuat dan mengonfigurasi image Docker.

Persyaratan

  • Instal Docker dan Pelajari Manipulasi Kontainer Docker – Bagian 1
  • Menyebarkan dan Menjalankan Aplikasi di bawah Docker Containers – Bagian 2

Pada dasarnya, file Docker berisi berbagai instruksi untuk membangun dan mengonfigurasi container tertentu berdasarkan kebutuhan Anda. Petunjuk berikut adalah yang paling sering digunakan, beberapa di antaranya wajib:

  1. FROM=Wajib sebagai instruksi pertama dalam file Docker. Memerintahkan Docker untuk menarik image dasar tempat Anda membuat image baru. Gunakan tag untuk menentukan gambar persis yang Anda buat:
Ex: FROM ubuntu:20.04
  1. MAINTAINER=Penulis gambar build
  2. RUN=Instruksi ini dapat digunakan pada beberapa baris dan menjalankan perintah apa pun setelah image Docker dibuat.
  3. CMD=Jalankan perintah apa pun saat image Docker dimulai. Gunakan hanya satu instruksi CMD di Dockerfile.
  4. ENTRYPOINT=Sama seperti CMD tetapi digunakan sebagai perintah utama untuk gambar.
  5. EXPOSE=Memerintahkan container untuk mendengarkan port jaringan saat dijalankan. Port kontainer tidak dapat dijangkau dari host secara default.
  6. ENV=Tetapkan variabel lingkungan kontainer.
  7. ADD=Menyalin sumber daya (file, direktori, atau file dari URL).

Langkah 1: Membuat atau Menulis Repositori Dockerfile

1. Pertama, mari kita buat semacam repositori Dockerfile untuk menggunakan kembali file di masa mendatang untuk membuat image lain. Buat direktori kosong di suatu tempat di partisi /var tempat kita akan membuat file dengan instruksi yang akan digunakan untuk membuat image Docker baru.

mkdir -p /var/docker/ubuntu/apache
touch /var/docker/ubuntu/apache/Dockerfile

2. Selanjutnya, mulailah mengedit file dengan petunjuk berikut:

vi /var/docker/ubuntu/apache/Dockerfile

Kutipan Dokerfile:

FROM ubuntu
MAINTAINER  your_name  <[email >
RUN apt-get -y install apache2
RUN echo “Hello Apache server on Ubuntu Docker” > /var/www/html/index.html
EXPOSE 80
CMD /usr/sbin/apache2ctl -D FOREGROUND

Sekarang, mari kita lihat petunjuk filenya:

Baris pertama memberi tahu kita bahwa kita sedang membangun dari gambar Ubuntu. Jika tidak ada tag yang dikirimkan, misalnya 14:10, gambar terbaru dari Docker Hub akan digunakan.

Pada baris kedua, kami menambahkan nama dan email pembuat gambar. Dua baris RUN berikutnya akan dieksekusi dalam container saat membuat image dan akan menginstal daemon Apache dan echo beberapa teks ke dalam halaman web default Apache .

Baris EXPOSE akan memerintahkan container Docker untuk mendengarkan pada port 80, namun port tersebut tidak akan tersedia di luar. Baris terakhir menginstruksikan container untuk menjalankan layanan Apache di latar depan setelah container dimulai.

3. Hal terakhir yang perlu kita lakukan adalah mulai membuat image dengan mengeluarkan perintah di bawah ini, yang secara lokal akan membuat image Docker baru bernama ubuntu-apache berdasarkan pada Dockerfile dibuat sebelumnya, seperti yang ditunjukkan dalam contoh ini:

docker build -t ubuntu-apache /var/docker/ubuntu/apache/

4. Setelah gambar dibuat oleh Docker, Anda dapat membuat daftar semua gambar yang tersedia dan mengidentifikasi gambar Anda dengan mengeluarkan perintah berikut:

docker images

Langkah 2: Jalankan Container dan Akses Apache dari LAN

5. Untuk menjalankan container secara terus-menerus (di latar belakang) dan mengakses layanan (port) container yang terekspos dari host atau mesin jarak jauh lainnya di LAN Anda, jalankan perintah di bawah ini pada prompt terminal host Anda :

docker run -d -p 81:80 ubuntu-apache

Di sini, opsi -d menjalankan container ubuntu-apache di latar belakang (sebagai daemon) dan opsi -p memetakan port container 80 ke port localhost Anda 81. Akses luar LAN ke layanan Apache hanya dapat dijangkau melalui port 81.

Perintah Netstat akan memberi Anda gambaran tentang port apa yang didengarkan oleh host.

Setelah container dimulai, Anda juga dapat menjalankan perintah docker ps untuk melihat status container yang sedang berjalan.

6. Halaman web dapat ditampilkan di host Anda dari baris perintah menggunakan utilitas curl terhadap Alamat IP mesin Anda, localhost, atau antarmuka docker net pada port 81. Gunakan perintah IP baris untuk menampilkan alamat IP antarmuka jaringan.

ip addr               [List nework interfaces]
curl ip-address:81    [System Docker IP Address]
curl localhost:81     [Localhost]

7. Untuk mengunjungi laman web penampung dari jaringan Anda, buka browser di lokasi jarak jauh dan gunakan protokol HTTP, Alamat IP mesin tempat penampung berjalan, diikuti dengan port 81 seperti yang diilustrasikan pada gambar di bawah.

http://ip-address:81

8. Untuk mengetahui proses apa saja yang berjalan di dalam container, jalankan perintah berikut:

docker ps
docker top <name or ID of the container>

9. Untuk menghentikan penampung, keluarkan perintah docker stop yang diikuti dengan ID atau nama penampung.

docker stop <name or ID of the container>
docker ps

10. Jika Anda ingin menetapkan nama deskriptif untuk penampung, gunakan opsi --name seperti yang ditunjukkan pada contoh di bawah ini:

docker run --name my-www -d -p 81:80 ubuntu-apache
docker ps

Sekarang Anda dapat mereferensikan wadah untuk manipulasi (mulai, berhenti, atas, statistik, dll) hanya dengan menggunakan nama yang ditetapkan.

docker stats my-www

Langkah 3: Buat File Konfigurasi Seluruh Sistem untuk Docker Container

11. Di CentOS/RHEL Anda dapat membuat file konfigurasi systemd dan mengelola container seperti yang biasa Anda lakukan untuk layanan lokal lainnya.

Misalnya, buat file systemd baru dengan nama, katakanlah, apache-docker.service menggunakan perintah berikut:

vi /etc/systemd/system/apache-docker.service

Kutipan file apache-docker.service:

[Unit]
Description=apache container
Requires=docker.service
After=docker.service

[Service]
Restart=always
ExecStart=/usr/bin/docker start -a my-www
ExecStop=/usr/bin/docker stop -t 2 my-www

[Install]
WantedBy=local.target

12. Setelah Anda selesai mengedit file, tutup file tersebut, muat ulang daemon systemd untuk mencerminkan perubahan dan mulai penampung dengan mengeluarkan perintah berikut:

systemctl daemon-reload
systemctl start apache-docker.service
systemctl status apache-docker.service

Ini hanyalah contoh sederhana tentang apa yang dapat Anda lakukan dengan Dockerfile sederhana, namun Anda dapat membuat beberapa aplikasi yang cukup canggih terlebih dahulu yang dapat dijalankan hanya dalam hitungan detik dengan sumber daya dan usaha minimal.

Bacaan Lebih Lanjut: