Apa itu Dockerfile dan Cara Membuat Gambar Docker?

Saat bekerja pada proyek buruh pelabuhan, sebagian besar waktu, gambar buruh pelabuhan yang ada tidak akan memenuhi persyaratan Anda.


Di sinilah Dockerfile masuk ke dalam gambar; itu akan membantu Anda membuat gambar Docker khusus. Karenanya, mengetahui tentang Dockerfile sangat penting.

Apa itu Dockerfile??

Ini adalah file teks sederhana dengan seperangkat perintah atau instruksi. Perintah / instruksi ini dijalankan secara berturut-turut untuk melakukan tindakan pada gambar dasar untuk membuat gambar buruh pelabuhan baru.

komentar dan perintah + argumen adalah dua jenis blok baris utama dalam sintaks Dockerfile

Sintaks Komentar

#Baris blok yang digunakan untuk berkomentar

argumen perintah argumen1 …..

Perintah + Contoh Argumen

#Baris blok yang digunakan untuk berkomentar

argumen perintah argumen1 …..

Di bawah ini adalah bagaimana alur kerja Anda akan terlihat.

  • Buat Dockerfile dan sebutkan instruksi untuk membuat gambar buruh pelabuhan Anda
  • Jalankan perintah build docker yang akan membangun image docker
  • Sekarang gambar buruh pelabuhan siap digunakan, gunakan perintah buruh pelabuhan untuk membuat wadah

alur kerja dockerfile

Perintah Dasar

DARI – Menentukan gambar dasar untuk digunakan dan memulai proses pembuatan.

LARI – Dibutuhkan perintah dan argumennya untuk menjalankannya dari gambar.

CMD – Fungsi serupa sebagai perintah RUN, tetapi dieksekusi hanya setelah wadah instantiated.

TITIK MASUK – Ini menargetkan aplikasi default Anda di gambar ketika wadah dibuat.

MENAMBAHKAN – Ini menyalin file dari sumber ke tujuan (di dalam wadah).

ENV – Setel variabel lingkungan.

Cara membuat Gambar Docker dengan Dockerfile?

Pertama, mari kita buat Dockerfile.

[dilindungi email]: ~ $ gedit Dockerfile

Masukkan perintah / instruksi di bawah ini ke dalamnya dan simpan.

# Atur gambar dasar ke Ubuntu
DARI ubuntu

# Perbarui daftar sumber repositori dan instal gnupg2
Jalankan pembaruan apt-get && apt-get install -y gnupg2

# Tambahkan kunci verifikasi paket
RUN apt-key adv –keyserver hkp: //keyserver.ubuntu.com: 80 –recv 7F0CEB10

# Tambahkan MongoDB ke daftar sumber repositori
RUN echo ‘deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen’ > tee /etc/apt/sources.list.d/mongodb.list

# Perbarui daftar sumber repositori
Jalankan pembaruan apt-get

# Instal paket MongoDB (.deb)
Jalankan apt-get install -y mongodb

# Buat direktori data default
RUN mkdir -p / data / db

# Ekspos port default
EXPOSE 27017

# Port default untuk menjalankan entrypoint (MongoDB)
CMD ["–port 27017"]

# Tetapkan perintah wadah default
ENTRYPOINT usr / bin / mongodb

Di Dockerfile ini, ubuntu ditetapkan sebagai gambar dasar. Kemudian perintah dan argumen yang diperlukan disebutkan untuk menginstal MongoDB. Port 27017 terbuka ke MongoDB dengan perintah container default sebagai usr / bin / mongodb

Selanjutnya, saya akan menjalankannya untuk membuat gambar buruh pelabuhan.

Menjalankan Dockerfile

Perintah berikut akan membuat gambar buruh pelabuhan yang disebut geekflare_mongodb setelah eksekusi berhasil.

[dilindungi email]: ~ $ docker build -t geekflare_mongodb .

Mengirim konteks build ke Docker daemon 667.2MB

Langkah 1/9: DARI ubuntu

terbaru: Menarik dari perpustakaan / ubuntu

7413c47ba209: Tarik selesai

0fe7e7cbb2e8: Tarik selesai

1d425c982345: Tarik selesai

344da5c95cec: Tarik selesai

Intisari: sha256: c303f19cfe9ee92badbbbd7567bc1ca47789f79303ddcef56f77687d4744cd7a

Status: Unduh gambar yang lebih baru untuk ubuntu: terbaru

—> 3556258649b2

Langkah 2/10: JALANKAN pembaruan apt-get && apt-get install -y gnupg2

—> Berjalan di de3706328761

Dapatkan: 1 http://security.ubuntu.com/ubuntu bionic-security InRelease [88,7 kB]

Dapatkan: 2 http://archive.ubuntu.com/ubuntu bionic InRelease [242 kB]

Diambil 16,9 MB dalam 38s (445 kB / s)

Membaca daftar paket…

Membaca daftar paket…

Membangun pohon ketergantungan…

Membaca informasi keadaan…

Perlu mendapatkan 5187 kB arsip.

Setelah operasi ini, 15,8 MB ruang disk tambahan akan digunakan.

Dapatkan: 1 http://archive.ubuntu.com/ubuntu bionic / main amd64 readline-common all 7.0-3 [52.9 kB]

Dapatkan: 2 http://archive.ubuntu.com/ubuntu bionic / main amd64 libreadline7 amd64 7.0-3 [124 kB]

Dapatkan: 3 http://archive.ubuntu.com/ubuntu bionic-updates / main amd64 libsqlite3-0 amd64 3.22.0-1ubuntu0.1 [497 kB]

Dapatkan: 4 http://archive.ubuntu.com/ubuntu bionic-updates / main amd64 libssl1.1 amd64 1.1.1-1ubuntu2.1 ~ 18.04.4 [1300 kB]

debconf: menunda konfigurasi paket, karena apt-utils tidak diinstal

Diambil 5187 kB dalam 12s (416 kB / s)

Memilih paket yang sebelumnya tidak dipilih, readline-common.

(Membaca database … 4040 file dan direktori saat ini diinstal.)

Bersiap membongkar … / 00-readline-common_7.0-3_all.deb …

Membongkar readline-common (7.0-3) …

Memilih paket yang sebelumnya tidak dipilih libreadline7: amd64.

Bersiap membongkar … / 01-libreadline7_7.0-3_amd64.deb …

Memilih dirmngr paket yang sebelumnya tidak dipilih.

Menyiapkan libnpth0: amd64 (1.5-3) …

Menyiapkan libksba8: amd64 (1.3.5-2) …

Menyiapkan gnupg-l10n (2.2.4-1ubuntu1.2) …

Memproses pemicu untuk libc-bin (2.27-3ubuntu1) …

Menghapus de3706328761 wadah menengah

—> a32533894ed1

Langkah 3/10: RUN apt-key adv –keyserver hkp: //keyserver.ubuntu.com: 80 –recv 7F0CEB10

—> Berjalan di 69c4dba38983

Peringatan: keluaran apt-key tidak boleh diuraikan (stdout bukan terminal)

Eksekusi: /tmp/apt-key-gpghome.MuT5BDWwKZ/gpg.1.sh –keyserver hkp: //keyserver.ubuntu.com: 80 –recv 7F0CEB10

gpg: kunci 5F8F93707F0CEB10: kunci publik "Kunci Penandatanganan Benar-Benar Tepat <[dilindungi email]>" impor

gpg: key 9ECBEC467F0CEB10: 1 tanda tangan tidak dicentang karena kunci yang hilang

gpg: key 9ECBEC467F0CEB10: kunci publik "Richard Kreuter <[dilindungi email]>" impor

gpg: Jumlah total yang diproses: 2

gpg: diimpor: 2

Menghapus wadah antara 69c4dba38983

—> cffbe06c1b50

Langkah 4/10: RUN echo ‘deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen’ > tee /etc/apt/sources.list.d/mongodb.list

—> Berjalan di 40630fd7b0a9

Menghapus wadah perantara 40630fd7b0a9

—> a1bd9d8d7e51

Langkah 5/10: JALANKAN pembaruan apt-get

—> Berjalan di 750717d9c0ea

Hit: 1 http://archive.ubuntu.com/ubuntu bionic InRelease

Hit: 2 http://archive.ubuntu.com/ubuntu bionic-updates InRelease

Hit: 3 http://security.ubuntu.com/ubuntu bionic-security InRelease

Hit: 4 http://archive.ubuntu.com/ubuntu bionic-backports InRelease

Membaca daftar paket…

Menghapus 750717d9c0ea wadah menengah

—> 397d6501db58

Langkah 6/10: Jalankan apt-get install -y mongodb

—> Berjalan di 88609c005e73

Membaca daftar paket…

Membangun pohon ketergantungan…

Membaca informasi keadaan…

Paket BARU berikut ini akan diinstal:

libboost-filesystem1.65.1 libboost-iostreams1.65.1

libboost-program-options1.65.1 libboost-system1.65.1 libgoogle-perftools4

libpcap0.8 libpcrecpp0v5 libsnappy1v5 libstemmer0d libtcmalloc-minimal4

libunwind8 libyaml-cpp0.5v5 mongo-tools mongodb mongodb-klien

mongodb-server mongodb-server-core

0 ditingkatkan, 17 baru dipasang, 0 untuk dihapus dan 0 tidak ditingkatkan.

Perlu mendapatkan arsip 53,7 MB.

Setelah operasi ini, 218 MB ruang disk tambahan akan digunakan.

Dapatkan: 1 http://archive.ubuntu.com/ubuntu bionic-updates / universe amd64 mongodb-clients amd64 1: 3.6.3-0ubuntu1.1 [20.2 MB]

Dapatkan: 2 http://archive.ubuntu.com/ubuntu bionic-updates / universe amd64 mongodb-server-core amd64 1: 3.6.3-0ubuntu1.1 [20,3 MB]

Dapatkan: 3 http://archive.ubuntu.com/ubuntu bionic-updates / universe amd64 mongodb-server semua 1: 3.6.3-0ubuntu1.1 [12.6 kB]

Dapatkan: 4 http://archive.ubuntu.com/ubuntu bionic-updates / universe amd64 mongodb amd64 1: 3.6.3-0ubuntu1.1 [9968 B]

Diperoleh 53,7 MB dalam 10d (5485 kB / s)

Memilih paket yang sebelumnya tidak dipilih libpcap0.8: amd64.

(Membaca basis data … 4390 file dan direktori saat ini diinstal.)

Memilih paket mongodb-klien yang sebelumnya tidak dipilih.

Bersiap untuk membuka paket … / 13-mongodb-clients_1% 3a3.6.3-0ubuntu1.1_amd64.deb …

Membongkar mongodb-klien (1: 3.6.3-0ubuntu1.1) …

Memilih paket mongodb-server-core yang sebelumnya tidak dipilih.

Bersiap membuka paket … / 14-mongodb-server-core_1% 3a3.6.3-0ubuntu1.1_amd64.deb …

Membongkar mongodb-server-core (1: 3.6.3-0ubuntu1.1) …

Memilih paket mongodb-server yang sebelumnya tidak dipilih.

Bersiap untuk membuka paket … / 15-mongodb-server_1% 3a3.6.3-0ubuntu1.1_all.deb …

Membongkar mongodb-server (1: 3.6.3-0ubuntu1.1) …

Memilih paket mongodb yang sebelumnya tidak dipilih.

Bersiap untuk membuka paket … / 16-mongodb_1% 3a3.6.3-0ubuntu1.1_amd64.deb …

Membongkar mongodb (1: 3.6.3-0ubuntu1.1) …

Menyiapkan mongodb-server-core (1: 3.6.3-0ubuntu1.1) …

Menyiapkan mongo-tools (3.6.3-0ubuntu1) …

Menyiapkan mongodb-klien (1: 3.6.3-0ubuntu1.1) …

Menyiapkan mongodb-server (1: 3.6.3-0ubuntu1.1) …

invoke-rc.d: tidak dapat menentukan runlevel saat ini

invoke-rc.d: policy-rc.d menolak eksekusi start.

Menyiapkan mongodb (1: 3.6.3-0ubuntu1.1) …

Memproses pemicu untuk libc-bin (2.27-3ubuntu1) …

Menghapus wadah antara 88609c005e73

—> d9c072cb1f84

Langkah 7/10: Jalankan mkdir -p / data / db

—> Berjalan di f817778f69ab

Menghapus wadah perantara f817778f69ab

—> a3fbdb3def5c

Langkah 8/10: EXPOSE 27017

—> Berjalan di 8d070e2a1e07

Menghapus wadah perantara 8d070e2a1e07

—> f770776a538c

Langkah 9/10: CMD ["–port 27017"]

—> Berjalan di ab612410df77

Menghapus wadah perantara ab612410df77

—> e5830b80934f

Langkah 10/10: ENTRYPOINT usr / bin / mongod

—> Berjalan di 95f574727aab

Menghapus 95f574727aab wadah menengah

—> 095d17727ca0

Berhasil membangun 095d17727ca0

Tagged geekflare_mongodb berhasil: terbaru

Mari kita periksa apakah gambar buruh pelabuhan itu dibuat dengan nama geekflare_mongodb.

[dilindungi email]: ~ $ buruh pelabuhan gambar

ID GAMBAR TAG PENGGANTIAN UKURAN YANG DICIPTAKAN

geekflare_mongodb terbaru 095d17727ca0 3 menit lalu 325MB

ubuntu 3556258649b2 terbaru 4 hari yang lalu 64.2MB

mean_express 35dcb3df9806 terbaru 6 hari lalu 923MB

mean_angular 9f8d61db600c terbaru 6 hari yang lalu 1.29GB

Jalankan gambar buruh pelabuhan geekflare_mongodb di dalam wadah mongo_container.

[dilindungi email]: ~ $ docker run –name mongo_container -i -t geekflare_mongodb

2019-07-27T19: 38: 23.734 + 0000 I CONTROL [initandlisten] MongoDB dimulai: pid = 6 port = 27017 dbpath = / data / db host 64-bit = b0095c1e5536

2019-07-27T19: 38: 23.735 + 0000 SAYA KENDALI [initandlisten] versi db v3.6.3

2019-07-27T19: 38: 23.735 + 0000 I CONTROL [initandlisten] versi git: 9586e557d54ef70f9ca4b43c26892cd55257e1a5

2019-07-27T19: 38: 23.736 + 0000 I CONTROL [initandlisten] Versi OpenSSL: OpenSSL 1.1.1 11 Sep 2018

2019-07-27T19: 38: 23.739 + 0000 I CONTROL [initandlisten] pengalokasi: tcmalloc

2019-07-27T19: 38: 23.739 + 0000 I CONTROL [initandlisten] modul: tidak ada

2019-07-27T19: 38: 23.739 + 0000 I CONTROL [initandlisten] membangun lingkungan:

2019-07-27T19: 38: 23.739 + 0000 I CONTROL [initandlisten] distarch: x86_64

2019-07-27T19: 38: 23.739 + 0000 SAYA KENDALI [initandlisten] target_arch: x86_64

2019-07-27T19: 38: 23.739 + 0000 opsi I CONTROL [initandlisten]: {}

2019-07-27T19: 38: 23.745 + 0000 I STORAGE [initandlisten] wiredtiger_open config: create, cache_size = 2038M, session_max = 20000, penggusuran = (threads_min = 4, threads_max = 4), config_base = false, statistik = (cepat) , log = (diaktifkan = benar, arsip = benar, path = jurnal, kompresor = tajam), file_manager = (close_idle_time = 100000), statistik_log = (tunggu = 0), verbose = (recovery_progress),

2019-07-27T19: 38: 24.733 + 0000 I CONTROL [initandlisten]

2019-07-27T19: 38: 24.734 + 0000 I CONTROL [initandlisten] ** PERINGATAN: Kontrol akses tidak diaktifkan untuk basis data.

2019-07-27T19: 38: 24.735 + 0000 I CONTROL [initandlisten] ** Akses baca dan tulis ke data dan konfigurasi tidak dibatasi.

2019-07-27T19: 38: 24.736 + 0000 I CONTROL [initandlisten] ** PERINGATAN: Anda menjalankan proses ini sebagai pengguna root, yang tidak direkomendasikan.

2019-07-27T19: 38: 24.736 + 0000 I CONTROL [initandlisten]

2019-07-27T19: 38: 24.736 + 0000 I CONTROL [initandlisten] ** PERINGATAN: Server ini terikat ke localhost.

2019-07-27T19: 38: 24.737 + 0000 I CONTROL [initandlisten] ** Sistem jarak jauh tidak akan dapat terhubung ke server ini.

2019-07-27T19: 38: 24.737 + 0000 I CONTROL [initandlisten] ** Mulai server dengan –bind_ip untuk menentukan IP mana

2019-07-27T19: 38: 24.737 + 0000 Saya MENGENDALIKAN [initandlisten] ** alamat yang harus ditanggapi, atau dengan –bind_ip_all untuk

2019-07-27T19: 38: 24.737 + 0000 I CONTROL [initandlisten] ** mengikat semua antarmuka. Jika perilaku ini diinginkan, mulai

2019-07-27T19: 38: 24.738 + 0000 I CONTROL [initandlisten] ** server dengan –bind_ip 127.0.0.1 untuk menonaktifkan peringatan ini.

2019-07-27T19: 38: 24.738 + 0000 I CONTROL [initandlisten]

2019-07-27T19: 38: 24.739 + 0000 I STORAGE [initandlisten] createCollection: admin.system.versi dengan UUID: 4b8b509d-633a-46c1-a302-cb8c82b0d5d3

2019-07-27T19: 38: 24.788 + 0000 I COMMAND [initandlisten] mengatur fiturCompatibilityVersion to 3.6

2019-07-27T19: 38: 24.818 + 0000 I STORAGE [initandlisten] createCollection: local.startup_log dengan dihasilkan UUID: 6c1c0366-4b1b-4b92-9fcd-d18acc126072

2019-07-27T19: 38: 24.862 + 0000 I FTDC [initandlisten] Menginisialisasi pengambilan data diagnostik penuh waktu dengan direktori ‘/ data / db /diagnostic.data’

2019-07-27T19: 38: 24.866 + 0000 I NETWORK [initandlisten] menunggu koneksi pada port 27017

Buka terminal baru dan periksa apakah mongo_container sedang berjalan.

[dilindungi email]: ~ $ docker ps

KOMANDA ID GAMBAR PERINTAH NAMA STATUS BUATAN STATUS

b0095c1e5536 geekflare_mongodb   "/ bin / sh -c usr / bin / …"   35 detik yang lalu Naik 33 detik 27017 / tcp mongo_container

Seperti yang Anda lihat, wadah yang dibuat dari gambar geekflare_mongodb sudah aktif.

Saya harap ini memberi Anda gambaran tentang buruh pelabuhan dan manfaatnya. Anda juga dapat melihat dokumentasi ini pada Dockerfile praktik terbaik untuk belajar lebih banyak.

TAGS:

  • Buruh pelabuhan

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map