搭建docker私有仓库的方法
1、背景介绍
在 Docker 中,当我们执行 docker pull xxx 命令的时候,可能会比较好奇,docker 会去哪儿查找并下载镜像呢?
相关推荐:docker教程
疑问回答:
它实际上是从 registry.hub.docker.com 这个地址去查找,这就是Docker公司为我们提供的公共仓库,上面的镜像,大家都可以到,也可以使用。所以,我们也可以带上仓库地址去拉取镜像,如:docker pull registry.hub.docker.com/library/alpine,不过要注意,这种方式下载的镜像的默认名称就会长一些。
如果要在公司中使用 Docker,我们基本不可能把商业项目上传到公共仓库中,那如果要多个机器共享,又能怎么办呢?
正因为这种需要,所以私有仓库也就有用武之地了。
所谓私有仓库,也就是在本地(局域网)搭建的一个类似公共仓库的东西,搭建好之后,我们可以将镜像提交到私有仓库中。这样我们既能使用 Docker 来运行我们的项目镜像,也避免了商业项目暴露出去的风险。
下面我们用官方提供的registry镜像来搭建私有镜像仓库,当然还有其它很多方法。
2、环境
准备两台安装好docker的服务器: 服务端机器 (主机名为registry):docker私有仓库服务器,运行registry容器; 测试端机器 (主机名为node):普通的docker服务器,在这台服务器上下载一个测试镜像nginx,然后上传到registry服务器进行测试;
3、部署(服务端操作)
-
下载镜像registry
# docker pull registryUsing default tag: latest latest: Pulling from library/registry 81033e7c1d6a: Pull complete b235084c2315: Pull complete c692f3a6894b: Pull complete ba2177f3a70e: Pull complete a8d793620947: Pull complete Digest: sha256:672d519d7fd7bbc7a448d17956ebeefe225d5eb27509d8dc5ce67ecb4a0bce54 Status: Downloaded newer image for registry:latest复制代码
Salin selepas log masuk -
查看镜像
# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE registry latest f32a97de94e1 3 months ago 25.8 MB复制代码
Salin selepas log masuk -
运行registry容器
# docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest
06a972de6218b1f1c3bf9b53eb9068dc66d147d14e18a89ab51db13e339d3dc9
参数说明 -itd:在容器中打开一个伪终端进行交互操作,并在后台运行; -v:把宿主机的/data/registry目录绑定 到 容器/var/lib/registry目录(这个目录是registry容器中存放镜像文件的目录),来实现数据的持久化; -p:映射端口;访问宿主机的5000端口就访问到registry容器的服务了; --restart=always:这是重启的策略,假如这个容器异常退出会自动重启容器; --name registry:创建容器命名为registry,你可以随便命名; registry:latest:这个是刚才pull下来的镜像;
-
测试镜像仓库中所有的镜像
# curl http://127.0.0.1:5000/v2/_catalog
{"repositories":[]}
现在是空的,因为才刚运行,里面没有任何镜像内容。
4、测试镜像仓库(测试端操作)
-
修改源和镜像仓库
# vim /etc/docker/daemon.json{"registry-mirrors": [ "https://registry.docker-cn.com"] }# systemctl restart docker复制代码
Salin selepas log masuk -
下载nginx镜像
# docker pull nginx# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 719cd2e3ed04 2 weeks ago 109MB复制代码
Salin selepas log masuk -
为镜像打标签
# docker tag nginx:latest registry服务器:5000/nginx:kurisu复制代码
Salin selepas log masuk格式说明:Usage: docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
nginx:lastest
这是源镜像,也是刚才pull下来的镜像文件;registry服务器:5000/nginx:kurisu
这是目标镜像,也是registry私有镜像服务器的IP地址和端口;查看效果
# docker images REPOSITORY TAG IMAGE ID CREATED SIZE registry服务器:5000/nginx kurisu 719cd2e3ed04 2 weeks ago 109MB nginx latest 719cd2e3ed04 2 weeks ago 109MB复制代码
Salin selepas log masuk -
上传到镜像服务器
# docker push registry服务器:5000/nginxThe push refers to repository [registry服务器:5000/nginx] Get https://registry服务器:5000/v2/: http: server gave HTTP response to HTTPS client复制代码
Salin selepas log masuk这是报错了,需要https的方法才能上传,我们可以修改下daemon.json来解决:
[root@node ~]# vim /etc/docker/daemon.json { "registry-mirrors": [ "https://registry.docker-cn.com"], "insecure-registries": [ "registry服务器:5000"] }复制代码
Salin selepas log masuk添加私有镜像服务器的地址,注意书写格式为json,有严格的书写要求,然后重启docker服务:
# systemctl restart docker
再次上传:# docker push registry服务器:5000/nginxThe push refers to repository [registry服务器:5000/nginx] d7acf794921f: Pushed d9569ca04881: Pushed cf5b3c6798f7: Pushed kurisu: digest: sha256:079aa93463d2566b7a81cbdf856afc6d4d2a6f9100ca3bcbecf24ade92c9a7fe size: 948复制代码
Salin selepas log masuk -
测试下载镜像
上传测试没问题了,我们接下来测试一下从registry服务器上下载刚才上传的busybox镜像,先删除node主机上的镜像:# docker rmi -f $(docker images -aq)Untagged: registry服务器:5000/nginx:kurisu Untagged: registry服务器:5000/nginx@sha256:079aa93463d2566b7a81cbdf856afc6d4d2a6f9100ca3bcbecf24ade92c9a7fe Untagged: nginx:latest Untagged: nginx@sha256:bdbf36b7f1f77ffe7bd2a32e59235dff6ecf131e3b6b5b96061c652f30685f3a Deleted: sha256:719cd2e3ed04781b11ed372ec8d712fac66d5b60a6fb6190bf76b7d18cb50105 Deleted: sha256:e9b6506fb887de50972aefd99d7c5eb56b1a8e757ed953cdfecb86b5359bcb22 Deleted: sha256:55d9d9692a9615a28d183a42bc3881a72a39393feba3664e669e7affb78daa76 Deleted: sha256:cf5b3c6798f77b1f78bf4e297b27cfa5b6caa982f04caeb5de7d13c255fd7a1e复制代码
Salin selepas log masuk查看一下node主机上的镜像全部删除了:
# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE复制代码
Salin selepas log masuk然后,从registry服务器上下载nginx镜像:
# docker pull registry服务器:5000/nginx:kurisukurisu: Pulling from nginxfc7181108d40: Pull complete c4277fc40ec2: Pull complete 780053e98559: Pull complete Digest: sha256:079aa93463d2566b7a81cbdf856afc6d4d2a6f9100ca3bcbecf24ade92c9a7fe Status: Downloaded newer image for registry服务器:5000/nginx:kurisu复制代码
Salin selepas log masuk查看node主机上的镜像:
# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE registry服务器:5000/nginx kurisu 719cd2e3ed04 2 weeks ago 109MB复制代码
Salin selepas log masuk
查看远程仓库镜像
- 列出所有镜像:
# curl http://registry服务器:5000/v2/_catalog{"repositories":["nginx"]}复制代码
- 列出nginx镜像有哪些tag:
# curl http://registry服务器:5000/v2/nginx/tags/list{"name":"nginx","tags":["kurisu"]}复制代码
Atas ialah kandungan terperinci 搭建docker私有仓库的方法. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Terdapat empat cara untuk membungkus projek dalam PyCharm: Pakej sebagai fail boleh laku yang berasingan: Eksport ke format fail tunggal EXE. Dibungkus sebagai pemasang: Jana Setuptools Makefile dan bina. Pakej sebagai imej Docker: tentukan nama imej, laraskan pilihan binaan dan bina. Pakej sebagai bekas: Tentukan imej untuk dibina, laraskan pilihan masa jalan dan mulakan bekas.

Gambaran Keseluruhan LLaMA-3 (LargeLanguageModelMetaAI3) ialah model kecerdasan buatan generatif sumber terbuka berskala besar yang dibangunkan oleh Syarikat Meta. Ia tidak mempunyai perubahan besar dalam struktur model berbanding LLaMA-2 generasi sebelumnya. Model LLaMA-3 dibahagikan kepada versi skala yang berbeza, termasuk kecil, sederhana dan besar, untuk memenuhi keperluan aplikasi dan sumber pengkomputeran yang berbeza. Saiz parameter model kecil ialah 8B, saiz parameter model sederhana ialah 70B, dan saiz parameter model besar mencapai 400B. Walau bagaimanapun, semasa latihan, matlamatnya adalah untuk mencapai kefungsian berbilang modal dan berbilang bahasa, dan hasilnya dijangka setanding dengan GPT4/GPT4V. Pasang OllamaOllama ialah model bahasa besar sumber terbuka (LL

Seni bina sistem teragih PHP mencapai kebolehskalaan, prestasi dan toleransi kesalahan dengan mengedarkan komponen yang berbeza merentasi mesin yang disambungkan ke rangkaian. Seni bina termasuk pelayan aplikasi, baris gilir mesej, pangkalan data, cache dan pengimbang beban. Langkah-langkah untuk memindahkan aplikasi PHP ke seni bina yang diedarkan termasuk: Mengenal pasti sempadan perkhidmatan Memilih sistem baris gilir mesej Mengguna pakai rangka kerja mikroperkhidmatan Penggunaan kepada pengurusan kontena Penemuan perkhidmatan

Jawapan: Perkhidmatan mikro PHP digunakan dengan HelmCharts untuk pembangunan tangkas dan kontena dengan DockerContainer untuk pengasingan dan kebolehskalaan. Penerangan terperinci: Gunakan HelmCharts untuk menggunakan perkhidmatan mikro PHP secara automatik untuk mencapai pembangunan tangkas. Imej Docker membenarkan lelaran pantas dan kawalan versi perkhidmatan mikro. Piawaian DockerContainer mengasingkan perkhidmatan mikro dan Kubernetes mengurus ketersediaan dan kebolehskalaan bekas. Gunakan Prometheus dan Grafana untuk memantau prestasi dan kesihatan perkhidmatan mikro, serta mencipta penggera dan mekanisme pembaikan automatik.

Penjelasan dan Panduan Pemasangan Terperinci untuk Pinetwork Nodes Artikel ini akan memperkenalkan ekosistem pinetwork secara terperinci - nod pi, peranan utama dalam ekosistem pinetwork, dan menyediakan langkah -langkah lengkap untuk pemasangan dan konfigurasi. Selepas pelancaran Rangkaian Ujian Blockchain Pinetwork, nod PI telah menjadi bahagian penting dari banyak perintis yang aktif mengambil bahagian dalam ujian, bersiap sedia untuk pelepasan rangkaian utama yang akan datang. Jika anda tidak tahu kerja pinet, sila rujuk apa itu picoin? Berapakah harga untuk penyenaraian? Penggunaan PI, perlombongan dan analisis keselamatan. Apa itu Pinetwork? Projek Pinetwork bermula pada tahun 2019 dan memiliki syiling pi cryptocurrency eksklusifnya. Projek ini bertujuan untuk mewujudkan satu yang semua orang boleh mengambil bahagian

Terdapat banyak cara untuk memasang DeepSeek, termasuk: Menyusun dari Sumber (untuk pemaju berpengalaman) menggunakan pakej yang dikompilasi (untuk pengguna Windows) menggunakan bekas docker (untuk yang paling mudah, tidak perlu bimbang tentang keserasian) Dokumen rasmi dengan berhati -hati dan menyediakannya sepenuhnya untuk mengelakkan masalah yang tidak perlu.

Containerization meningkatkan prestasi fungsi Java dengan cara berikut: Pengasingan sumber - memastikan persekitaran pengkomputeran terpencil dan mengelakkan perbalahan sumber. Ringan - mengambil kurang sumber sistem dan meningkatkan prestasi masa jalan. Permulaan pantas - mengurangkan kelewatan pelaksanaan fungsi. Ketekalan - Asingkan aplikasi dan infrastruktur untuk memastikan tingkah laku yang konsisten merentas persekitaran.

Gunakan aplikasi Java EE menggunakan bekas Docker: Cipta Fail Docker untuk mentakrifkan imej, bina imej, jalankan bekas dan petakan port, dan kemudian akses aplikasi dalam penyemak imbas. Contoh aplikasi JavaEE: REST API berinteraksi dengan pangkalan data, boleh diakses pada localhost selepas penggunaan melalui Docker.
