Pengantar Hands-on untuk Docker Containers

Pengantar Hands-on untuk Docker Containers

Popularitas Docker meroket sejak diperkenalkan pada tahun 2013. Perusahaan dan individu sekarang menggunakan atau berencana untuk menggunakannya baik di tempat atau di cloud. Fleksibilitas Docker menarik bagi pengembang, administrator sistem, dan manajemen.

Artikel ini menunjukkan cara memulai dengan Docker, menunjukkan perintah dasar untuk membawa Anda ke kereta musik wadah.

Dalam tutorial ini Anda akan belajar:

  • Apa itu Docker dan bagaimana itu digunakan.
  • Cara Menginstal Docker di Linux.
  • Cara menjalankan wadah Docker.

Persyaratan dan konvensi perangkat lunak yang digunakan

Persyaratan Perangkat Lunak dan Konvensi Baris Perintah Linux
Kategori Persyaratan, konvensi atau versi perangkat lunak yang digunakan
Sistem Distribusi linux apa pun
Perangkat lunak Buruh pelabuhan
Lainnya Akses istimewa ke sistem Linux Anda sebagai root atau melalui sudo memerintah.
Konvensi # - mensyaratkan perintah linux yang diberikan untuk dieksekusi dengan hak istimewa root baik secara langsung sebagai pengguna root atau dengan menggunakan sudo memerintah
$ - mensyaratkan perintah Linux yang diberikan untuk dieksekusi sebagai pengguna biasa

Konsep Docker Dasar

Platform virtualisasi tradisional, seperti virtualbox dan vmware, abstrak seluruh komputer, bertujuan mengisolasi tuan rumah Dan tamu sistem operasi, dan mengharuskan seluruh sistem operasi dipasang di tamu Mesin Virtual (VM). Virtualisasi Docker mengambil pendekatan yang berbeda - itu hanya mengabstraksi sistem operasi, yang berarti bahwa host dan tamu berbagi hal yang sama inti.

Keuntungannya adalah itu tamu (ditelepon wadah) tidak perlu mengemas seluruh sistem operasi, apa yang membuatnya ringan - ukurannya kecil dan sangat cepat boot. Selain itu, dengan berinteraksi langsung dengan sistem operasi host, wadah Docker tidak menimbulkan hukuman kinerja virtualisasi tradisional, yang membutuhkan terjemahan panggilan sistem antara sistem operasi tamu dan host melalui driver yang abstrak perangkat keras virtual.

Kerugiannya adalah bahwa tidak mungkin untuk menjadi tuan rumah tamu Windows di host Linux, misalnya, dan bahwa semua tamu berbagi sumber daya (CPU, RAM, dan disk) pada host, yang berarti bahwa wadah yang buruk dapat menurunkan seluruh server server ke bawah. Sudah pasti bahwa Docker tidak bermaksud untuk menggantikan virtualisasi tradisional, yang masih memiliki banyak skenario yang valid. Ini hanya menyediakan cara lain untuk mendapatkan isolasi aplikasi saat mengurangi dependensi perpustakaan, tanpa kehilangan kinerja.

Docker memungkinkan Anda untuk meluncurkan wadah, yang menjalankan instance gambar-gambar. Gambar berisi disk dengan semua dependensi perpustakaan yang diperlukan untuk menjalankan aplikasi, sedangkan wadah berisi konteks eksekusi. Mungkin ada beberapa wadah dari gambar yang sama yang dieksekusi secara bersamaan, masing -masing dipisahkan dari yang lain.

Ada rekomendasi bahwa wadah Docker hanya menjalankan satu aplikasi, yang sering disalahtafsirkan untuk "menjalankan hanya satu proses". Tidak ada masalah untuk menjalankan lebih dari satu proses dalam sebuah wadah, selama mereka termasuk dalam aplikasi yang sama. Namun, aplikasi yang kompleks mungkin memerlukan pelaksanaan beberapa kontainer, seperti, misalnya, satu untuk server web (Apache, nginx), satu untuk aplikasi (php-fpm), dan satu untuk database (mysql, postgresql, mongoDB ). Wadah -wadah tersebut dapat dijalankan di host yang sama atau di berbagai. Kontainer di host yang sama berkomunikasi melalui jaringan virtual yang dikelola oleh Docker.



Gambar Docker diambil dari repositori bernama registri dan di -cache secara lokal. Jika registri tidak ditentukan, Docker akan mencoba menemukan gambar di repositori default, disebut Hub Docker. Hub Docker berisi sejumlah besar gambar yang siap digunakan disediakan oleh perusahaan dan individu - dan Anda dapat mempublikasikan gambar Anda juga. Selain itu, ada juga Toko Docker, di mana perusahaan dapat secara profesional menawarkan gambar yang dikuratori dari perangkat lunak mereka. Disarankan Anda meluangkan waktu menjelajah dan mempelajari cara kerja repositori itu.

Cukup berkata, mari kita instal Docker dan pelajari beberapa perintah dasar.

Menginstal Docker di Linux

Ubuntu

Di Ubuntu Bionic Beaver 18.04, pemasangan Docker langsung.

# App Install Docker.io 

Debian

Jika Anda menjalankan pengujian debian atau tidak stabil, perintah di atas juga akan berfungsi. Untuk Debian Stable (Stretch), kunjungi mesin Docker kami di Debian 9 Stretch Linux Installation Guide.

Centos

Di Centos 1804, ini satu yum memerintah.

# yum install docker 

Fedora

Di fedora 28 juga siap dipasang dengan satu dnf memerintah.

# DNF Instal Docker 

Setelah pemasangan Docker

Setelah diinstal, Anda dapat memeriksa layanan Docker sedang berjalan.

Status # Service Docker 

Jika tidak, maka mulai.

# Service Docker Mulai 

Setelah layanan berjalan, Anda dapat memeriksa apakah ada wadah yang berjalan.

# Docker PS 

Jika Anda tidak ingin mengetik sudo Untuk berinteraksi dengan layanan Docker, cukup tambahkan pengguna Anda ke Docker Group. Anda perlu masuk lagi untuk membuat perubahan mulai berlaku.

# usermod -a -g nama pengguna Docker 

Setelah login, periksa Anda berada di Group Docker

$ grup roger adm cdrom sudo dip plugdev lpadmin sambashare buruh pelabuhan 


Sekarang Anda tidak perlu sudo untuk berinteraksi dengan mesin Docker.

Menjalankan wadah Docker

Mari kita jalankan a Halo Dunia wadah.

$ docker run hello-world tidak dapat menemukan gambar 'hello-world: terbaru' local terbaru: menarik dari perpustakaan/hello-world d1725b59e92d: tarik pencernaan lengkap: sha256: 0Add3ace90EcB4Adbf777e9aAcf18357729999999999! Pesan ini menunjukkan bahwa instalasi Anda tampaknya berfungsi dengan benar. Untuk menghasilkan pesan ini, Docker mengambil langkah -langkah berikut: 1. Klien Docker menghubungi Docker Daemon. 2. Daemon Docker menarik gambar "Hello-World" dari hub Docker. (AMD64) 3. Docker Daemon membuat wadah baru dari gambar yang menjalankan yang dapat dieksekusi yang menghasilkan output yang sedang Anda baca. 4. Daemon Docker mengalirkan output itu ke klien Docker, yang mengirimkannya ke terminal Anda. Untuk mencoba sesuatu yang lebih ambisius, Anda dapat menjalankan wadah ubuntu dengan: $ docker run -it ubuntu bash share gambar, mengotomatiskan alur kerja, dan lainnya dengan ID Docker gratis: https: // hub.buruh pelabuhan.com/untuk lebih banyak contoh dan ide, kunjungi: https: // docs.buruh pelabuhan.com/Get-started/ 
Menyalin

Perintahnya sangat sederhana, tetapi banyak hal terjadi. Pertama, mesin Docker menyadari bahwa gambar yang diminta tidak ada dalam cache lokal (baris 2). Kemudian gambar ditarik dari registri Docker dan disimpan secara lokal (baris 3). Akhirnya, sebuah wadah dibuat, dieksekusi (baris 8) dan diakhiri. Jika Anda mencoba lagi, Anda akan melihat eksekusi jauh lebih cepat karena keduanya, gambar dan wadah, di -cache. Sekarang periksa gambar yang disimpan secara lokal.

$ docker gambar tag repositori ID dibuat ukuran hello-world terbaru 4ab4c602aa5e 2 minggu yang lalu 1.84KB 
Menyalin

Perhatikan bahwa Halo Dunia Gambar minimal, dengan hanya 1.Ukuran 84 kb. Ini menggambarkan bahwa sebagian besar sistem operasi host digunakan dan bahwa gambar hanya berisi dependensi aplikasi.

Anda dapat menghapus gambar ini.

$ Docker Gambar RM Hello-World $ Docker Gambar 

Sekarang mari kita lakukan sesuatu yang lebih ambisius: tarik dan gambar websver webserver dan jalankan wadah.

$ docker pull httpd Using default tag: latest latest: Pulling from library/httpd f189db1b88b3: Pull complete ba2d31d4e2e7: Pull complete 23a65f5e3746: Pull complete 5e8eccbd4bc6: Pull complete 4c145eec18d8: Pull complete v1'1c74ffd6a8a2: Pull complete 1421f0320e1b: Pull complete Digest: sha256: 8631904C6E92918B6C7DD82B72512714E7FBC3F1A1ACE2DE17CB2746C401B8FB STATUS: Diunduh gambar yang lebih baru untuk httpd 2Ber LEBIH DOCKER LARIN.84KB httpd terbaru D595A4011AE3 6 minggu lalu 178MB 
Menyalin

Kemudian Anda menjalankan wadah dari gambar ini.

$ docker run -d -p 8000: 80 httpd dd703b1590a91bdc10488b48798e42ddecd1c6519324a613f4b563c2 nocing "second" docker (~ docker container 9.0.0.0: 8000-> 80/tcp cranky_torvalds 
Menyalin

Dalam bentuknya yang paling sederhana, perintahnya Docker menjalankan httpd, Tetapi wadah akan dihentikan tepat setelah Apache berjalan, dan tidak ada port yang akan diekspos. Itu -D Opsi (lepaskan) diperlukan sehingga wadah tetap berjalan di latar belakang.

Itu -P 8000: 80 Opsi adalah pemetaan port 80 dari wadah ke port 8000 di host, membuat server web tersedia di jaringan. Secara default, port kontainer tidak terpapar ke host. Sekarang, Anda dapat mengarahkan browser web http: // localhost: 8000 dan lihat halaman tes Apache.



Halaman default Apache yang menunjukkan itu berfungsi

Oke, tapi bagaimana mengubah halaman web? Kita perlu menautkan folder dari host ke dalam wadah /USR/LOCAL/APACHE2/HTDOCS/ Direktori (kita akan melihat nanti bahwa gambar Apache dibangun dari Jessy Debian, terlepas dari rasa linux dari host Anda). Hentikan wadah dan jalankan lagi.

$ docker ps $ docker berhenti cranky_torvalds $ echo "halaman web saya"> indeks.html $ docker run -d -p 8000: 80 -v "$ pwd":/usr/local/apache2/htdocs/httpd 
Menyalin

Kami membuat indeks.html file di direktori saat ini di host dan memetakan direktori ini di dalam htdocs direktori wadah dengan -v mengalihkan. Sekarang segarkan browser web.

Indeks.html

Sekarang topping: Eksperimen mengedit indeks.html file di host dan segarkan browser web, tanpa mengubah status wadah. Ya, setiap kali file diedit, atau file baru ditambahkan ke direktori saat ini, itu tersedia di dalam wadah karena -v pemetaan.

Buat file lain dan akses di browser.

$ echo "halaman kedua"> index2.html 


Indeks2.html

Setelah selesai, hentikan eksekusi wadah.

$ Docker berhenti Angry_Poincare 

Perhatikan bahwa sekarang Anda memiliki server web yang siap dieksekusi kapan pun Anda membutuhkannya, dan Anda tidak menyentuh file konfigurasi apa pun di sistem operasi Anda. Semuanya dienkapsulasi dalam gambar Apache yang di -cache oleh Docker. Selain itu, Anda dapat mengunduh gambar dan memulai wadah di komputer lain.

Kesimpulan

Artikel ini memperkenalkan konsep Docker utama dan beberapa perintah dasar. Saya harap Anda memahami manfaatnya dan melihat bahwa, setelah konsep dipahami, tidak rumit untuk menggunakan Docker. Artikel di masa depan akan menyajikan fitur lain dan penggunaan kasus.

Lainnya dalam seri artikel Docker ini

  • Cara berinteraksi dengan wadah Docker
  • Cara Menyesuaikan Gambar Docker Dengan DockerFiles

Tutorial Linux Terkait:

  • Hal -hal yang harus diinstal pada ubuntu 20.04
  • Pengantar Otomatisasi Linux, Alat dan Teknik
  • Hal -hal yang harus dilakukan setelah menginstal ubuntu 20.04 FOSSA FOSSA Linux
  • Menguasai loop skrip bash
  • File Konfigurasi Linux: 30 Teratas Paling Penting
  • Distro linux terbaik untuk pengembang
  • Mint 20: Lebih baik dari Ubuntu dan Microsoft Windows?
  • Hal -hal yang harus diinstal pada Ubuntu 22.04
  • Unduh Linux
  • Cara Dual Boot Kali Linux dan Windows 10