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复制代码
-
查看映像
# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE registry latest f32a97de94e1 3 months ago 25.8 MB复制代码
-
執行registry容器
-
docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest
參數說明 -itd:在容器中開啟一個偽終端進行互動操作,並在背景運作; -v:把宿主機的/data/registry目錄綁定 到 容器/var/lib/registry目錄(這個目錄是registry容器中存放鏡像檔的目錄),來實現資料的持久化; -p:映射埠;存取宿主機的5000埠就存取到registry容器的服務了; --restart=always:這是重啟的策略,如果這個容器異常退出會自動重新啟動容器; --name registry:建立容器命名為registry,你可以隨便命名; registry:latest:這個是剛才pull下來的鏡像;# 06a972de6218b1f1c3bf9b53eb9068dc66d147d14e18a89ab51db13e339d3dc9
# 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复制代码
下載nginx映像<pre class="brush:php;toolbar:false"># docker pull nginx# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 719cd2e3ed04 2 weeks ago 109MB复制代码</pre>
為映像打標籤
# docker tag nginx:latest registry服务器:5000/nginx:kurisu复制代码
- 格式說明:Usage: docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
nginx:lastest
這是來源鏡像,也是剛才pull下來的鏡像檔;
檢視效果registry伺服器:5000/nginx:kurisu
這是目標鏡像,也是registry私有鏡像伺服器的IP位址和連接埠; -
上傳到鏡像伺服器# 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复制代码
這是報錯了,需要https的方法才能上傳,我們可以修改下daemon.json來解決:
[root@node ~]# vim /etc/docker/daemon.json { "registry-mirrors": [ "https://registry.docker-cn.com"], "insecure-registries": [ "registry服务器:5000"] }复制代码
新增私有映像伺服器的位址,注意書寫格式為json,有嚴格的書寫要求,然後重新啟動docker服務:
# systemctl restart docker
再次上傳:
# docker images REPOSITORY TAG IMAGE ID CREATED SIZE registry服务器:5000/nginx kurisu 719cd2e3ed04 2 weeks ago 109MB nginx latest 719cd2e3ed04 2 weeks ago 109MB复制代码
# docker push registry服务器:5000/nginxThe push refers to repository [registry服务器:5000/nginx] d7acf794921f: Pushed d9569ca04881: Pushed cf5b3c6798f7: Pushed kurisu: digest: sha256:079aa93463d2566b7a81cbdf856afc6d4d2a6f9100ca3bcbecf24ade92c9a7fe size: 948复制代码
- 測試下載映像
- 上傳測試沒問題了,我們接下來測試一下從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复制代码查看一下node主機上的鏡像全部刪除了:
# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE复制代码
# 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复制代码查看node主機上的映像:###
# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE registry服务器:5000/nginx kurisu 719cd2e3ed04 2 weeks ago 109MB复制代码##########查看遠端倉庫映像#########列出所有映像:#### ##
# curl http://registry服务器:5000/v2/_catalog{"repositories":["nginx"]}复制代码######列出nginx映像有哪些tag:######
# curl http://registry服务器:5000/v2/nginx/tags/list{"name":"nginx","tags":["kurisu"]}复制代码
以上是搭建docker私有倉庫的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

在Linux上使用Docker可以提高開發效率和簡化應用部署。 1)拉取Ubuntu鏡像:dockerpullubuntu。 2)運行Ubuntu容器:dockerrun-itubuntu/bin/bash。 3)創建包含nginx的Dockerfile:FROMubuntu;RUNapt-getupdate&&apt-getinstall-ynginx;EXPOSE80。4)構建鏡像:dockerbuild-tmy-nginx.。 5)運行容器:dockerrun-d-p8080:80

Docker在Linux上可以簡化應用部署和管理。 1)Docker是容器化平台,將應用及其依賴打包進輕量、可移植容器。 2)在Linux上,Docker利用cgroups和namespaces實現容器隔離和資源管理。 3)基本用法包括拉取鏡像和運行容器,高級用法如DockerCompose可定義多容器應用。 4)調試常用dockerlogs和dockerexec命令。 5)性能優化可通過多階段構建減小鏡像大小,保持Dockerfile簡潔是最佳實踐。

Docker是一種基於Linux容器技術的工具,用於打包、分發和運行應用,提升應用的可移植性和可擴展性。 1)通過dockerbuild和dockerrun命令,可以構建和運行Docker容器。 2)DockerCompose用於定義和運行多容器的Docker應用,簡化微服務管理。 3)使用多階段構建可以優化鏡像大小,提升應用啟動速度。 4)查看容器日誌是調試容器問題的有效方法。

Docker 容器啟動步驟:拉取容器鏡像:運行 "docker pull [鏡像名稱]"。創建容器:使用 "docker create [選項] [鏡像名稱] [命令和參數]"。啟動容器:執行 "docker start [容器名稱或 ID]"。檢查容器狀態:通過 "docker ps" 驗證容器是否正在運行。

查看 Docker 日誌的方法包括:使用 docker logs 命令,例如:docker logs CONTAINER_NAME使用 docker exec 命令運行 /bin/sh 並查看日誌文件,例如:docker exec -it CONTAINER_NAME /bin/sh ; cat /var/log/CONTAINER_NAME.log使用 Docker Compose 的 docker-compose logs 命令,例如:docker-compose -f docker-com

可以通過以下步驟查詢 Docker 容器名稱:列出所有容器(docker ps)。篩選容器列表(使用 grep 命令)。獲取容器名稱(位於 "NAMES" 列中)。

在 Docker 中創建容器: 1. 拉取鏡像: docker pull [鏡像名] 2. 創建容器: docker run [選項] [鏡像名] [命令] 3. 啟動容器: docker start [容器名]

退出 Docker 容器的四種方法:容器終端中使用 Ctrl D 快捷鍵容器終端中輸入 exit 命令宿主機終端中使用 docker stop <container_name> 命令宿主機終端中使用 docker kill <container_name> 命令(強制退出)


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境