Layanan Web Java di AWS tentunya salah satu hal yang perlu dipelajari, karena belum tentu semua bisa melakukannya. Di Nordic School of Technology, Anda akan mendapatkan pelajaran mengenai pemrogramam dan bersertifikat. Nordic merupakan salah satu kursus komputer di Bekasi yang menawarkan modul kursus komputer dengan metode Eropa. Belajar komputer dan pemrograman akan terasa mudah dan menyenangkan.

Seri 4 bagian ini adalah panduan bagaimana membangun, menyebarkan, dan menskalakan layanan web Java RESTful menggunakan Spring, Docker dan AWS. Kita akan melihat tiga teknologi utama yang kami dalami dalam kursus pembelajaran Java Web di Nordic School of Technology.

  1. Java & Spring Java & Spring – Spring Framework menyediakan model pemrograman dan konfigurasi yang komprehensif untuk aplikasi perusahaan berbasis Java modern.
  2. Docker – Docker – platform untuk membangun, mengirim, dan menjalankan aplikasi terdistribusi (layanan RESTful web dalam kasus kami)
  3. Amazon Web Service (AWS) – Amazon Web Service (AWS) – AWS menawarkan layanan cloud computing yang andal, skalabel, dan terjangkau. Mereka memiliki lebih dari 1000 layanan yang berbeda-beda, yang paling sering digunakan adalah EC2 (mesin virtual) dan S3 (penyimpanan file), tetapi masih ada lebih banyak lagi.

Tujuan/Capaian

Diakhir seri ini Anda akan mengetahui bagaimana cara menulis layanan web Java Spring RESTful. Anda akan mempelajari apa itu Docker dan cara mengemas aplikasi-aplikasi Anda dengan ini serta bagaimana caranya menyebarkan kontainer-kontainer tersebut didalam AW. Pada dua bagian terakhir, kami akan membahas AWS dan cara mengekspansikan layanan web Anda di cloud tanpa mengkhawatirkan infrastruktur yang mendasarinya.

 

 

Diagram 1: Hasil akhir dari latihan ini

Legenda/Keterangan:

CLIENT – Pelanggan pengguna layanan web

AWS – Ekosistem cloud AWS

VPC – Virtual Private Cloud adalah lingkungan pribadi yang didedikasikan pada AWS

ELB – Elastic Load Balancer menyeimbangkan permintaan ke server-server yang berbeda berdasarkan pada data aliran arus lalulintas atau kriteria lainnya.

ASG – Auto Scalling Group memungkinkan AWS untuk secara otomatis menlansir instance EC2 yang baru dari template (yang disebut AMIs)

EC2 – Layanan mesin virtual AWS. Server dimana kode akan beroperasi.

Security Group – Konfigurasi keamanan.

Region – Area dimana server Anda tersedia

Ikhtisar 4 bagian

  1. Pada bagian pertama kita akan belajar tentang Java dan Spring dengan cara membuat aplikasi dan menjalankannya secara lokal.
  2. Di bagian kedua, kita akan membahas Docker dan bagaimana cara untuk mengemas aplikasi tersebut untuk tujuan penyebaran.
  3. bagian ketiga berisi tentang AWS dan bagaimana cara menggunakan layanan yang tersedia untuk menyebarkan aplikasi di cloud. Disini kita juga akan membahas VPC dan Grup Keamanan.
  4. Di bagian akhir, kita akan melanjutkan AWS dan melihat ke fitur penskalaan otomatisnya. Singkatnya layanan ini memungkinkan Anda untuk mengatur penskalaan otomatis untuk server Anda yang mana server tersebut akan secara otomatis menskalakan keluar ketika konsumsi layanan web Anda meningkat dan masuk, ketika ada lebih sedikit klien.

Bagian 2 – Kontenerisasi Aplikasi

Ini adalah bagian ke-2 atau 4 bagian seri tentang bagaimana membangun, menyebarkan dan menskalakan layanan Java Web di AWS menggunakan Spring dan Docker. Baca tentang membuat aplikasi Java di Bagian 1 [arahkan ke bagian 1]. Bagian ini berisi semua tentang Docker dan bagaimana menggunakannya untuk keperluan konteneresasi.

Untuk mengkontenerisasikan, kita akan menggunakan susunan langkah – langkah berikut:

 

  • Docker –  Program yang melakukan virtualisasi ditingkat sistem operasi, juga dikenal sebagai konteneresasi/containerization. Program ini mecakupi semua dependensi Anda sehingga mereka bertindak sebagai satu program utuh. Hal ini berarti bahwa tidak masalah dimana pun Anda membuat kontainer doker tersebut karena lingkungannya akan selalu sama
  • Docker Hub – Orang-orang dapat bekerjasama berbagi tugas dan tanggung jawab secara pribadi ata publik
  • Spotify’s Dockerfile Maven Plugin – Plugin untuk mengemas file JAR yang dapat dieksekusi ke dalam Docker Image dan mempublikasikannya di Docker Hub.

Tujuan

Kita ingin mengkonteneresasikan layanan Java Web kita yang sudah kita buat di Bagian 1 tadi agar penyebaran dan penskalaan layanan menjadi lebih mudah. Hal ini berarti mencakup 4 hal.

  1. Menggatur Docker dalam projeck kita
  2. Membuat sebuah Docker Images terhadap seluruh program dengan segala ketergantungan/keterkaitannya,
  3. Menaruh gambar tersebut ke Docker Hub sehingga dapat diakses dimanapun.
  4. Menarik gambar tersebut dan menjalannkannya untuk membuat Docker Kontainer yang beroperasi di Cloud.

Setelah itu, kita dapat memutar mesin virtual (server) sebanyak yang kita inginkan dan kita juga bisa menyebarkan aplikasi kita hanya dengan menarik dan mendorong menjalankan docker image dari hub. Tidak perlu mengatur lingkungan setiap saat. Hal tersebut menunjukkan bahwa kita perlu melakukan beberapa konfigurasi server web dan instalasi docker tetapi disaat yang bersamaan hal ini ini juga dapat berjalan otomatis dan relatif mudah. Semua tersebut berada dibagian 3 & 4. Untuk saat ini kita akan tetap dengan kontainerisasi dan menggunakan lingkungan lokal kita saja, untuk menguji apakah docker image yang baru dibuat bekerja sebagai mana mestinya.

Sebagian besar dari apa yang Anda lihat pada diagram berikut dilakukan secara otomatis oleh perangkat lunak Docker. Yang perlu kita lakukan adalah menginstal program Docker awal, membuat repositori baru di Docker Hub dan menambahkan beberapa dependensi Docker terkait ke proyek kita. Kabar baiknya adalah kita hanya perlu melakukan semua ini satu kali, setelahnya pembaruan perangkat lunak baru akan diluncurkan dan dikelola oleh sistem Docker.

Diagram 1: Penyebaran Aplikasi menggunakan Docker

Sebelum kita mulai mengonfigurasikan aplikasi untuk Docker, mari kita lihat terlebih dahulu secara lebih dekat terkait komponen apa yang menyusun Docker serta memahami beberapa definisinya secara lebih detail.

Docker

Docker adalah sebuah platform perangkat lunak yang memungkinkan Anda membuat, menguji, dan menyebarkan aplikasi dengan cepat.

Ini adalah program yang melakukan virtualisasi tingkat sistem operasi atau yang juga dikenal sebagai kontenerisasi (containerization) atau pemadatan. Kontenerisasi meliputi semua dependensi Anda bersama aplikasi sehingga mereka bertindak sebagai satu program utuh. Hal ini berarti bahwa tidak menjadi masalah dimanapun Anda membangun docker kontainir, lingkungannya akan tetap selalu sama. Hal ini pertama kali dimulai sebagai implementasi dari open source kontainer Linux dan meminjam logika kontainer laut. Alih-alih melakukan pengiriman barang, docker kontainer mengirimkan perangkat lunak.

Metafora untuk Docker – kontainer laut yang tersandarisasi berisikan semua elemen yang diperlukan dalam bentuk pak.

Docker sangatlah handal. Anda dapat dengan cepat menerapkan dan menskalakan aplikasi ke lingkungan apa pun dan memastikan bahwa kode Anda akan berjalan. Docker juga sangat terukur dan menjalankannya di AWS adalah cara yang sangat bagus untuk menjalankan aplikasi terdistribusi dalam skala apa pun.

Komponen Docker

  • Docker Image (Image) – Membentuk dasar untuk Container Docker. Anggap ini sebagai Gambar Virtual tetapi yang mengandung OS lengkap, berisikan file-file yang diperlukan untuk menjalankan satu Kontainer
  • Docker Container (Container) – memegang semua yang dibutuhkan untuk menjalankan Aplikasi. Setiap kontainer dibuat dari Docker Image. Setiap Kontainer dapat dijalankan, dimulai, dihentikan, dipindahkan, dan dihapus. Ini adalah platform aplikasi yang terisolasi dan aman. Disinilah aplikasi dan semua dependensinya akan benar-benar berjalan
  • Layers / Union File System – Docker Images berbentuk templat hanya baca. Setiap gambar terdiri dari serangkaian lapisan. Docker menggabungkan layer ke dalam satu gambar menggunakan Union File System. Ketika Anda memperbarui sistem aplikasi, Anda tidak perlu membuat gambar baru (seperti yang Anda lakukan dengan VM), tetapi Anda akan mendistribusikan satu lapisan yang diperbarui yang akan memperbarui Gambar dalam Docker Image.
  • Dockefile – berisi skrip perintah yang akan Docker baca dan jalankan dari file ini untuk membuat gambar dari lapisan. Pikirkan ini sebagai resep yang digunakan docker untuk membuat gambar.
  • Docker Engine (Daemon) – menciptakan lingkungan operasi untuk menjalankan aplikasi. Berkomunikasi dengan Docker Client untuk menjalankan peritah membuat, mengirim, dan menjalankan kontainer.
  • Docker Client – antarmuka pengguna dan Docker Engine. Mengontrol Docker Daemon / Engine.
  • Docker Hub (Image Registry) – Memegang Docker Image. Toko publik atau pribadi yang Anda gunakan untuk mengunggah atau mengunduh gambar yang ada. Pikirkan ini sebagai GitHub tetapi untuk Docker Images.

Docker Image

Sebuah Gambar bertemplat hanya-baca dengan beberapa instruksi untuk membuat Docker Kontainer. Berisikan kumpulan perubahan filesistem dasar yang tersusun serta parameter korespondensi eksekusi terkait untuk kemudian digunakan dalam waktu operasi kontainer. Sebuah gambar yang dibuat dari Dockerfile merupakan file teks biasa yang menentukan komponen yang akan dimasukkan dalam kontainer. Gambar disimpan di Registry, seperti Docker Hub atau AWS ECR (Amazon memiliki sistem docker image dan manajemennya tesendiri).

Docker Container

Paket perangkat lunak Docker yang termasuk kedalam unit  yang terstandarisasi yang Containers. Mereka memungkinkan Anda untuk mengemas kode aplikasi, konfigurasi, dan dependensi ke dalam blok bangunan yang mudah digunakan yang memberikan konsistensi lingkungan, efisiensi operasional, produktivitas pengembang, dan kontrol versi.

  • Kontainer adalah metode virtualisasi sistem operasi yang memungkinkan Anda untuk mengoperasikan aplikasi dengan segala dependensinya dalam proses yang terisolasi sumber daya
  • Kontainer memiliki semua yang dibutuhkan perangkat lunak untuk beroperasi – termasuk pustaka, alat sistem, kode, dan waktu proses.
  • Kontainer dibuat dari templat hanya-baca yang disebut gambar/Image.

Seperti yang Anda, kontenerisasi sangat berbeda dari virtualisasi. Untuk memahami perbedaan pendekatan terhadap pengembanagan aplikasi antar keduanya, mari kita bandingkan mereka.

Dockerfile

Ini adalah file teks sederhana yang berisikan skrip-skrip yang akan dijalankan Docker untuk membangun Docker Image Anda dari aplikasi.

Mari kita perhatikan contoh Dockerfile sederhana dibawah ini:

FROM openjdk:8-jdk-alpine

VOLUME /tmp

ARG JAR_FILE

ADD ${JAR_FILE} app.jar

ENTRYPOINT [“java”,”-Djava.security.egd=file:/dev/./urandom”,”-jar”,”/app.jar”]

Dockerfile ini memberitahukan Docker untuk membuka JDK versi 8 ketika membuat program java (FROM).

File proyek JAR dimasukkan kedalam kontainer sebagai “app.jar” (COPY) dan kemudian dieksekusikan pada ENTRYPOINT.

Terdapat VOLUME yang ditambahkan menunjuk ke “/ tmp” karena disitulah aplikasi Spring Boot membuat direktori kerja untuk Tomcat secara default. Efeknya adalah membuat file sementara pada host Anda di bawah “/ var / lib / docker” dan menautkannya ke kontainer di bawah “/ tmp”. Langkah ini opsional untuk aplikasi sederhana yang kami tulis di sini, tetapi penting dan dibutuhkan untuk aplikasi Spring Boot lainnya jika mereka harus benar-benar menulis di sistem file.

Untuk mengurangi waktu memulai Tomcat, kita menambahkan properti sistem yang mengarahkan ke “/dev/urandom” sebagai sumber dari entropy.

Sekarang Anda mungkin berfikir tentang betapa berbedanya kontenerisasti dengan virtualisasi dan apa sesungguhnya kelebihan manfaatnya. Mari kita bandingkan keduanya dengan pendekatan berikut.

Virtualisasi vs Kontenerisasi

Kontenerisasi adalah pendekatan yang lebih ringan karena Docker Container hanya berisi aplikasi dan dependensinya, minimal untuk aplikasinya saja. Tidak harus mengemas seluruh sistem operasi (OS) dan kumpulan file-nya. Ini berarti bahwa 100% dari kontainer digunakan oleh aplikasi dan dependensi langsungnya.

Dengan Virtualisasi Anda menjalankan beberapa Virtual Machines (VMs) di atas Host OS dan setiap VM berisi OS Guest sendiri. Sistem Operasi sangat kecil dan membutuhkan banyak tambahan pengembangan untuk penerapannya. Anda tidak perlu benar-benar menambahkan OS untuk masing-masing atau aplikasi Anda.

Di sinilah kontenerisasi berperan. Kontenerisasi menghilangkan kebutuhan OS dan menggantikannya hanya dengan aplikasi dan paket perangkat lunak yang khusus untuk satu program.

Diagram 2: Virtualisasi vs Kontenerisasi

VM tunggal berisi kode-kode Aplikasi, Dependensi, dan OS Tamu sementara Docker Kontainer hanya berisi Aplikasi dan ragam dependensinya.

Manfaat Kontenerisasi

  • Docker mencapai kepadatan yang lebih tinggi, dan meningkatkan portabilitas dengan menghilangkan per Kontainer OS tamu, sehingga Docker Kontainers cenderung lebih cepat untuk memulai dibandingkan VMs
  • Tinggalakan ketergantungan: tidak perlu khawatir tentang versi Node, PostgreSQL, atau perangkat lunak lainnya;
  • Perkembangan yang konsisten mulai dari Pengembangan ke Pengujian ke QA hingga ke Produksi;
  • Isolasi – masalah kinerja atau stabilitas dimana aplikasi A dalam kontainer A, tidak akan memengaruhi Aplikasi B dalam Wadah B;
  • Pengelolaan sumber daya yang jauh lebih baik – tidak perlu khawatir tentang OS Tamu;
  • Tingkat portabilitas kode yang sangat ekstrim
  • Dirancang untuk Microservices- Aplikasi A dalam kontainer A adalah formulir pendaftaran sederhana, Aplikasi B dalam kontainer B adalah simpul pemrosesan. Masing-masing memiliki siklus hidupnya sendiri dan dapat diskalakan secara mandiri;

Sekarang kita telah memiliki definisi yang lebih jelas tentang apa itu Docker dan apa saja komponen yang menyusun arsitekturnya. Selanjutnya, mari kita mulai mengintegrasikan Docker ke dalam proyek Java.

Install Docker

Untuk bisa menggunakan layanan Docker Anda perlu menginstal Docker serta antarmuka baris perintah Docker (CLI) pada mesin apa pun yang ingin Anda gunakan. Ini termasuk didalamnya situasi lokal Anda serta setiap server yang hendak Anda putar/gunakan. Ketika menggunakan AWS Amazon Linux, AMI datang dengan Docker secara default tetapi pun Anda masih perlu untuk menginstal Docker CLI. Docker CLI digunakan untuk menjalankan perintah docker di terminal.

Berikut panduan lengkap untuk menginstal Docker dari awal oleh Digital Ocean

Jika Anda hanya ingin menginstal docker-CLI pada instance EC2 AWS yang baru dibuat, masukkan kode dibawah ini kedalam skrip bash mulai. Skrip ini akan dijalankan pada saat instance mulai secara otomatis.

sudo su #gives sudo right to next commands

yum​ ​ update​ ​ -y # updates the linux software packages

yum install -y docker # while AMI comes with docker, the docker cli is still needed
yum install -y nginx # install nginx web server

service nginx start # start the nginx service

service docker start # start the docker service

* Sintaks CLI ini digunakan pada sistem Linux Redhat (bukan Ubuntu) yang digunakan oleh AWS Linux AMI. AMI lebih lanjut terdapat di bagian 3.

Sekarang Anda telah memiliki docker terpsang, saatnya tambahkan dependensi yang diperlukan kedalam proyek kita. Tentukan juga Dockerfile sederhana dan buatlah Docker Image pertama dari Java Web Service Anda.

Menambahkan Docker kedalam Proyek

Karena proyek ini adalah proyek maven, maka kita perlu menambahkan plugin Docker Spotify kedalam proyek kami. Plugin ini akan mengambil file JAR yang dapat dieksekusi yang dibuat di Bagian 1 untuk kemudian membuatnya menjadi Docker Image menggunakan konfigurasi dalam Dockerfile.

Mari kita tambahakan plugin tersebut kedalam proyek dengan mendefinisikannya sebagai plugin pom.xml

<properties>

   <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

   <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

   <java.version>1.8</java.version>

   <docker.image.prefix>kaspartr</docker.image.prefix>

    </properties>

<build>

   <plugins>

  <plugin>

                                <groupId>org.springframework.boot</groupId>

  <artifactId>spring-boot-maven-plugin</artifactId>

          </plugin>

           <plugin>

           <groupId>com.spotify</groupId>

           <artifactId>dockerfile-maven-plugin</artifactId>

           <version>1.4.0</version>

           <configuration>

<repository>${docker.image.prefix}/${project.artifactId}</repository>

            <buildArgs>

            <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>

            </buildArgs>

                   </configuration>

              </plugin>

     </plugins>

</build>

Label <repository> menunjukan penyimpanan Docker Hub. Sekarang mari saatnya kita tambahkan username penyimpanan kedalam sebuah variable yang disebut docker.image.prefix yang didefinisikan oleh label <properties> label dalam file.pom.xml

Setiap kali kita membangun Docker Image baru, Docker Image ini akan diberi nama menggunakan template ini prefix_value/repository_name. Dengan docker, nama repositori Image dan Docker Hub harus cocok. Jika Anda mengoperasikan dengan sebuah Image/gambar (push, pull, run) Anda tidak perlu secara eksplisit menentukan lokasi repositori tetapi Docker akan mencocokan repositorii dengan gambar ini menggunakan nama gambar/Image tersebut.

Contohnya jika Anda menjalankan perintah dibawah ini:

$ docker run username/demo-image-repository

pertama kali Docker akan mencari image tersebut secara lokal dan jika versi terbaru tidak ditemulan, tariklah sebuah Image/repository dengan nama yang sama.

Membuat Image dan Mencobanya

Sekarang Docker telah dipasangkan dan ditambahkan ke proyek kita, saatnya kita coba untuk membangun sebuah Docker Image untuk kita. Selanjutnya kita dapat menggunakan Image ini untuk menjalankan seluruh Layanan Web Java yang ditulis sebelumnya untuk dijalankan baik secara lokal maupun mengunggahnya ke server yang sudah di -host, dan menjalankannya di sana. Yang terakhir dapat dilakukan dengan langsung mengunggah Docker Image ke server atau melalui Docker Hub yang sudah disebutkan di atas. Dalam posting kali ini kita akan menggunakan Docker Hub karena Docker Hub akan memungkinkan kita untuk mengotomatisasi peluncuran pembaruan perangkat lunak. Semua bisa dilakukan kemudian.

Membuat docker Image

Plugin Spotify Maven akan mebuat Docker Image untuk kita dengan menjalankan perintah berikut ini di direktori dimana Dockerfile kita ditempatkan:

$ mvn install dockerfile:build

Setelah membuatnya, jalankan perintah berikut untuk melihat seluruh Image lokal Anda:

$ docker images

*jika mendapatkan eror, gunakan sudo

Images atau gambar-gambar tersebut dapat dioperasikan secara lokal dan membuat Docker Kontainer yang baru atau dapat juga ditarik ke Docker Hub untuk pengembangan lanjutan.

Sebelum menarik Image/gambar baru kita ke Docker Hub, pastikan semuanya bekerja sebagaimana mestinya dengan mengoperasikan Kontainer secara lokal terlebih dahulu.

Untuk melakukannya, jalankan perintah berikut:

$ docker run -d -p 8090:11777 -t [DOCKER_IMG_NAME]

Ini adalah perintah yang sederhana, tetapi mari kita lihat kesemua variable yang perlu untuk kita ketahui.

  • run : Cari [docker_image_name] dan lansir Docker Kontainer baru berdasarkan Image/gambar tersebut. Jika Image/gambar tersebut tidak ditemukan atau sudah terlalu lama, Docker Kontainer akan mencari Image terbaru di Docker Hub (pastikan Anda sudah log in kedalam akun Docker Anda untuk melakukan semua ini)
  • -d : memberitahukan docker untuk menjalakan Kontainer dalam mode terpisah artinya Docker menjakan Kontainer dilatar belakan setelahnya (Anda bisa menutup jendela terminal window)
  • -p : memberitahukan docker untuk mempublikasikan port Kontainer ke host sehingga host akan tau kemana Docker Kontainer berjalan
  • 8090:11777: Port ini terikat. Masing-masing kontainer butuh menjalankan port yang unik tetapi hal ini bukan berarti bahwa Anda buth untuk membuka semua port-port yang ada dalam mesin host Anda. Untuk memecahkannya, kita menggunakan port terikat untuk membuka port Kontainer 117777 (port bebas acak) ke port host 8090. Hal ini juga dibutuhkan ketika Anda ingin membuka beberapa kontainer kedalam port host yang sama.
  • -t : Ini menetapkan kontainer acak TTY

Gunakan perintah dibawah ini untuk melihat semua kontainer yang sedang berjalan

$ docker ps

Tambahkan -a or –all to the end untuk melihal juga kontainer – kontainer yang tidak dijalankan tetapi dibangun dan dikembangkan didalam sistem.

Jika kontainer anda berhasil dijalankan dan beroperasi secara sukses, Anda seharusnya dapat menggunakan layanan seperti yang akan Anda gunakan ini ketika Anda menjalankan layanan web dengan file JAR asli yang dapat dieksekusi. Jika Anda ingat dari bagian 1 kita menguji program di localhost dengan permintaan sebagai berikut:

http://localhost:8090/nordic/courses

and

http://localhost:8090/nordic/courses?search=web

Jika semuanya bekerja dengan benar, Anda akan melihat program Java merespon Anda dengan semua kursus yang tersedia atau hanya kursus dengan ‘web’ dalam deskripsi. Jika Anda ingin menyegarkan ingatan Anda pada bagian ini, lihat Bagian 1 [tunjuk ke bagian 1].

Kini Kita telah berhasil memastikan gambar dapat berfungsi dengan benar, sekarang saatnya kita mendorongnya ke Docker Hub agar kita dapat mengotomatisasikan peluncuran pembaruan perangkat lunak dan memiliki tempat online untuk mendistribusikan gambar-gambar kita.

Mempublikasikan Image di Docker Hub

Pertama-tama, buat akun Docker Hub gratis. Akun default dilengkapi dengan repositori publik tanpa batas tetapi hanya dengan 1 ruang penyimpanan pribadi atau repositoru ‘penyebaran otomatis’. Pribadi berarti hanya Anda atau orang yang ditunjuk yang dapat mengakses gambar tersebut. ‘Penyebaran otomatis’ berarti Anda dapat menghubungkan repositori docker dengan kode sumber repositori atau kontrol versi (VC) dan meminta Docker Hub secara otomatis membuat dan mengunggah Docker Image baru ke hub. Yang perlu Anda lakukan adalah mendorong semua kode sumber baru ke VC dan tarik image terbaru yang dibuat secara otomatis dari Docker Hub ke server Anda.

Untuk mendorong docker image ke hub, Anda harus masuk terlebih dahulu ke akun Docker dari baris perintah

$ docker login –username=[ACCOUNT_USERNAME]

Setelah berhasil masuk/loggin, lihatlah image atau gambar-gambar apa saja yang kita miliki secara lokal

$ docker images

Dan doronglah image tersebut ke repositori atau ruang penyimpanan Docker Hub. Ingat bahwa Docker menggunakan nama yang sama untuk repositori dan image

$ docker push [DOCKER_IMG_NAME]

Hal ini akan mengambil image lokal dan mendorongnya ke repositori dengan nama yang sama

Jika sekarang Anda menuju dashboard atau halaman depan akun Docker Hub Anda, Anda dapat melihat image/gambar didalam repositori tersebut.

Dibagian Tags Anda dapat melihat ‘image’ dengan label terbaru. Tag tersebut ditambahkan oleh Docker secara default jika tidak ditentukan.

Menarik/Mengambil Image dari Docker Hub

Setelah image/gambar dipublikasikan, uji coba secara lokal cara menarik dan menjalankannya dari hub. Untuk meminta  Docker menarik/mengambil gambar terbaru dari hub atau bukan menjalankan yang lokal, mari hapus gambar secara lokal. Sebelum melakukan hal ini, kita perlu menghentikan dan menghapus terlebih dahulu Kontainer yang dibuat dari gambar yang akan kita hapus ini

Look at all the containers in the system.

Perhatikan semua kontainer didalam sistem

              $ docker ps -a

Untuk menghentikan kontainer jalankan:

              $ docker stop [DOCKER_CONTAINER_NAME]

Untuk mengkapus kontainer gunakan:

              $ docker rm [DOCKER_CONTAINER_ID]

Sekarang ketika Kontainer sudah berhenti dan dihilangkan, barulah kita bisa menghilangkan gambarnya/image. Pertama-tama perhatikan semua image didalam sistem (catat identintas image yang ingin dihilangkan).

              $ docker images

Untuk menghilangkan Docker Image spesifik, jalankan perintah ini

              $ docker rmi [DOCKER_IMG_ID]

Sekarang mari kita coba menjalakan kembali image tetapi kali ini tanpa ada satu imagepun yang disimpan lokal

              $ docker run -d -p 8090:11777 -t [DOCKER_IMG_NAME]

Sebagaimana yang dapat Anda lihat, Docker akan memberitahu Anda bahwa tidak ada image lokal yang ditemukan dan sebagai konsekuensinya sekarang Docker akan menarik image dari hub dan menjalankannya.

Dan inilah dia, kini Anda tahu bagaimana cara membuat Docker Image/gambar, menjalankan kontainer, dan memublikasikan image di cloud sehingga mereka semua dapat dijalankan oleh lingkungan apa pun dengan akses Internet. Anda juga telah mempelajari berbagai komponen sistem docker dan perintah yang paling sering digunakan. Terlebih lagi, Anda sekarang memiliki akun Docker Hub yang berfungsi dan juga pengetahuan tentang cara mengoperasikan image didalam akun ini.

Di bagian selanjutnya kita akan melihat bagaimana menjalankan Docker Hub Image di lingkungan AWS. Untuk itu kami akan membuat akun AWS gratis, menyebarkan beberapa contoh instance gratis terikat EC2  (Mesin Virtual) dan menyebarkan Docker Image yang sama yang dibuat hari ini di cloud. Setelah itu Java Web Service yang sudah dibangun di Bagian 1 akan menjadi layanan Web nyata sebagumana halnya semua ini dapat diakses publik dari Internet.

Akhirnya, di bagian 4, kita akan membahas bagaimana Anda dapat menempatkan contoh instance EC2 baru Anda untuk menjalankan layanan Java Web di belakang Load Balancer dan membuatnya terskalakan secara otomatis sehingga Anda dapat tidur di malam hari dan tidak khawatir tentang skala infrastruktur.

Ini berarti bahwa jika konsumsi layanan web Anda meningkat, AWS akan mengurus penskalaan infrastruktur untuk Anda. Untuk itu kami akan mencakup beberapa layanan AWS berikut: AWS EC2, AWS Elastis Load Balancer (ELB) dan AWS Autoscaling Groups.

 

Mendaftar untuk Nordic kursus