Dalam artikel pertama, “Membuat Cluster Docker Swarm di Azure Container Service,” kami membahas pembuatan kluster Docker Swarm di Azure Container Service (ACS). Setiap mesin virtual (master atau agen) menjalankan Docker saat Swarm dibuat. Dalam artikel lanjutan ini, kita akan membahas penggunaan Docker pada Swarm yang dibuat di Azure Container Service. Kami akan membahas menggunakan Docker mandiri dan layanan mode Docker Swarm. Artikel ini memiliki bagian berikut:
- Mengatur Lingkungan
- Mencantumkan Info Docker
- Menjalankan Gambar Docker Hello World
- Menjalankan Gambar Nginx Docker
- Mencantumkan Kontainer Docker
- Mengakses Kontainer Nginx Docker di Browser
- Menghapus Kontainer Docker
- Menginisialisasi Mode Kawanan Docker
- Membuat Layanan Docker
- Mencantumkan Layanan Docker
- Mencantumkan Tugas Layanan Docker
- Mencantumkan Kontainer Docker untuk Layanan Docker
- Menjelajahi Log yang Dihasilkan oleh Wadah Layanan Docker
- Kesimpulan
Mengatur Lingkungan
Gunakan lingkungan yang sama seperti di artikel pertama, "Membuat Cluster Docker Swarm di Azure Container Service." Buat cluster Swarm di ACS, seperti yang dibahas dalam artikel. Dalam artikel ini, kita akan menggunakan cluster Swarm yang terdiri dari tiga node master dan satu node agen untuk menjalankan container Docker mandiri dan layanan mode Docker Swarm.
Mencantumkan Info Docker
Mulai Cloud Shell seperti yang dibahas dalam artikel “Membuat Docker Swarm Cluster di Azure Container Service.” Hubungkan ke VM master Swarm menggunakan kunci pribadi SSH RSA, nama pengguna, dan Alamat IP Publik master, seperti yang juga dibahas dalam artikel sebelumnya. Perintah SSH untuk terhubung ke master VM adalah sebagai berikut; kunci pribadi SSH RSA, nama pengguna, dan alamat IP Publik akan berbeda untuk pengguna yang berbeda.
ssh -i /home/deepak/.ssh/id_rsa -p 2200 [email protected]
Koneksi dibuat dan prompt perintah untuk master VM ditampilkan.
[email protected]:~$ ssh -i /home/deepak/.ssh/id_rsa -p 2200 [email protected] datang di Ubuntu 14.04.4 LTS (GNU/Linux 3.19.0-65-generic x86_64) * Dokumentasi:https://help.ubuntu.com/ Informasi sistem per Sel 10 Okt 22:40:17 UTC 2017 Beban sistem:0,27 Proses:131 Penggunaan /:4,2% dari 28,80 GB Pengguna yang masuk:0 Penggunaan memori :2% alamat IP untuk eth0:172.16.0.5 Penggunaan swap:0% alamat IP untuk docker0:172.17.0.1 Grafik data ini dan kelola sistem ini di:https://landscape.canonical.com/ Dapatkan dukungan Cloud dengan Ubuntu Advantage Cloud Tamu:http://www.ubuntu.com/business/services/cloud Rilis baru '16.04.3 LTS' tersedia. Jalankan 'do-release-upgrade' untuk meningkatkannya. Login terakhir:Sel 10 Okt 22:40:17 2017 dari 40.78.30.37
Tiga node master dikonfigurasikan di Swarm yang disediakan dalam artikel "Membuat Cluster Docker Swarm di Azure Container Service." Jumlah VM master mungkin 1, 3, atau 5. Saat menjalankan beberapa VM master, perintah SSH untuk terhubung ke masing-masing VM master adalah sama kecuali untuk port SSH, yaitu 2200 untuk 1 master, 2201 untuk 2 master, 2202 untuk 3 master, 2203 untuk 4 master, dan 2204 untuk 5 master. Dengan tiga master VM, port SSH yang digunakan adalah 2200, 2201, dan 2202. Untuk menghubungkan ke 2 master, perintah SSH adalah sebagai berikut:
[email protected]:~$ ssh -i /home/deepak/.ssh/id_rsa -p 2201 [email protected]
Dan, perintah SSH untuk menghubungkan ke 2 master adalah sebagai berikut:
[email protected]:~$ ssh -i /home/deepak/.ssh/id_rsa -p 2202 [email protected]
Daemon Docker berjalan pada 172.16.0.5:2375 . Untuk menampilkan informasi seluruh sistem, jalankan info buruh pelabuhan memerintah. Output (sebagian) dari perintah terdaftar:
[email protected]:~$ docker -H 172.16.0.5:2375 infoContainers:0 Berjalan:0 Dijeda:0 Dihentikan:0Gambar:0Peran:primerStrategi:spreadNodes:1 swarm-agent-D50F2361000001:10.0.0.5:2375Is Manajer:false Kernel Versi:3.19.0-65-genericSistem Operasi:linuxArsitektur:amd64CPU:2Total Memori:7.145GiB
Menjalankan Gambar Docker Hello World
Setiap mesin virtual dalam ACS Swarm adalah host Docker dan container Docker mandiri dapat dijalankan di salah satu Swarm VM. Sebagai contoh, jalankan image Docker “hello-world” pada master VM.
[email protected]:~$ docker run hello-worldTidak dapat menemukan gambar 'hello-world:latest' secara lokal terbaru:Menarik dari perpustakaan/hello-world5b0f327be733:Tarik selesaiDigest:sha256:b2ba691d8aac9e5ac3644c0788e3d3823f9e97f baru Unduh gambar world:latestHalo dari Docker! Pesan ini menunjukkan bahwa instalasi Anda tampaknya bekerja dengan benar. Untuk membuat pesan ini, Docker mengambil langkah-langkah berikut:1. Klien Docker menghubungi daemon Docker. 2. Daemon Docker menarik gambar "hello-world" dari Docker Hub. 3. Daemon Docker membuat wadah baru dari gambar itu yang menjalankan executable yang menghasilkan output yang sedang Anda baca. 4. Daemon Docker mengalirkan output tersebut ke klien Docker, yang mengirimkannya ke terminal Anda. Untuk mencoba sesuatu yang lebih ambisius, Anda dapat menjalankan wadah Ubuntu dengan:$ docker run -it ubuntu bashShare images, automate workflows, dan banyak lagi dengan ID Docker gratis:https://cloud.docker.com/Untuk contoh dan ide lainnya, kunjungi:https://docs.docker.com/engine/userguide/[email protected]:~$
Gambar Docker hello-world sedang berjalan di VM master Swarm dan bukan di Swarm. Master VM hanyalah salah satu VM di Swarm. Docker Swarm mendengarkan titik akhir 172.16.0.5:2375. Untuk menjalankan kontainer Docker di Swarm, titik akhir Swarm harus disediakan, seperti yang akan kita bahas di bagian selanjutnya. Saat wadah Docker dijalankan di Swarm, master Swarm menugaskan agen Swarm untuk menjalankan wadah Docker.
Menjalankan Gambar Nginx Docker
halo-dunia Gambar Docker yang digunakan di bagian sebelumnya adalah gambar Docker yang sangat dasar dengan tidak banyak Dockerisasi dan hanya menampilkan pesan. Di bagian ini, kita akan menjalankan container mandiri dengan image Docker nginx untuk server Nginx. Perintah berikut membuat wadah Docker bernama hello-nginx dan memperlihatkan port 80 pada host.
docker run --name hello-nginx -d -p 80:80 nginx
Keluaran dari docker run perintah terdaftar:
[email protected]:~$ docker run --name hello-nginx -d -p 80:80 nginxTidak dapat menemukan gambar 'nginx:latest' secara lokallatest:Menarik dari perpustakaan/nginxbc95e04b23c0:Tarik selesai110767c6efff:Tarik selesaif081e0c4df75:Tarik completeDigest:sha256:004ac1d5e791e705f12a17c80d7bb1e8f7f01aa7dca7deee 6e65a03465392072Status:Gambar terbaru yang diunduh untuk nginx:latestb3679edba090ff41482f3754b4d852d295985b501f46cedpred852d295985b501fdocker dijalankan . sebelumnya perintah menjalankan wadah Docker di VM master Swarm. kerja buruh pelabuhan perintah dapat dijalankan di Swarm dengan memberikan IP dan port titik akhir Swarm sebagai berikut:
[email protected]:~$ docker -H 172.16.0.5:2375 run --name hello-nginx -d -p 80:80 nginxddcbc335988f7b5dba762b436bfde4c22d01144d67313813ba140a5391bac8dfMendaftarkan Kontainer Docker
Cantumkan container Docker pada master VM dengan docker ps memerintah. halo-nginx Wadah buruh pelabuhan terdaftar. Wadah pengelola Swarm, yang bukan dibuat oleh pengguna tetapi merupakan wadah sistem, dibuat saat Swarm dibuat.
Catatan Editor: Harap dicatat bahwa banyak dari daftar kode berikut terlalu lebar untuk ditampilkan dengan benar. Silakan gulir kotak kode ke kanan untuk melihat seluruh daftar. |
[email protected]:~$ docker psCONTAINER ID IMAGE COMMAND NAMA PORT STATUS YANG DIBUATb3679edba090 nginx "nginx -g 'daemon..." 3 detik yang lalu Naik 2 detik 0.0.0.0:80->80/tcp hello-nginxf82ebb6efa4f swarm:1.1.0 "/swarm manage --r..." 5 menit yang lalu Naik 3 menit 0.0.0.0:2375->2375/tcp containers_swarm_1
Kontainer Docker pada titik akhir Swarm dapat dicantumkan sebagai berikut:
[email protected]:~$ docker -H 172.16.0.5:2375 ps -aCONTAINER ID IMAGE COMMAND NAMA PORT STATUS YANG DIBUAT Sddcbc335988f nginx "nginx -g 'daemon..." 36 detik yang lalu Naik 35 detik 10.0.0.5:80->80/tcp swarm-agent-D50F2361000001/hello-nginx
Wadah Docker berjalan pada agen Swarm seperti yang ditunjukkan oleh nama wadah Docker swarm-agent-D50F2361000001/hello-nginx .
Mengakses Kontainer Nginx Docker di Browser
Seperti yang telah dibahas sebelumnya, ketika sebuah wadah Docker dijalankan di Swarm menggunakan titik akhir Swarm, master Swarm menjadwalkan wadah tersebut pada salah satu agen Swarm di Swarm. Untuk mengakses server Nginx yang berjalan di wadah Docker pada titik akhir Swarm, IP Publik agen Swarm harus digunakan. Swarm yang kami gunakan hanya memiliki satu agen Swarm. IP Publik agen Swarm dapat diperoleh dari daftar Sumber Daya, seperti yang ditunjukkan pada Gambar 1.
Gambar 1: Alamat IP Publik Agen Swarm
Atau, klik penyeimbang Beban agen Swarm di Sumber Daya , seperti yang ditunjukkan pada Gambar 2.
Gambar 2: Penyeimbang Beban Agen Swarm
Di halaman detail agen Swarm, dapatkan Alamat IP (lihat Gambar 3).
Gambar 3: Alamat IP Agen Swarm
Alamat IP juga dapat diperoleh dari halaman detail penyeimbang beban agen Swarm, seperti yang ditunjukkan pada Gambar 4.
Gambar 4: IP Publik Agen Swarm di Halaman Penyeimbang Beban
Di browser di mesin lokal, navigasikan ke alamat IP Publik dari agen Swarm. Halaman selamat datang server Nginx akan ditampilkan, seperti yang ditunjukkan pada Gambar 5.
Gambar 5: Menjalankan Server Nginx di Browser
Menghapus Kontainer Docker
Untuk menghapus wadah Docker, jalankan docker rm memerintah. Wadah Docker yang sedang berjalan tidak dapat dihapus. Pertama, hentikan wadah Docker hello-nginx berlari di Swarm.
[email protected]:~$ docker -H 172.16.0.5:2375 stop hello-nginxhello-nginx
Selanjutnya, wadah yang dihentikan dapat dihapus dengan docker rm .
[email protected]:~$ docker -H 172.16.0.5:2375 rm hello-nginxhello-nginx
Menginisialisasi Mode Kawanan Docker
Seperti yang dibahas sebelumnya, Azure Container Service Swarm tidak memiliki mode Swarm yang diaktifkan secara default. Mode Swarm harus diinisialisasi dengan docker swarm init perintah.
[email protected]:~$ docker swarm init --advertise-addr 52.176.1.213Swarm initialized:node saat ini (ia4uj7431stu8y0j5h2yvdp27) sekarang menjadi manajer.
Untuk menambahkan pekerja ke swarm ini, jalankan perintah berikut:
serangan buruh pelabuhan bergabung --tokenSWMTKN-1-5ksj7uqccgv1vnnmie09qmt191ldpupof4ihg4vhm083c20xsh -6uyq5653uo62e521bcoatzyyz52.176.1.213:2377
Untuk menambahkan manajer ke swarm ini, jalankan 'docker swarm join-token manager' dan ikuti petunjuknya.
Buat daftar node mode Swarm dengan docker node ls memerintah. Node pengelola Swarm terdaftar.
[email protected]:~$ docker node lsID HOSTNAME STATUS AVAILABILITY MANAGER STATUSia4uj7431stu8y0j5h2yvdp27 * swarm-master-D50F2361-0 Siap Pemimpin Aktif
Membuat Layanan Docker
Setelah menginisialisasi mode Docker Swarm, buat layanan Docker dengan docker service create memerintah. Sebagai contoh, buat layanan Docker yang terdiri dari dua replika menggunakan gambar Docker alpine dan ping docker.com.
[email protected]:~$ docker service create--replicas 2 --name helloworld alpine ping docker.comtg1ywqiyei3jw9prco6890ol1
Sebagai contoh lain, buat layanan Docker dengan image Docker tutum/hello-world dan mengekspos layanan pada host pada port 8080.
[email protected]:~$ docker service create> --name hello-world> --publish 8080:80> --replicas 2> tutum/hello-world3e38c1595cddg0ckmoyasrnnu
Mendaftarkan Layanan Docker
Cantumkan layanan Docker dengan layanan buruh pelabuhan ls memerintah. Dua layanan yang dibuat di bagian sebelumnya terdaftar.
[email protected]:~$ layanan buruh pelabuhan lsID NAME MODE REPLIKAS PORT GAMBAR3e38c1595cdd hello-world replicad 2/2 tutum/hello-world:latest *:8080->80/tcptg1ywqiyei3j helloworld replicad 2/2 alpine:terbaru
Mendaftarkan Tugas Layanan Docker
Buat daftar tugas layanan Docker untuk helloworld layanan berdasarkan gambar Docker alpine .
[email protected]:~$ docker service ps helloworldID NAMA GAMBAR NODE NEGARA YANG DIINGINKAN NEGARA SAAT PORT ERROR PORTS0mal82mskbge helloworld.1 alpine:latest swarm-master-D50F2361-0 Berjalan Berjalan 33 detik yang laluiqz0bqkldxs2 helloworld.2 alpine-:latest s master-D50F2361-0 Lari Berlari 32 detik yang lalu
Buat daftar tugas layanan Docker untuk hello-world layanan berdasarkan tutum/hello-world Gambar buruh pelabuhan.
[email protected]:~$ docker service ps hello-worldID NAMA GAMBAR NODE NEGARA YANG DIINGINKAN NEGARA SAAT PORT ERRORSyok48ja4o835 hello-world.1 tutum/hello-world:latest swarm-master-D50F2361-0 Berjalan Berjalan 38 detik yang lalux5tvcuglwzd0 hello-world.2 tutum/hello-world:latest swarm-master-D50F2361-0 Lari Berlari 38 detik yang lalu
Mendaftarkan Kontainer Docker untuk Layanan Docker
Wadah Docker untuk layanan Docker pada host Docker di Swarm dapat dicantumkan dengan docker ps perintah.
[email protected]:~$ docker psCONTAINER ID IMAGE COMMAND NAMA PORT STATUS YANG DIBUATb6b069102300 tutum/hello-world:latest "/bin/sh -c 'php-f..." 6 menit yang lalu Naik 6 menit 80/ "tcp hello-world.2.x5tvcuglwzd05olktbf3tpfqe62e26d4bc0ff tutum/hello-world:latest "/bin/sh -c 'php-f..." 6 menit yang lalu Naik 6 menit 80/tcp hello-world.1.yok48ja4o835nc7cog8hhjlr pingdocker.com" 7 menit yang lalu Naik 7 menit helloworld.2.iqz0bqkldxs2sg8ny50je7e7y92dab9f7ae97 alpine:latest "pingdocker.com" 7 menit yang lalu Naik 7 menit helloworld.1.0mal82mskbgecbcwh3op18nrr
Wadah buruh pelabuhan untuk hello-world dan halo dunia layanan terdaftar.
Menjelajahi Log yang Dihasilkan oleh Kontainer Layanan Docker
Log yang dihasilkan, jika ada, dalam wadah Docker untuk layanan Docker dapat dicantumkan dengan log buruh pelabuhan memerintah. Sebagai contoh, dapatkan ID penampung untuk layanan berbasis gambar alpine dan cantumkan log:
[email protected]:~$ docker logs db4827da350bPING docker.com (34.201.187.190):56 byte data
Seperti yang ditunjukkan oleh output, domain docker.com akan di-ping dan 56 byte data dipertukarkan.
Kesimpulan
Pada artikel ini, kami membahas penggunaan Docker di cluster Docker Swarm di Azure Container Service. Kami menggunakan wadah Docker mandiri dan layanan Docker di Swarm. Cluster Swarm di ACS mengekspos titik akhir Swarm untuk menjalankan container Docker mandiri. Ketika kontainer Docker dijalankan pada titik akhir Swarm, Swarm menjalankan kontainer Docker yang berdiri sendiri pada agen Swarm/s. Mode Swarm tidak diaktifkan secara default dan harus diinisialisasi pada VM master Swarm.