Batch Compute tidak hanya memungkinkan Anda menginstal perangkat lunak pada citra secara langsung, tetapi juga mendukung penyebaran aplikasi pada citra Docker. Anda dapat membuat citra Docker dan menggunakan alat registry untuk mengunggahnya ke Alibaba Cloud OSS. Setelah itu, Anda dapat menjalankan tugas pekerjaan Anda pada citra ini.
1. Dukungan untuk Docker
Model AutoCluster digunakan sebagai contoh untuk menjelaskan perbedaan dukungan antara VM biasa dan kontainer Docker:
Menggunakan VM biasa: Setiap pekerjaan yang dikirimkan dapat memiliki beberapa tugas, masing-masing dengan citra (Linux atau Windows) yang ditentukan.
Saat menjalankan tugas, sistem memulai VM berdasarkan citra yang telah ditentukan.
Tugas kemudian dijalankan pada VM tersebut. Setelah selesai, sistem mengunggah hasil eksekusi ke penyimpanan permanen yang ditentukan, menghapus VM, lalu menjalankan tugas berikutnya.
Menggunakan Docker: Anda dapat menentukan citra Docker untuk setiap tugas.
Saat menjalankan tugas, sistem memulai VM untuk menjalankan citra sistem (seperti Ubuntu) yang mendukung Docker.
Kemudian, sistem mengunduh citra Docker yang Anda tentukan dan menjalankannya di dalam VM. Tugas Anda berjalan di dalam kontainer Docker.
Setelah tugas selesai, sistem mengunggah hasil eksekusi ke penyimpanan permanen yang ditentukan, menghapus VM, lalu menjalankan tugas berikutnya.
Saat ini, satu VM hanya dapat menjalankan satu citra Docker.
# Gunakan VM:
---
|-- job
|-- task
|-- VM (VM yang ditentukan yang mendukung citra Windows dan Linux)
|-- program (program Anda)
# Gunakan kontainer Docker:
---
|-- job
|-- task
|-- VM (sistem operasi Ubuntu yang mendukung Docker)
|-- Docker-Container (citra yang ditentukan untuk kontainer Docker)
|-- program (program Anda)2. Skenario dengan dan tanpa Docker
- | Docker tidak digunakan | Docker digunakan |
Penggunaan citra | Tentukan ID citra ECS | Tentukan ID citra ECS yang mendukung kontainer Docker (Ubuntu yang dirilis di situs resmi), dan tentukan citra Docker kustom. |
Platform pelaksanaan program | Windows dan Linux | Linux |
Debugging lokal | Tidak didukung | Didukung, menggunakan citra Docker yang dibuat secara lokal. |
3. Instal Docker
3.1. Unduh dari situs resmi Docker
Untuk sistem operasi Windows atau Mac, unduh toolbox di https://www.docker.com/docker-toolbox.
Setelah menginstal toolbox, dua ikon pintasan akan muncul di desktop:
Kitematic: Digunakan untuk mengelola antarmuka GUI kontainer Docker. Docker Quickstart Terminal: Digunakan untuk memulai jendela baris perintah Docker dengan cepat.
Untuk sistem operasi Linux, unduh Docker untuk Ubuntu di https://www.docker.com/docker-ubuntu.
CATATAN: Instal Docker 1.10 atau versi lebih baru. Versi Docker yang lebih lama dapat menyebabkan masalah kompatibilitas.
3.2. Konfigurasikan booster
Booster dapat membantu Anda memperoleh citra Docker resmi lebih cepat di China:Platform Pengembangan Layanan Kontainer Alibaba Cloud
4. Buat citra Docker
Contoh ini menjelaskan cara membuat citra Ubuntu yang berisi Python. Nama citra adalah myubuntu.
Buat direktori dockerUbuntu dengan struktur berikut:
dockerUbuntu
|-- DockerfileIsi dari Dockerfile adalah sebagai berikut:
FROM ubuntu:14.04
# Ganti your_name dengan nama Anda sendiri dan your_email dengan alamat email Anda.
MAINTAINER your_name <your_email>
# Perbarui sumber.
RUN apt-get update
# Bersihkan cache.
RUN apt-get autoclean
# Instal Python.
RUN apt-get install -y python
# Jalankan perintah berikut setelah sistem dimulai:
CMD ["/bin/bash"]Jalankan perintah berikut untuk membangun citra:
cd dockerUbuntu # Masuk ke direktori dockerUbuntu.
docker build -t myubuntu ./ # Bangun citra bernama myubuntu.CATATAN: Di Ubuntu, perintah docker hanya dapat dieksekusi oleh pengguna sudo secara default. Di sistem operasi Mac atau Windows, mulai jendela baris perintah menggunakan Docker Quickstart Terminal dan jalankan perintah docker di dalam jendela tersebut.
Setelah membangun citra, jalankan perintah berikut untuk melihat citra:
docker imagesInformasi keluaran serupa dengan berikut ini:
Selain menggunakan Dockerfile, Anda juga dapat membuat citra Docker dengan cara yang lebih intuitif.
5. Unggah citra Docker ke OSS
Untuk menggunakan layanan Docker dari Batch Compute, unggah citra Docker myubuntu yang telah Anda buat ke OSS. Sistem kemudian mengunduh citra dari OSS untuk menjalankan program tugas Anda.
5.4. Instal OSS Docker Registry 2
Anggaplah Anda ingin menyimpan Docker di direktori OSS berikut:
oss://your-bucket/dockers/Gunakan citra resmi Docker Registry 2 untuk membuat repositori citra pribadi, dan atur informasi OSS termasuk ID AccessKey, Rahasia AccessKey, wilayah, dan bucket.
Prosedur instalasi adalah sebagai berikut:
Buat file config.yml di direktori saat ini.
version: 0.1
log:
level: debug
storage:
oss:
accesskeyid: your_access_key_id
accesskeysecret: your_access_key_secret
region: oss-cn-shenzhen
bucket: your-bucket
rootdirectory: dockers
secure: false
internal: false
http:
addr: 0.0.0.0:5000Ganti variabel berikut:
Parameter | Deskripsi |
your_access_key_id | ID AccessKey Anda |
your_access_key_secret | Rahasia AccessKey Anda |
your-bucket | Bucket Anda |
oss-cn-shenzhen | Wilayah tempat bucket Anda berada |
Untuk informasi lebih lanjut tentang konfigurasi OSS, lihat dokumentasi resmi Docker.
Jalankan perintah berikut untuk menginstal OSS Docker Registry 2.
docker pull registry:2
docker run -v `pwd`/config.yml:/etc/docker/registry/config.yml -p 5000:5000 --name registry -d registry:2CATATAN:
Dalam contoh ini, oss-cn-shenzhen mewakili OSS di wilayah China South 1 (Shenzhen). Pekerjaan yang dikirimkan selanjutnya hanya dapat bekerja normal di wilayah ini.
Setelah instalasi selesai, jalankan perintah berikut untuk memeriksa hasilnya:
docker ps # Periksa kontainer yang sedang berjalan.Jika instalasi berhasil, registry:2 akan ditampilkan.
5.2. Jalankan perintah berikut untuk mengunggah citra ke OSS:
docker tag myubuntu localhost:5000/myubuntu
docker push localhost:5000/myubuntuCATATAN: Awalan nama citra harus localhost:5000/. Citra tidak dapat diunggah jika awalan lain digunakan. Port 5000 dalam awalan ditentukan oleh -p 5000:5000 (angka sebelum titik dua) pada langkah (1). Nama sebenarnya dari citra yang Anda buat adalah localhost:5000/myubuntu, bukan myubuntu.
Untuk memverifikasi apakah citra berhasil diunggah, masuk ke konsol OSS dan periksa direktori berikut: oss://your-bucket/dockers/docker/registry/v2/repositories/myubuntu/.
6. Catatan
Di dalam kontainer Docker yang sedang berjalan, nama pengguna adalah root, dan nilai default variabel lingkungan path adalah /sbin:/usr/sbin:/bin:/usr/bin, bukan /usr/local/bin.
Jika Anda tidak menetapkan variabel lingkungan PWD, nilainya adalah ‘/batchcompute/workdir’. Semua paket program Anda diekstraksi ke /batchcompute/workdir.
Registry Docker tidak pernah berhenti setelah dimulai. Oleh karena itu, saat Anda mengirimkan pekerjaan dengan menentukan ID kluster, pastikan bahwa semua pekerjaan yang dikirimkan ke kluster yang sama memiliki nilai BATCH_COMPUTE_DOCKER_REGISTRY_OSS_PATH yang sama.
InputMapping dan OutputMapping tidak dapat dilampirkan ke direktori yang sama.
Batch Compute menggunakan mode -privileged=false untuk memulai kontainer Docker, sehingga tidak mengizinkan kontainer Docker untuk memulai di dalam kontainer Docker lainnya.