Gambar Docker memudahkan penerapan beberapa wadah tanpa harus mempertahankan gambar yang sama di beberapa mesin virtual. Anda dapat menggunakan Dockerfile untuk mengotomatiskan instalasi dan konfigurasi gambar dan dependensinya. ADockerfile adalah file teks dari perintah (yang dijalankan secara berurutan) yang digunakan untuk mengotomatiskan instalasi dan konfigurasi image Docker. Artikel ini memperluas panduan kami tentangCara Menggunakan Dockerfile untuk Membangun Image Docker dengan membahas pemanfaatan image, container, dan Dockerfiles Docker secara mendalam.
Sebelum Anda Mulai
-
Biasakan diri Anda dengan panduan Memulai kami, buat dan perbarui Linode, dan instal Docker. Atau, Anda dapat dengan cepat menerapkan Linode yang telah diperbarui dan mendukung Docker dengan Aplikasi Docker Marketplace.
-
Pastikan Linode Anda aman dengan mengikuti panduan kami tentang Menyiapkan dan Mengamankan Instans Komputasi.
-
Panduan ini mengasumsikan Anda nyaman menggunakan antarmuka baris perintah (CLI) Docker. Untuk mempelajari lebih lanjut tentang CLI Docker, lihat dokumentasinya.
-
Tinjau panduan kami untuk memahami dasar-dasar Dockerfiles.
Buat Dockerfile Anda untuk Gambar Docker
Docker membutuhkan Dockerfile yang berfungsi untuk build-nya. Di sini, kita akan membuat Dockerfile yang menyiapkan image Ubuntu dengan Apache yang bertindak sebagai server web dan menggunakan port HTTP standar 80.
-
Pada prompt perintah (baik melalui SSH atau Lish di Linode Manager), buat dan ubah ke direktori baru:
mkdir ~/mydockerbuild && cd ~/mydockerbuild
-
Buat contoh Dockerfile untuk aplikasi Apache Anda:
touch apache_dockerfile
-
Buka Dockerfile menggunakan editor teks pilihan Anda (untuk contoh ini, kami menggunakan nano):
nano apache_dockerfile
-
Salin contoh berikut ke Dockerfile Anda. Ini membuat Dockerfile yang menghasilkan image Ubuntu yang diperbarui, menetapkan informasi pengelola, menginstal Apache, membuka port container 80, dan akhirnya memulai server Apache saat dijalankan:
- File:apache_dockerfile
1 2 3 4 5 6 7 8 9
FROM ubuntu MAINTAINER John Doe [email protected] ARG DEBIAN_FRONTEND=noninteractive RUN apt-get update RUN apt-get upgrade -y RUN apt-get install apache2 -y RUN apt-get clean EXPOSE 80 CMD ["apache2ctl","-D","FOREGROUND"]
Catatan
ARG DEBIAN_FRONTEND=noninteractive
instruksi memastikan bahwaRUN apt-get
berikutnya perintah dijalankan tanpa memerlukan input pengguna tambahan saat membuat gambar. Instruksi ini juga dapat ditulis menggunakanENV
bukannyaARG
untuk membuat variabel lingkungan bertahan dalam wadah yang digunakan dengan gambar. Karena non-interaktivitas mungkin tidak diharapkan saat bekerja dalam wadah seperti itu,ARG
direkomendasikan dalam kasus ini. -
Simpan dan tutup file.
Membangun Gambar Docker dari Dockerfile
-
Buat gambar berlabel
apache_image
dari Dockerfile menggunakandocker build
perintah:docker build ~/mydockerbuild -f apache_dockerfile -t apache_image
-
Setelah build selesai dan Anda kembali ke command prompt, tampilkan gambar sistem Anda yang tersedia dengan perintah berikut:
docker images
Outputnya akan terlihat seperti ini (repositori “ubuntu” juga tersedia karena baris “FROM ubuntu” di Dockerfile):
REPOSITORY TAG IMAGE ID CREATED SIZE apache_image latest 7e5c14739da5 7 seconds ago 215MB ubuntu latest 7e0aa2d69a15 6 weeks ago 72.7MB
Catatan
Secara default, gambar yang dibuat diberi tag “terbaru”. Jika Anda ingin mengubah tag, seperti "pengembangan", format perintah sebagai berikut:
docker build ~/mydockerbuild -f apache_dockerfile -t apache_image:development
Menjalankan Gambar Docker Anda sebagai Container
Saat Anda menjalankan docker run
perintah, Anda meluncurkan wadah Docker yang terkait dengan sesi terminal Anda. Ini juga disebut sebagai menjalankan proses di latar depan . Saat proses root Anda berada di latar depan dan terikat ke sesi terminal, wadah Anda keluar segera setelah Anda menutup sesi terminal. Jika Anda ingin wadah Anda berjalan bahkan setelah sesi terminal Anda ditutup, Anda dapat menjalankan wadah Anda di terpisah mode. Ini menjalankan wadah Anda di latar belakang .
Untuk menjalankan image Docker sebagai container dalam mode terpisah:
-
Masukkan perintah berikut untuk membangun sebuah wadah bernama
apache
dengan gambar Anda, menggunakan-d
argumen untuk memastikan penampung Anda berjalan di latar belakang:docker run --name apache -d apache_image
-
Setelah Anda kembali ke command prompt, jalankan perintah berikut untuk membuat daftar container aktif Anda dan konfirmasikan
apache
berjalan di latar belakang:docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1d5e1da50a86 apache_image "apache2ctl -D FOREG…" 3 minutes ago Up 3 minutes 80/tcp apache
-
Sekarang Anda dapat melakukan pekerjaan pengembangan dengan server Apache dan masih memiliki akses ke baris perintah. Namun, penampung Anda tidak dapat diakses secara publik karena tidak memiliki konfigurasi port tambahan. Di bagian berikutnya, Anda akan membangun kembali wadah dengan konfigurasi port yang memungkinkan Anda mengakses server web. Untuk saat ini, hentikan penampung:
docker stop apache
Catatan Anda dapat memasukkan ID penampung sebagai pengganti
apache
pada perintah di atas. -
Masukkan
docker ps
lagi untuk memastikan semuaapache
your penampung tidak lagi berjalan. -
Sekarang penampung telah dihentikan, Anda dapat menghapusnya:
docker rm apache
Hati-hatiMenghapus wadah dengan cara ini akan menghapus semua data di dalam wadah. Jika Anda telah membuat penyesuaian yang ingin Anda bawa ke wadah baru, Anda dapat menggunakan
docker commit
untuk membuat gambar baru yang menyertakan pembaruan Anda:docker commit apache apache_image_update
Kemudian, Anda dapat menerapkan wadah baru berdasarkan
apache_image_update
baru gambar di bagian berikutnya.
Konfigurasikan Port Docker Container Anda
Anda dapat menggunakan run
opsi perintah untuk mengonfigurasi berbagai aspek penampung Anda. Saat container Anda berjalan pada host jarak jauh dan menyajikan aplikasinya, Anda dapat mengonfigurasi portnya untuk memaparkan aplikasi kepada pengguna.
Misalnya, Anda dapat mengonfigurasi apache
wadah untuk menggunakan port host 8080
dan port kontainer 80
seperti contoh perintah dibawah ini. Perhatikan -d
opsi yang digunakan dalam perintah untuk menjalankan container sebagai proses terpisah.
docker run --name apache -p 8080:80 -d apache_image
Sintaks umum untuk perintah ini adalah sebagai berikut:
docker run -–name <container name> -p <network port>:<container port> -d <container image label or ID>
Setiap parameter dijelaskan dalam daftar berikut:
<container name>
:Nama wadah Docker<host port>
:Port host yang dipetakan ke port terbuka container<container port>
:Port tempat container Docker mendengarkan<container image name>
:Nama gambar Docker yang digunakan untuk penerapan Anda
Sekarang, navigasikan ke alamat IP Linode Anda di port host 8080 dengan menavigasi ke http://<your Linode's IP address>:8080
di peramban web. Anda akan melihat “Halaman Default Apache2 Ubuntu” yang disajikan dari wadah Docker Anda.
Hati-hati Saat men-deploy container dengan konfigurasi port, Docker juga dapat membuat aturan firewall host untuk mengizinkan akses publik ke container tersebut. Ini dapat menimpa atau bertentangan dengan aturan firewall host yang telah Anda konfigurasikan di Linode Anda.
Bacaan Lebih Lanjut
Panduan danCara Menggunakan File Docker untuk Membangun Gambar Docker ini membahas dasar-dasar penggunaan file Docker untuk membangun gambar dan wadah, tetapi mereka hampir tidak menggores permukaan dari apa yang dapat Anda capai dengan Docker. Untuk informasi lebih lanjut:
-
kunjungi dokumentasi Praktik Terbaik Dockerfile resmi untuk mengetahui lebih lanjut tentang Dockerfiles;
-
dan, terlepas dari namanya, panduan Memulai Docker adalah tutorial mendalam, yang mengarah ke panduan yang lebih mendalam, seperti menerapkan aplikasi ke cloud dan menyiapkan CI/CD (integrasi dan penerapan berkelanjutan).
Informasi Lebih Lanjut
Anda mungkin ingin berkonsultasi dengan sumber daya berikut untuk informasi tambahan tentang topik ini. Meskipun ini disediakan dengan harapan dapat bermanfaat, harap perhatikan bahwa kami tidak dapat menjamin keakuratan atau ketepatan waktu materi yang dihosting secara eksternal.
- Praktik Terbaik untuk Menulis File Docker
- Gambar Resmi Docker di Docker Hub
- Dokumen Docker