Pada CoreOS, Sediakan Docker Registry Anda Sendiri

Kita semua tahu dan menyukai Docker, platform untuk membuat, mengurus dan mengedarkan bekas aplikasi di pelbagai mesin. Docker Inc. menyediakan perkhidmatan untuk mengehos kontena sumber terbuka untuk dimuat turun (atau ditarik) seperti git repositori yang dikenali sebagai "Docker Registry." Fikirkan ia seperti bekas GitHub for Docker.

Tetapi bagaimana jika anda mahu menghoskan pendaftaran anda sendiri yang terpisah dari yang umum? Baiklah, Docker Inc. telah membuka aplikasi Registry mereka di GitHub.

Tutorial ini akan membawa anda melalui proses menyiapkan pendaftaran Docker peribadi menggunakan CoreOS pada VPS baru.

CoreOS + Docker

Kami tidak akan menghabiskan banyak waktu untuk melakukan apa yang dapat dilakukan oleh Docker dan CoreOS, kerana ini di luar ruang lingkup tutorial ini. Pada dasarnya, CoreOS direka untuk kelompok pelayan yang besar, kecil, pantas dan mendapat kemas kini keselamatan secara automatik. Sistem fail rootnya juga hanya boleh dibaca, yang bermaksud anda mesti menggunakan Docker untuk menjalankan apa-apa jenis perisian yang tidak disertakan dengan pemasangan asas.

Ini menjadikan Core OS sistem host yang sempurna untuk Docker!

Menarik dan menjalankan pendaftaran terkini

Docker Inc. telah menyediakan Registry sebagai gambar peringkat teratas, ini bermakna kita dapat membuatnya dengan mudah:

docker pull registry

Ini boleh mengambil masa beberapa minit bergantung pada kelajuan sambungan.

Tambahan menjadi gambar tingkat atas juga bermaksud mendapat sokongan dan kemas kini secara berkala.

Sekarang mari kita menguji pendaftaran. Kita boleh membuat wadah baru menggunakan gambar pendaftaran:

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

Bagi mereka yang belum terlalu banyak menggunakan Docker, -pbendera adalah singkatan PORT, yang bermaksud kami memperlihatkan port 5000 di atas dari bekas ke port host 5000.

The -dbendera bermaksud daemon, ini akan menyebabkan bekas untuk berjalan di latar belakang dan tidak mencetak output untuk sesi SSH semasa, kami juga mahu untuk menamakan ini bekas ujian asas menggunakan --namepilihan supaya kita boleh dengan mudah menguruskan kemudian.

Pastikan bekas asas pendaftaran anda berjalan menggunakan docker ps. Hasilnya kelihatan serupa 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, lawati http://YOUR_IP:5000di penyemak imbas web anda, dan anda akan mendapat mesej seperti yang berikut:

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

Perhatikan perkataan devdalam kurungan. Ini bermaksud bahawa pelayan sedang menjalankan konfigurasi dev. Kami akan melihat lebih banyak konfigurasi tidak lama lagi.

Anda kini menjalankan pendaftaran kontena (sangat asas) anda sendiri! Tetapi kita belum selesai.

Mungkin anda mahu merahsiakan perkara ini dari mata kasar, atau mungkin menyimpan gambar anda di Amazon S3 dan bukannya storan tempatan. Mari kita perhatikan pelbagai pilihan konfigurasi di bahagian seterusnya.

Sebelum kita teruskan, mari kita bunuh wadah ujian agar kita tidak menemui port yang bertentangan.

docker kill basic_registry

Konfigurasi pendaftaran

Ada dua cara yang boleh kita lalui konfigurasi ke Docker Registry. Salah satu cara adalah dengan meneruskan pemboleh ubah persekitaran ke wadah baru, dan yang lain adalah dengan menambahkan fail konfigurasi.

Berikut adalah beberapa pilihan konfigurasi biasa yang akan kita gunakan:

  • loglevel- Jumlah minimum maklumat untuk log masuk ke konsol. Lalai adalah info.
  • standalone- Sekiranya Pendaftaran ini bertindak sendiri? (Jangan sekali-kali membuat pertanyaan mengenai pendaftaran awam.) Lalai adalah true.
  • index_endpoint- Sekiranya tidak berdiri sendiri, indeks apa lagi yang akan kami tanyakan? Lalai index.docker.io.
  • cachedan cache_lru- Pilihan yang berkaitan dengan menggunakan cache Redis untuk fail kecil, kami akan menyentuh perkara ini kemudian.
  • storage- Apakah backend penyimpanan yang harus kita gunakan untuk pelayan ini? (Dalam tutorial ini kita akan menggunakan tempatan).
  • storage_path - Jika menggunakan penyimpanan tempatan, direktori apa yang harus kita gunakan untuk menyimpan fail?

Sebelum kita bekerja dengan konfigurasi, kita memerlukan fail asas untuk dikerjakan. Fail dari repositori Docker Registry di GitHub akan berfungsi dengan baik:

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

Fail harus berjaya disimpan dengan output seperti:

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

Hebat! Sekarang kita dapat mengubahsuai fail ini agar sesuai dengan keperluan kita.

Satu-satunya penyunting teks yang disertakan dengan Core OS adalah vim, tetapi jangan risau jika anda belum pernah menggunakannya sebelumnya, ini akan menerangkan langkah demi langkah apa yang harus diedit dan bagaimana melakukannya.

vim config_sample.yml

Setelah fail dibuka, tekan Idan di sudut kanan bawah akan dipaparkan: -- INSERT --untuk mod sisipan. Tatal hingga ke bahagian bawah fail menggunakan kekunci anak panah anda, anda akan melihat bahagian berlabel prod.

Kami akan mengubah dua baris, perubahannya ada di bawah

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

Apa yang telah kami lakukan adalah mengubah prodkonfigurasi untuk berasal dari localbahagian dan bukannya s3bahagian. Kemudian kami menimpa storage_pathuntuk menggunakan jalan /datadi dalam bekas baru.

Setelah anda mengesahkan bahawa semua perubahan itu betul, tekan ESCuntuk keluar dari mod penyisipan dan taipkan :wq(ini bermaksud menulis perubahan pada fail, dan berhenti vim.)

Sekarang mari kita ganti nama fail menjadi config.yml

mv config_sample.yml config.yml

Redis caching (pilihan)

Sekiranya anda ingin menggunakan redis untuk mempercepat pendaftaran kontena anda, semudah menarik wadah baru dari pendaftaran awam dan menambahkan beberapa baris konfigurasi.

Pertama, tarik gambar tingkat atas Redis:

docker pull redis

Setelah gambar berjaya ditarik, kami dapat menjalankannya dan menamakannya seperti yang kami lakukan dengan ujian pendaftaran:

docker run -d --name registry-redis redis

Kerana redis ada dalam memori, kami tidak perlu melakukan konfigurasi untuk itu, kerana kami akan menghubungkannya ke wadah pendaftaran pada langkah-langkah kemudian.

Sekali lagi, pastikan ia 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

Kini membuka semula yang config.ymldalam vimdan masukkan insert mod sama seperti kali pertama kami menyuntingnya.

Tambahkan baris berikut di bawah prodbahagian ini, pastikan untuk membuat lekukan dengan betul. Kali ini kami hanya menambah 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

Pemboleh ubah persekitaran REDIS_PORT_6379_TCP_ADDRdan REDIS_PORT_6379_TCP_PORTdiserahkan ke wadah pendaftaran setelah dihubungkan dengan wadah Redis.

Dengan itu, anda kini telah menyediakan wadah Redis yang akan berfungsi secara langsung dengan bekas pendaftaran anda. Sekarang untuk membina pendaftaran!

Membina bekas

Kami mempunyai semua set konfigurasi dan siap, sekarang kami perlu membina wadah pendaftaran yang sebenarnya.

Api sehingga vim Dockerfileuntuk mewujudkan Dockerfile baru. Masukkan mod sisipan dan ikuti suntingan di bawah.

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 adalah memperluas imej pendaftaran sehingga akan menggunakan fail konfigurasi dan tetapan kami. Dockerfile adalah sekumpulan arahan membina untuk Docker membaca dan membina. Sekiranya anda ingin mengetahui lebih lanjut mengenai Dockerfiles dan sintaksinya, lihat dokumentasi laman Docker rasmi.

Seterusnya kita perlu membina bekas 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 sudah bersedia untuk berlari!

Mari buat direktori pada sistem hos kami untuk dipasang di dalam bekas sebagai /datakelantangan.

mkdir registry-data

Sekarang kita boleh membuat bekas baru. Sekiranya anda merancang untuk menggunakan cache Redis, gunakan arahan ke-2 di bawah.

# 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 pelayan anda berjalan dengan betul, lawati http://YOUR_IP:5000. Anda akan melihat mesej berikut:

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

Perhatikan (prod)makna perubahan konfigurasi kami berjaya!

Konfigurasikan klien Docker tempatan anda

Sekarang kita mempunyai pendaftaran yang berjalan sendiri, kita mahu pelanggan Docker pada mesin tempatan kita mula menggunakannya. Biasanya anda akan menggunakan perintah: docker logintetapi untuk penggunaan kami, kami perlu menambahkan satu lagi argumen pada arahan log masuk:

docker login YOUR_IP:5000

Masukkan nama pengguna dan kata laluan (anggap seperti membuat akaun baru) dan abaikan mesej yang menyatakan bahawa anda mesti mengaktifkannya.

Seterusnya, mari kita tarik gambar saham, dan tekan 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

Sekiranya semuanya mendorong dengan betul, mesej akhir harus sesuai dengan:

Pushing tag for rev [a9eb17255234] on 

Tahniah! Anda telah menyediakan repositori docker anda sendiri.

Apa yang akan datang?

Berikut adalah beberapa idea mengenai cara memperbaiki pendaftaran peribadi baru anda:

  • Balikkan proksi menggunakan Nginx atau Apache untuk meletakkan keselamatan tambahan di hadapannya, seperti autentikasi HTTP yang sederhana.
  • Dapatkan domain untuk pelayan anda dan siapkan sehingga anda dapat mengakses pendaftaran anda dengan sesuatu seperti: registry.mysite.com
  • Beli (atau tandatangan sendiri) sijil SSL untuk menambahkan lebih banyak perlindungan sekiranya bekas anda mengandungi maklumat sensitif.


Leave a Comment

Terapkan Kubernetes Dengan Kubeadm di CentOS 7

Terapkan Kubernetes Dengan Kubeadm di CentOS 7

Gambaran Keseluruhan Artikel ini dimaksudkan untuk membantu anda mendapatkan cluster Kubernet dan berjalan dengan kubeadm dalam waktu singkat. Panduan ini akan menggunakan dua pelayan, di

Pasang Docker CE pada Ubuntu 18.04

Pasang Docker CE pada Ubuntu 18.04

Pengenalan Docker adalah aplikasi yang memungkinkan kita menyebarkan program yang dijalankan sebagai wadah. Ia ditulis dalam bahasa pengaturcaraan Go yang popular

Buat Docker Swarm pada Alpine Linux 3.9.0

Buat Docker Swarm pada Alpine Linux 3.9.0

Pendahuluan Panduan ini akan menunjukkan kepada anda cara membuat dan mengkonfigurasi kawanan Docker menggunakan beberapa pelayan Alpine Linux 3.9.0 dan Portainer. Harap maklum tha

Pasang Rancher pada Ubuntu 16.04

Pasang Rancher pada Ubuntu 16.04

Menggunakan Sistem Berbeza? Pengenalan Rancher adalah platform sumber terbuka untuk menjalankan kontena dan membina perkhidmatan kontena peribadi. Rancher adalah asas

Memasang komposisi dok pada CoreOS

Memasang komposisi dok pada CoreOS

Artikel ini menerangkan cara memasang docker-compose pada CoreOS. Di CoreOS, folder / usr / tidak berubah sehingga jalan standard / usr / local / bin tidak tersedia

Pasang Rancher di CentOS 7

Pasang Rancher di CentOS 7

Menggunakan Sistem Berbeza? Pengenalan Rancher adalah platform sumber terbuka untuk menjalankan kontena dan membina perkhidmatan kontena peribadi. Rancher adalah asas

Sesi Sticky Dengan Swarm Docker (CE) pada CentOS 7

Sesi Sticky Dengan Swarm Docker (CE) pada CentOS 7

Menggunakan Sistem Berbeza? Pengenalan Docker Swarm menukarkan pelayan individu anda ke dalam kumpulan komputer, memudahkan scaling, ketersediaan tinggi

Memasang Docker di CentOS 7

Memasang Docker di CentOS 7

Menggunakan Sistem yang berbeza? Docker adalah aplikasi yang memungkinkan penggunaan perisian dalam wadah maya. Ia ditulis dalam program Go

Pasang Rancher Server di RancherOS

Pasang Rancher Server di RancherOS

Gambaran Keseluruhan RancherOS adalah sistem operasi yang sangat ringan (hanya sekitar 60 MB) yang menjalankan sistem Docker daemon sebagai PID 0 untuk menjalankan sistem perkhidmatan

Sesi Melekit Dengan Docker Swarm (CE) di Debian 9

Sesi Melekit Dengan Docker Swarm (CE) di Debian 9

Menggunakan Sistem Berbeza? Pengenalan Docker Swarm menukarkan pelayan individu anda ke dalam kumpulan komputer; memudahkan penskalaan, ketersediaan tinggi dan

Cara Menggunakan Docker: Membuat Bekas Docker Pertama Anda

Cara Menggunakan Docker: Membuat Bekas Docker Pertama Anda

Tutorial ini menerangkan asas-asas untuk memulakan Docker. Saya menganggap bahawa anda sudah memasang Docker. Langkah-langkah dalam tutorial ini akan berfungsi pada

Muatkan Baki dengan Docker

Muatkan Baki dengan Docker

Semasa menjalankan aplikasi web, biasanya anda ingin memanfaatkan sepenuhnya sumber anda tanpa perlu menukar perisian anda untuk menggunakan multithreading o

Mulakan Dengan SQL Server 2017 (MS-SQL) di CentOS 7 With Docker

Mulakan Dengan SQL Server 2017 (MS-SQL) di CentOS 7 With Docker

Prasyarat enjin Docker 1.8+. Minimum ruang cakera 4GB. Minimum RAM 4GB. Langkah 1. Pasang Docker Untuk memasang SQL-Server, Docker mus

Memasang Docker CE pada Debian 9

Memasang Docker CE pada Debian 9

Menggunakan Sistem Berbeza? Pengenalan Docker adalah aplikasi yang memungkinkan penggunaan perisian dalam wadah maya. Ia ditulis dalam G

Memasang Docker di Ubuntu 14.04

Memasang Docker di Ubuntu 14.04

Menggunakan Sistem yang berbeza? Docker adalah aplikasi yang memungkinkan untuk menyebarkan program yang dijalankan sebagai wadah. Ia ditulis dalam program Go yang popular

Terapkan Aplikasi Node.js Menggunakan Docker

Terapkan Aplikasi Node.js Menggunakan Docker

Artikel ini akan menunjukkan kepada anda cara menyebarkan aplikasi Node anda dalam wadah Docker. Catatan: Tutorial ini mengandaikan bahawa anda telah memasang dan membaca Docker

Persediaan Sentry melalui Docker di Ubuntu 16.04

Persediaan Sentry melalui Docker di Ubuntu 16.04

Menggunakan Sistem Berbeza? Pengenalan Sentry adalah penyelesaian sumber terbuka untuk pengesanan ralat. Sentry menjejaki pengecualian dan mesej berguna lain dari sana

Cara Memasang Harbour di CentOS 7

Cara Memasang Harbour di CentOS 7

Harbour adalah pelayan pendaftaran kelas perusahaan sumber terbuka yang menyimpan dan menyebarkan gambar Docker. Harbour memperluas sumber terbuka Docker Distribution b

Pasang Rancher OS melalui iPXE

Pasang Rancher OS melalui iPXE

Rancher OS adalah sebaran Linux yang sangat ringan yang dibina di sekitar Docker. OS itu sendiri mempunyai berat sekitar 20MB. Tutorial ini akan membuatkan anda dapat menggunakannya

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

6 Perkara Yang Sangat Menggila Tentang Nintendo Switch

6 Perkara Yang Sangat Menggila Tentang Nintendo Switch

Ramai daripada anda tahu Switch akan keluar pada Mac 2017 dan ciri baharunya. Bagi yang tidak tahu, kami telah menyediakan senarai ciri yang menjadikan 'Tukar' sebagai 'gajet yang mesti ada'.

Janji Teknologi Yang Masih Tidak Ditepati

Janji Teknologi Yang Masih Tidak Ditepati

Adakah anda menunggu gergasi teknologi memenuhi janji mereka? semak apa yang masih belum dihantar.

Fungsi Lapisan Seni Bina Rujukan Data Besar

Fungsi Lapisan Seni Bina Rujukan Data Besar

Baca blog untuk mengetahui lapisan berbeza dalam Seni Bina Data Besar dan fungsinya dengan cara yang paling mudah.

Bagaimana AI Boleh Mengambil Automasi Proses ke Tahap Seterusnya?

Bagaimana AI Boleh Mengambil Automasi Proses ke Tahap Seterusnya?

Baca ini untuk mengetahui cara Kecerdasan Buatan semakin popular di kalangan syarikat berskala kecil dan cara ia meningkatkan kebarangkalian untuk menjadikan mereka berkembang dan memberikan pesaing mereka kelebihan.

CAPTCHA: Berapa Lama Ia Boleh Kekal Sebagai Teknik Berdaya maju Untuk Perbezaan Manusia-AI?

CAPTCHA: Berapa Lama Ia Boleh Kekal Sebagai Teknik Berdaya maju Untuk Perbezaan Manusia-AI?

CAPTCHA telah menjadi agak sukar untuk diselesaikan oleh pengguna dalam beberapa tahun kebelakangan ini. Adakah ia dapat kekal berkesan dalam pengesanan spam dan bot pada masa hadapan?

Keunikan Teknologi: Masa Depan Tamadun Manusia yang Jauh?

Keunikan Teknologi: Masa Depan Tamadun Manusia yang Jauh?

Apabila Sains Berkembang pada kadar yang pantas, mengambil alih banyak usaha kita, risiko untuk menundukkan diri kita kepada Ketunggalan yang tidak dapat dijelaskan juga meningkat. Baca, apakah makna ketunggalan bagi kita.

Teleperubatan Dan Penjagaan Kesihatan Jauh: Masa Depan Ada Di Sini

Teleperubatan Dan Penjagaan Kesihatan Jauh: Masa Depan Ada Di Sini

Apakah teleperubatan, penjagaan kesihatan jauh dan impaknya kepada generasi akan datang? Adakah ia tempat yang baik atau tidak dalam situasi pandemik? Baca blog untuk mencari paparan!

Pernahkah Anda Terfikir Bagaimana Penggodam Mendapatkan Wang?

Pernahkah Anda Terfikir Bagaimana Penggodam Mendapatkan Wang?

Anda mungkin pernah mendengar bahawa penggodam memperoleh banyak wang, tetapi pernahkah anda terfikir bagaimana mereka memperoleh wang seperti itu? Mari berbincang.

Kemas Kini Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Isu Daripada Penyelesaian

Kemas Kini Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Isu Daripada Penyelesaian

Baru-baru ini Apple mengeluarkan macOS Catalina 10.15.4 kemas kini tambahan untuk menyelesaikan masalah tetapi nampaknya kemas kini itu menyebabkan lebih banyak masalah yang membawa kepada pemusnahan mesin mac. Baca artikel ini untuk mengetahui lebih lanjut