GNU/Linux >> Belajar Linux >  >> Panels >> Docker

Cara Membuat Gambar Windows Docker Dengan Tag Build Docker

Apakah Anda baru mengenal Gambar Windows Docker? Apakah Anda saat ini bekerja di toko Windows dan ingin tahu tentang build Docker untuk image container? Anda telah datang ke tempat yang tepat. Cara terbaik untuk mempelajari sesuatu yang baru adalah dengan melakukan docker build dan docker build "tag" perintah!

Pada artikel ini, Anda akan mempelajari cara membuat image Docker Windows pertama Anda dari Dockerfile menggunakan docker build perintah.

Mari kita mulai!

Memahami Gambar Docker Container

Selama bertahun-tahun, satu-satunya cara untuk menguji atau melakukan pengembangan pada beberapa sistem operasi (OS) adalah dengan memiliki beberapa mesin fisik atau virtual khusus yang dicitrakan dengan versi OS pilihan Anda. Metodologi ini membutuhkan lebih banyak perangkat keras dan overhead untuk menyediakan mesin baru untuk setiap perangkat lunak dan spesifikasi OS.

Namun, akhir-akhir ini penggunaan image container Docker telah berkembang sebagian karena popularitas arsitektur layanan mikro. Menanggapi meningkatnya popularitas Docker, Microsoft telah mulai secara publik mendukung gambar Docker untuk beberapa produk unggulan di halaman Docker Hub mereka. Mereka bahkan telah menambahkan dukungan asli untuk gambar untuk Windows sebagai fitur produk di Windows 10 dan Windows Server 2016!

Gambar Docker dijalankan pada wadah dengan menggunakan Mesin Docker. Gambar Docker memiliki banyak manfaat seperti portabilitas (berlaku untuk berbagai lingkungan dan platform), dapat disesuaikan, dan sangat skalabel. Seperti yang Anda lihat di bawah, tidak seperti mesin virtual tradisional, mesin Docker berjalan pada lapisan antara kernel OS host dan layanan aplikasi terisolasi yang sedang di-container.

Memahami Build dan Gambar Docker

docker build perintah dapat dimanfaatkan untuk mengotomatisasi pembuatan image container, mengadopsi praktik DevOps container-as-code, dan mengintegrasikan containerization ke dalam siklus pengembangan proyek Anda. Dockerfile hanyalah file teks yang berisi instruksi build yang digunakan oleh Docker untuk membuat image container baru yang didasarkan pada image yang ada.

Pengguna dapat menentukan gambar dasar dan daftar perintah yang akan dijalankan saat gambar kontainer disebarkan atau dimulai untuk pertama kalinya. Dalam artikel ini, Anda akan mempelajari cara membuat image buruh pelabuhan berbasis Windows dari Dockerfile menggunakan wadah Windows.

Proses ini memiliki beberapa keunggulan dibandingkan dengan menggunakan image container yang dibuat sebelumnya:

  1. Anda dapat membangun kembali image container untuk beberapa versi Windows – yang sangat bagus untuk menguji perubahan kode pada beberapa platform.
  2. Anda akan memiliki kontrol lebih besar atas apa yang dipasang di penampung. Ini akan memungkinkan Anda untuk menjaga ukuran wadah Anda seminimal mungkin.
  3. Untuk alasan keamanan, Anda mungkin ingin memeriksa kerentanan penampung dan menerapkan pengerasan keamanan ke gambar dasar

Prasyarat/Persyaratan

Artikel ini adalah panduan tentang mempelajari cara membuat image Docker menggunakan Dockerfile. Jika Anda ingin mengikuti, pastikan Anda memiliki prasyarat berikut.

  • Docker untuk Windows diinstal. Saya akan menggunakan Docker Community Edition (CE) versi 2.1.0.4 di lingkungan saya.
  • Akses internet diperlukan untuk mengunduh gambar Docker
  • Sistem Operasi Windows 10+ (versi 1709 digunakan untuk tutorial ini)
  • Virtualisasi bertingkat diaktifkan
  • 5 GB ruang disk kosong di komputer lokal Anda
  • PowerShell 5.0+
  • Tutorial ini menggunakan IDE Kode Visual Studio. Namun, silakan gunakan IDE apa pun yang Anda inginkan.

Catatan:Pastikan untuk mengaktifkan Konfigurasi Wadah Windows saat menginstal Docker.

Persiapan

Pertama-tama Anda memerlukan folder untuk menyimpan semua gambar dan wadah Docker yang akan Anda buat dari gambar-gambar itu. Untuk melakukannya, buka terminal Powershell atau cmd (Anda akan menggunakan PowerShell di seluruh artikel ini) dan buat direktori baru bernama C:\Containers.

Setelah folder dibuat, ubah ke direktori itu. Ini menempatkan direktori kerja konsol saat ini ke C:\Containers untuk default semua unduhan ke direktori ini.

PS51> mkdir C:\Containers
PS51> cd C:\Containers

Di artikel ini, Anda akan mendapatkan permulaan. Sebagian besar file untuk mengerjakan proyek ini sudah tersedia. Setelah folder dibuat, lakukan tarikan Git untuk menyalin file yang diperlukan untuk artikel ini dari repositori TechSnips Github ke C:\Containers map. Setelah selesai, periksa untuk memastikan bahwa C:\Containers foldernya terlihat seperti di bawah ini.

Mengunduh IIS Windows Docker Image

Tugas pertama yang harus dilakukan adalah mengunduh "templat" atau gambar dasar. Anda akan membuat gambar Docker Anda sendiri nanti, tetapi pertama-tama, Anda memerlukan gambar untuk memulai. Anda akan mengunduh Gambar Inti IIS dan Windows Server terbaru yang diperlukan untuk tutorial ini. Daftar gambar yang diperbarui dapat ditemukan di halaman gambar hub resmi Microsoft Docker.

Meninjau Gambar Basis Docker Saat Ini

Sebelum mengunduh gambar dari repositori gambar, pertama-tama mari kita tinjau gambar dasar Docker saat ini yang saat ini Anda miliki di sistem lokal Anda. Untuk melakukannya, jalankan konsol PowerShell sebagai Administrator lalu ketik docker images . Perintah ini mengembalikan semua gambar di sistem lokal Anda.

Seperti yang Anda lihat di bawah, gambar yang tersedia awalnya kosong.

PS51> docker images

Mengunduh Gambar Dasar

Sekarang saatnya mengunduh gambar IIS dasar dari Docker Hub. Untuk melakukannya, jalankan docker pull seperti yang ditunjukkan di bawah ini. Proses ini dapat memakan waktu untuk diselesaikan tergantung pada kecepatan internet Anda.

PS51> docker pull mcr.microsoft.com/windows/servercore/iis

Sekarang jalankan docker images dan Anda harus memiliki image Microsoft Windows Core IIS terbaru yang tersedia untuk tutorial ini.

PS51> docker images

Memeriksa Dockerfile

Pada langkah sebelumnya, Anda telah mengunduh Dockerfile yang ada untuk tutorial ini. Sekarang mari kita lihat apa sebenarnya yang diperlukan.

Buka C:\Containers\Container1\Dockerfile file di editor favorit Anda. Konten Dockerfile ini digunakan untuk menentukan bagaimana image container akan dikonfigurasi pada waktu build.

Anda dapat melihat penjelasan tentang apa yang dilakukan setiap bagian dari file ini di komentar sebaris.

# Specifies that the latest microsoft/iis image will be used as the base image
# Used to specify which base container image will be used by the build process.

# Notice that the naming convention is "**owner/application name : tag name**"
# (shown as microsoft/iis:latest); so in our case the owner of the image is
# Microsoft and the application is IIS with the "latest" tag name being used
# to specify that you will pull the most recent image version available.
FROM microsoft/iis:latest

# Copies contents of the wwwroot folder to the inetpub/wwwroot folder in the new container image
# Used to specify that you want to copy the WWWroot folder to the IIS inetpub WWWroot
# folder in the container. You don't have to specify the full path to your local
# files because docker already has the logic built-in to reference files and folders
# relative to the docker file location on your system. Also, make note that that
# docker will only recognize forward slashes for file paths - since this is a
# Windows based container instead of Linux.
COPY wwwroot c:/inetpub/wwwroot

# Run some PowerShell commands within the new container to set up the image

# Run the PowerShell commands to remove the default IIS files and create a new
# application pool called TestPool
RUN powershell Remove-Item c:/inetpub/wwwroot/iisstart.htm -force
RUN powershell Remove-Item c:/inetpub/wwwroot/iisstart.png -force
RUN powershell Import-Module WebAdministration
RUN powershell New-WebAppPool -Name 'TestPool'

# Exposes port 80 on the new container image
# Used to open TCP port 80 for allowing an http connection to the website.
# However, this line is commented out, because the IIS container has this port
# already open by default.
#EXPOSE 80

# Sets the main command of the container image
# This tells the image to run a service monitor for the w3svc service.
# When this is specified the container will automatically stop running
# if the w3svc service stopped. This line is commented out because of the
# IIS container already has this entrypoint in place by default.
#ENTRYPOINT ["C:\\ServiceMonitor.exe", "w3svc"]

Membangun Gambar Docker Baru

Anda sudah menyiapkan Dockerfile dan gambar IIS dasar diunduh. Sekarang saatnya membangun image Docker baru Anda menggunakan Dockerfile.

Untuk membuat gambar baru, gunakan docker build "tag" memerintah. Perintah ini membuat gambar. Untuk artikel ini, Anda dapat melihat di bawah Anda juga menggunakan -t ** opsi yang menggantikan bagian "tag". Opsi ini memungkinkan Anda memberi gambar baru Anda nama tag yang ramah dan juga mereferensikan Dockerfile dengan menentukan jalur folder tempatnya berada.

Di bawah ini Anda dapat melihat contoh untuk memastikan konsol berada di direktori C:\Containers dan kemudian membuat image baru dari Dockerfile di C:\Containers\Container1 direktori.

PS51> cd C:\Containers
PS51> docker build -t container1 .\Container1

Setelah dimulai, Anda dapat melihat kemajuan perintah saat melintasi setiap instruksi di file buruh pelabuhan baris demi baris:

Setelah selesai, Anda sekarang harus memiliki gambar Docker baru!

Sekarang jalankan docker images perintah untuk melihat gambar yang tersedia. Anda dapat melihat di bawah contoh container1 gambar dibuat.

Catatan:docker build —help command adalah parameter yang berguna untuk menampilkan informasi rinci tentang perintah buruh pelabuhan yang dijalankan.

Menjalankan Docker Container

Pada titik ini, Anda harus membuat gambar baru. Saatnya memutar wadah menggunakan gambar itu. Untuk memunculkan wadah baru, gunakan docker run perintah.

docker run perintah akan memunculkan wadah Docker baru berdasarkan container1 gambar yang Anda buat sebelumnya. Anda dapat melihat contohnya di bawah ini.

Perhatikan bahwa -d parameter digunakan. Ini memberitahu docker runtime untuk memulai image dalam mode terpisah dan kemudian keluar saat proses root yang digunakan untuk menjalankan container keluar.

Saat docker run selesai, ia mengembalikan ID wadah yang dibuat. Contoh di bawah ini menangkap ID ini menjadi $containerID variabel sehingga kita dapat dengan mudah mereferensikannya nanti.

PS51> $containerID = docker run -d container1
PS51> $containerID

Setelah container dimunculkan, sekarang jalankan docker ps memerintah. Perintah ini memungkinkan Anda untuk melihat kontainer mana yang sedang berjalan menggunakan setiap gambar. Perhatikan di bawah bahwa gambar yang sedang berjalan secara otomatis menghasilkan nama panggilan (kebiasaan_sibuk pada kasus ini). Nama panggilan ini terkadang digunakan sebagai ganti ID penampung untuk mengelola penampung.

Menjalankan Kode Di Dalam Wadah Docker

Wadah baru dibuat dari gambar baru yang baru saja Anda buat. Sekarang mari kita mulai benar-benar menggunakan wadah itu untuk menjalankan kode. Menjalankan kode di dalam wadah Docker dilakukan dengan menggunakan docker exec perintah.

Dalam contoh ini, jalankan docker exec untuk melihat output PowerShell untuk Get-ChildItem perintah dalam wadah menggunakan sintaks perintah di bawah ini. Ini akan memastikan instruksi di Dockerfile untuk menghapus file IIS default berhasil.

PS51> docker exec $containerID powershell Get-ChildItem c:\inetpub\wwwroot

Anda dapat melihat di bawah bahwa satu-satunya file yang ada adalah index.html yang berarti file default telah dihapus.

Sekarang jalankan ipconfig perintah dalam wadah untuk mendapatkan alamat IP lokal gambar wadah sehingga Anda dapat mencoba menyambung ke situs web IIS.

PS51> docker exec $containerID ipconfig

Anda dapat melihat di bawah bahwa ipconfig dijalankan dalam wadah sama seperti berjalan di komputer lokal Anda dan telah mengembalikan semua informasi IP.

Memeriksa Situs Web IIS

Sekarang saatnya untuk mengungkapkan hasil kerja Anda! Saatnya untuk melihat apakah server IIS yang berjalan di container Docker melayani halaman index.html dengan benar.

Buka browser dan rekatkan Alamat IP4 yang ditemukan melalui ipconfig ke dalam bilah alamat. Jika semuanya baik-baik saja, Anda akan melihat Halo Dunia!! pesan seperti di bawah ini.

Meninjau Riwayat Docker

Satu perintah yang berguna untuk digunakan saat bekerja dengan container Docker di docker history memerintah. Meskipun tidak selalu terkait dengan pembuatan gambar atau wadah itu sendiri, docker history command adalah perintah berguna yang memungkinkan Anda meninjau perubahan yang dibuat pada gambar container.

PS51> docker history container1

Anda dapat melihat di bawah ini, docker history mengembalikan semua aktivitas Dockerfile dan PowerShell yang dilakukan di container1 wadah tempat Anda bekerja.

Membersihkan Gambar Docker yang Berjalan

Langkah-langkah di bawah ini digunakan untuk membersihkan semua container yang berhenti berjalan di mesin Anda. Ini akan mengosongkan ruang disk dan sumber daya sistem.

Jalankan docker ps perintah untuk melihat daftar container yang berjalan di sistem Anda:

PS51> docker ps

Sekarang hentikan container yang sedang berjalan menggunakan docker stop perintah:

PS51> docker stop <image nick name: busy_haibt in my case>
PS51> docker stop <image nick name: unruffled_driscoll in my case>

Terakhir, Anda dapat menghapus container yang dihentikan secara permanen menggunakan docker system prune perintah.

PS51> docker system prune

Bacaan Lebih Lanjut

  • Membuat Wadah Server Windows Docker Pertama Anda
  • Cara Mengelola Volume Docker di Windows


Docker
  1. Cara Membuat, Mendaftar &Menghapus Wadah Docker di Linux

  2. Bagaimana membangun wadah Docker Ilmu Data Anaconda Python

  3. Cara Berbagi Gambar Docker Dengan Orang Lain

  1. Buat, Beri Tag, dan Unggah Gambar Docker Anda Sendiri

  2. Cara Membuat dan Mengonfigurasi Gambar Docker Kustom secara Otomatis dengan Dockerfile – Bagian 3

  3. Cara membuat gambar khusus dari wadah Docker

  1. Cara Menggunakan Dockerfile untuk Membangun Gambar Docker

  2. Cara Menyebarkan Wadah nginx dengan Docker di Linode

  3. Cara membuat Gambar Docker dari Wadah dan File Docker