Pada CoreOS, Atur Registri Docker Anda Sendiri

Kita semua tahu dan cinta Docker, sebuah platform untuk membuat, mengelola, dan mendistribusikan kontainer aplikasi di beberapa mesin. Docker Inc. menyediakan layanan untuk meng-host wadah sumber terbuka untuk diunduh (atau ditarik) seperti repositori git yang dikenal sebagai "Docker Registry." Anggap saja seperti GitHub untuk wadah Docker.

Tetapi bagaimana jika Anda ingin meng-host registri Anda sendiri terpisah dari yang umum? Yah, Docker Inc. telah membuka aplikasi Registry mereka di GitHub.

Tutorial ini akan membawa Anda melalui proses pengaturan registri Docker pribadi menggunakan CoreOS pada VPS baru.

CoreOS + Docker

Kami tidak akan menghabiskan banyak waktu untuk membahas apa yang dapat dilakukan Docker dan CoreOS, karena hal tersebut berada di luar cakupan tutorial ini. Intinya, CoreOS dirancang untuk kelompok server besar, kecil, cepat, dan mendapatkan pembaruan keamanan rutin secara otomatis. Sistem root file-nya juga hanya-baca, artinya Anda harus menggunakan Docker untuk menjalankan semua jenis perangkat lunak yang tidak disertakan dengan instalasi dasar.

Ini menjadikan Core OS sistem host yang sempurna untuk Docker!

Menarik dan menjalankan registri terbaru

Docker Inc. telah menyediakan Registry sebagai gambar tingkat atas, ini berarti kami dapat menariknya dengan sederhana:

docker pull registry

Ini bisa memakan waktu beberapa menit, tergantung pada kecepatan koneksi.

Plus menjadi gambar tingkat atas juga berarti mendapat dukungan dan pembaruan rutin.

Sekarang mari kita menguji registri. Kami dapat membuat wadah baru menggunakan gambar registri:

docker run -p 5000:5000 -d --name=basic_registry registry

Bagi mereka yang belum terlalu banyak menggunakan Docker, -pflag adalah singkatan PORT, artinya kita mengekspos port 5000 dari wadah ke host port 5000.

The -dbendera singkatan daemon, ini akan menyebabkan wadah untuk berjalan di latar belakang dan tidak mencetak output ke sesi SSH saat ini, kami juga ingin nama wadah tes dasar ini menggunakan --namepilihan sehingga kita dapat dengan mudah mengelola nanti.

Pastikan bahwa wadah registri dasar Anda sedang berjalan menggunakan docker ps. Outputnya akan terlihat mirip dengan:

CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                    NAMES
edfb54e4a8c4        registry:0.8.1      "/bin/sh -c 'exec do   7 seconds ago       Up 6 seconds        0.0.0.0:5000->5000/tcp   basic_registry

Juga, kunjungi http://YOUR_IP:5000di browser web Anda, dan Anda akan mendapatkan pesan seperti berikut:

"docker-registry server (dev) (v0.8.1)"

Perhatikan kata devdalam kurung. Ini berarti bahwa server sedang menjalankan konfigurasi dev. Kami akan segera mencari lebih banyak konfigurasi.

Sekarang Anda memiliki registry container (sangat dasar) Anda sendiri yang sedang berjalan! Tapi kita belum selesai.

Mungkin Anda ingin menjaga kerahasiaan ini dari pengintaian, atau mungkin menyimpan gambar Anda di Amazon S3 alih-alih penyimpanan lokal. Mari kita membahas berbagai opsi konfigurasi di bagian selanjutnya.

Sebelum kita melanjutkan, mari kita bunuh wadah uji sehingga kita tidak mengalami port yang bertentangan.

docker kill basic_registry

Konfigurasi registri

Ada dua cara yang bisa kita lakukan konfigurasi ke Docker Registry. Salah satu caranya adalah dengan mengirimkan variabel lingkungan ke wadah baru, dan yang lainnya adalah menambahkan file konfigurasi.

Berikut beberapa opsi konfigurasi umum yang akan kami gunakan:

  • loglevel- Jumlah minimum informasi untuk masuk ke konsol. Defaultnya adalah info.
  • standalone- Haruskah Registry ini bertindak sendiri? (Jangan pernah menanyakan registri publik.) Defaultnya adalah true.
  • index_endpoint- Jika tidak berdiri sendiri, indeks apa lagi yang akan kami tanyakan? Standar index.docker.io.
  • cachedan cache_lru- Opsi yang berkaitan dengan menggunakan cache Redis untuk file kecil, kami akan menyentuh ini nanti.
  • storage- Backend penyimpanan apa yang harus kita gunakan untuk server ini? (Dalam tutorial ini kita akan menggunakan lokal).
  • storage_path - Jika menggunakan penyimpanan lokal, direktori apa yang harus kita gunakan untuk menyimpan file?

Sebelum kita mulai bekerja dengan konfigurasi, kita perlu file dasar untuk bekerja. File dari repositori Docker Registry di GitHub akan berfungsi dengan baik:

wget https://raw.githubusercontent.com/docker/docker-registry/0.8/config/config_sample.yml

File harus berhasil disimpan dengan output seperti:

2014-09-14 14:09:01 (156 MB/s) - 'config_sample.yml' saved [5384/5384]

Bagus! Sekarang kita dapat memodifikasi file ini agar sesuai dengan kebutuhan kita.

Satu-satunya editor teks yang dilengkapi dengan Core OS adalah vim, tetapi jangan khawatir jika Anda belum pernah menggunakannya, ini akan menjelaskan langkah demi langkah apa yang harus diedit dan bagaimana melakukannya.

vim config_sample.yml

Setelah file terbuka, tekan Idan sudut kanan bawah akan ditampilkan: -- INSERT --untuk mode penyisipan. Gulir ke bagian bawah file menggunakan tombol panah Anda, Anda akan melihat bagian berlabel prod.

Kami akan mengubah dua baris, perubahan di bawah

prod:
    <<: *local
    storage_path: _env:STORAGE_PATH:/data

Apa yang kami lakukan adalah mengubah prodkonfigurasi untuk mendapatkan dari localbagian daripada s3bagian. Lalu kami menimpa storage_pathuntuk menggunakan jalur /datadi dalam wadah baru.

Setelah Anda mengonfirmasi bahwa semua perubahan sudah benar, tekan ESCuntuk keluar dari mode dan jenis penyisipan :wq(ini berarti menulis perubahan pada file, dan keluar dari vim.)

Sekarang mari kita ganti nama file menjadi adil config.yml

mv config_sample.yml config.yml

Redis caching (opsional)

Jika Anda ingin menggunakan redis untuk mempercepat registrasi kontainer Anda, itu semudah menarik kontainer baru dari registry publik dan menambahkan beberapa baris konfigurasi lagi.

Pertama, tarik gambar tingkat atas Redis:

docker pull redis

Setelah gambar berhasil ditarik, kita bisa menjalankannya dan beri nama seperti yang kita lakukan dengan registri tes:

docker run -d --name registry-redis redis

Karena redis ada di memori, kita tidak perlu melakukan konfigurasi apa pun untuk itu, karena kita akan menautkannya ke wadah registri pada langkah selanjutnya.

Sekali lagi, pastikan itu berjalan dengan menggunakan docker ps:

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
54f65641eccf        redis:2.8           "redis-server"      2 seconds ago       Up 1 seconds        6379/tcp            registry-redis

Sekarang kembali buka config.ymldi vimdan masukkan insert modus seperti pertama kali kita mengeditnya.

Tambahkan baris berikut di bawah prodbagian ini, pastikan untuk indentasi dengan benar. Kali ini kami hanya menambahkan cachedan cache_lru.

cache:
    host: _env:REDIS_PORT_6379_TCP_ADDR
    port: _env:REDIS_PORT_6379_TCP_PORT
    db: 0

cache_lru:
    host: _env:REDIS_PORT_6379_TCP_ADDR
    port: _env:REDIS_PORT_6379_TCP_PORT
    db: 1

Variabel lingkungan REDIS_PORT_6379_TCP_ADDRdan REDIS_PORT_6379_TCP_PORTditeruskan ke wadah registri setelah dikaitkan dengan wadah Redis.

Dengan itu, Anda sekarang telah menyiapkan wadah Redis yang akan bekerja bahu-membahu dengan wadah registri Anda. Sekarang untuk membangun registri!

Membangun wadah

Kami memiliki semua konfigurasi dan siap, sekarang kita perlu membangun wadah registri yang sebenarnya.

Jalankan vim Dockerfileuntuk membuat Dockerfile baru. Masuk ke mode penyisipan dan ikuti pengeditan di bawah ini.

FROM registry:latest

# Add the custom configuration file we made 
ADD ./config.yml /docker-registry/config/config.yml

# Create the data directory
RUN mkdir /data

# Set the configuration file to config.yml
env DOCKER_REGISTRY_CONFIG /docker-registry/config/config.yml

# Make sure we use the prod configuration settings 
env SETTINGS_FLAVOR prod

Apa yang telah kami lakukan di atas pada dasarnya memperpanjang citra registri sehingga akan menggunakan file konfigurasi dan pengaturan kami. Dockerfile adalah sekumpulan instruksi build untuk dibaca dan dibangun oleh Docker. Jika Anda ingin mempelajari lebih lanjut tentang Dockerfiles dan sintaksisnya, lihat dokumentasi situs Docker resmi.

Selanjutnya kita perlu membangun wadah untuk digunakan.

docker build -t my_registry .


Sending build context to Docker daemon 13.82 kB
Sending build context to Docker daemon 
Step 0 : FROM registry
 ---> e42d15ec8417
Step 1 : ADD ./config.yml /docker-registry/config/config.yml
 ---> 4339f026d459
Removing intermediate container 2d5138fbcd34
Step 2 : RUN mkdir /data
 ---> Running in a090f0bdbfd1
 ---> 8eb27ba6e12a
Removing intermediate container a090f0bdbfd1
Step 3 : env DOCKER_REGISTRY_CONFIG /docker-registry/config/config.yml
 ---> Running in 565b5bfb2b22
 ---> 914462e46dc0
Removing intermediate container 565b5bfb2b22
Step 4 : env SETTINGS_FLAVOR prod
 ---> Running in 31a92847b851
 ---> b5949575c374
Removing intermediate container 31a92847b851
Successfully built b5949575c374

Sekarang kita siap berlari!

Mari kita membuat direktori pada sistem host kita untuk dipasang di wadah sebagai /datavolume.

mkdir registry-data

Sekarang kita bisa memunculkan wadah baru. Jika Anda berencana menggunakan cache Redis, gunakan perintah ke-2 di bawah ini.

# For a non-Redis cache registry
docker run -d -p 5000:5000 -v /home/core/registry-data:/data --name=private_reg my_registry

# For a Redis cached registry (Must have followed Redis Caching section above)
docker run -d -p 5000:5000 -v /home/core/registry-data:/data --name=private_reg --link registry-redis:redis my_registry

Untuk memastikan server Anda berjalan dengan benar, kunjungi http://YOUR_IP:5000. Anda akan melihat pesan berikut:

"docker-registry server (prod) (v0.8.1)"

Perhatikan (prod)arti perubahan konfigurasi kami berhasil!

Konfigurasikan klien Docker lokal Anda

Sekarang kami memiliki registri berjalan sendiri, kami ingin klien Docker di komputer lokal kami mulai menggunakannya. Biasanya Anda akan menggunakan perintah:, docker logintetapi untuk penggunaan kami, kami perlu menambahkan satu argumen lagi ke perintah login:

docker login YOUR_IP:5000

Masukkan nama pengguna dan kata sandi (anggap ini seperti membuat akun baru) dan abaikan pesan yang menyatakan bahwa Anda harus mengaktifkannya.

Selanjutnya, mari kita tarik gambar stok, dan dorong ke repositori kita sendiri.

# Pull the busybox image from the public registry
docker pull busybox

# Tag it with our IP/URL
docker tag busybox YOUR_IP:5000/busybox

# Push it to our newly made registry
docker push YOUR_IP:5000/busybox

Jika semuanya mendorong dengan benar, pesan terakhir harus sesuai:

Pushing tag for rev [a9eb17255234] on 

Selamat! Anda telah menyiapkan repositori buruh pelabuhan Anda sendiri.

Apa berikutnya?

Berikut adalah beberapa ide tentang cara meningkatkan registri pribadi baru Anda:

  • Membalikkan proxy menggunakan Nginx atau Apache untuk menempatkan keamanan tambahan di depannya, seperti auth HTTP sederhana.
  • Dapatkan domain untuk server Anda dan setup sehingga Anda dapat mengakses registri Anda dengan sesuatu seperti: registry.mysite.com
  • Beli (atau tandatangani sendiri) sertifikat SSL untuk menambahkan lebih banyak perlindungan jika wadah Anda berisi informasi sensitif.


Leave a Comment

Cara Memasang Panel Kontrol Hosting Mudah di Ubuntu 16.04

Cara Memasang Panel Kontrol Hosting Mudah di Ubuntu 16.04

Pelajari langkah-langkah untuk memasang Panel Kontrol Hosting Mudah (EHCP) di Ubuntu 16.04 dengan panduan ini.

Wawasan tentang 26 Teknik Analisis Data Besar: Bagian 1

Wawasan tentang 26 Teknik Analisis Data Besar: Bagian 1

Wawasan tentang 26 Teknik Analisis Data Besar: Bagian 1

6 Hal yang Sangat Menggila dari Nintendo Switch

6 Hal yang Sangat Menggila dari Nintendo Switch

Banyak dari Anda tahu Switch keluar pada Maret 2017 dan fitur-fitur barunya. Bagi yang belum tahu, kami sudah menyiapkan daftar fitur yang membuat 'Switch' menjadi 'gadget yang wajib dimiliki'.

Janji Teknologi Yang Masih Belum Ditepati

Janji Teknologi Yang Masih Belum Ditepati

Apakah Anda menunggu raksasa teknologi untuk memenuhi janji mereka? periksa apa yang belum terkirim.

Fungsionalitas Lapisan Arsitektur Referensi Big Data

Fungsionalitas Lapisan Arsitektur Referensi Big Data

Baca blog untuk mengetahui berbagai lapisan dalam Arsitektur Big Data dan fungsinya dengan cara yang paling sederhana.

Bagaimana AI Dapat Membawa Otomatisasi Proses ke Tingkat Selanjutnya?

Bagaimana AI Dapat Membawa Otomatisasi Proses ke Tingkat Selanjutnya?

Baca ini untuk mengetahui bagaimana Kecerdasan Buatan menjadi populer di antara perusahaan skala kecil dan bagaimana hal itu meningkatkan kemungkinan untuk membuat mereka tumbuh dan memberi keunggulan pada pesaing mereka.

CAPTCHA: Berapa Lama Itu Bisa Tetap Menjadi Teknik yang Layak Untuk Perbedaan Human-AI?

CAPTCHA: Berapa Lama Itu Bisa Tetap Menjadi Teknik yang Layak Untuk Perbedaan Human-AI?

CAPTCHA telah berkembang cukup sulit bagi pengguna untuk dipecahkan dalam beberapa tahun terakhir. Apakah itu akan tetap efektif dalam deteksi spam dan bot di masa mendatang?

Singularitas Teknologi: Masa Depan Peradaban Manusia yang Jauh?

Singularitas Teknologi: Masa Depan Peradaban Manusia yang Jauh?

Saat Sains Berkembang dengan kecepatan tinggi, mengambil alih banyak upaya kita, risiko menundukkan diri kita pada Singularitas yang tidak dapat dijelaskan juga meningkat. Baca, apa arti singularitas bagi kita.

Telemedicine Dan Perawatan Kesehatan Jarak Jauh: Masa Depan Ada Di Sini

Telemedicine Dan Perawatan Kesehatan Jarak Jauh: Masa Depan Ada Di Sini

Apa itu telemedicine, perawatan kesehatan jarak jauh dan dampaknya terhadap generasi mendatang? Apakah itu tempat yang bagus atau tidak dalam situasi pandemi? Baca blog untuk menemukan tampilan!

Pernahkah Anda Bertanya-tanya Bagaimana Hacker Menghasilkan Uang?

Pernahkah Anda Bertanya-tanya Bagaimana Hacker Menghasilkan Uang?

Anda mungkin pernah mendengar bahwa peretas menghasilkan banyak uang, tetapi pernahkah Anda bertanya-tanya bagaimana cara mereka mendapatkan uang sebanyak itu? mari berdiskusi.