摘要:目前官方維護了一個公共倉庫,其中已經包括了數量超過的鏡像。推送鏡像我們先制作一個鏡像先制作一個鏡像創建文件內容如下生成鏡像查看鏡像推送制作的鏡像用戶也可以在登錄后通過命令來將自己的鏡像推送到。這將使用官方的鏡像來啟動私有倉庫。
目前 Docker 官方維護了一個公共倉庫 Docker Hub,其中已經包括了數量超過 15,000 的鏡像。大部分需求都可以通過在 Docker Hub 中直接下載鏡像來實現。
Docker Hub 注冊&&登錄你可以在 https://cloud.docker.com 免費注冊一個 Docker 賬號。
可以通過執行 docker login 命令交互式的輸入用戶名及密碼來完成在命令行界面登錄 Docker Hub。
你可以通過 docker logout 退出登錄。
$ docker login Login with your Docker ID to push and pull images from Docker Hub. If you don"t have a Docker ID, head over to https://hub.docker.com to create one. Username: souyunku Password: 輸入密碼 Login Succeeded拉取鏡像
你可以通過 docker search 命令來查找官方倉庫中的鏡像,并利用 docker pull 命令來將它下載到本地。
例如以 nginx 為關鍵詞進行搜索:
$ docker search nginx NAME DESCRIPTION STARS OFFICIAL AUTOMATED nginx Official build of Nginx. 7636 [OK] jwilder/nginx-proxy Automated Nginx reverse proxy for docker con… 1214 [OK] richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable of… 490 [OK] jrcs/letsencrypt-nginx-proxy-companion LetsEncrypt container to use with nginx as p… 279 [OK] kong Open-source Microservice & API Management la… 143 [OK] webdevops/php-nginx Nginx with PHP-FPM 93 [OK] kitematic/hello-world-nginx A light-weight nginx container that demonstr… 88
可以看到返回了很多包含關鍵字的鏡像,其中包括鏡像名字、描述、收藏數(表示該鏡像的受關注程度)、是否官方創建、是否自動創建。
官方的鏡像說明是官方項目組創建和維護的,automated 資源允許用戶驗證鏡像的來源和內容。
根據是否是官方提供,可將鏡像資源分為兩類。
一種是類似 centos 這樣的鏡像,被稱為基礎鏡像或根鏡像。這些基礎鏡像由 Docker 公司創建、驗證、支持、提供。這樣的鏡像往往使用單個單詞作為名字。
還有一種類型,比如 jwilder/nginx-proxy 鏡像,它是由 Docker 的用戶創建并維護的,往往帶有用戶名稱前綴。可以通過前綴 username/ 來指定使用某個用戶提供的鏡像,比如 jwilder 用戶。
另外,在查找的時候通過 --filter=stars=N 參數可以指定僅顯示收藏數量為 N 以上的鏡像。
下載官方 nginx 鏡像到本地。
$ docker pull nginx Using default tag: latest latest: Pulling from library/nginx e7bb522d92ff: Pull complete 6edc05228666: Pull complete cd866a17e81f: Pull complete Digest: sha256:cf8d5726fc897486a4f628d3b93483e3f391a76ea4897de0500ef1f9abcd69a1 Status: Downloaded newer image for nginx:latest root@souyunku:~/mydocker#推送鏡像
我們先制作一個鏡像
先制作一個鏡像創建Dockerfile文件
$ touch Dockerfile
Dockerfile內容如下
FROM nginx RUN echo "Hello, Docker!
" > /usr/share/nginx/html/index.html
生成鏡像
$ docker build -t nginx:v1 . Sending build context to Docker daemon 2.048kB Step 1/2 : FROM nginx ---> 3f8a4339aadd Step 2/2 : RUN echo "Hello, Docker!
" > /usr/share/nginx/html/index.html ---> Using cache ---> 4ac2d12f10cd Successfully built 4ac2d12f10cd Successfully tagged nginx:v1
查看鏡像
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx v1 4ac2d12f10cd 23 minutes ago 108MB推送制作的鏡像
用戶也可以在登錄后通過 docker push 命令來將自己的鏡像推送到 Docker Hub。
以下命令中的 souyunku 請替換為你的 Docker 賬號用戶名。
標記本地鏡像,將其歸入souyunku倉庫
$ docker tag nginx:v1 souyunku/nginx:v1
查看本地鏡像
$ docker images souyunku/nginx:v1 REPOSITORY TAG IMAGE ID CREATED SIZE souyunku/nginx v1 4ac2d12f10cd 41 minutes ago 108MB
推送鏡像
$ docker push souyunku/nginx:v1 The push refers to repository [docker.io/souyunku/nginx] 241cbe531d78: Pushed a103d141fc98: Pushed 73e2bd445514: Pushed 2ec5c0a4cb57: Pushed v1: digest: sha256:aae4f5b270340907da80b220315a0e82a15a9debc4347023a4d6c7a96b9cee40 size: 1155拉取推送的鏡像
先把本地鏡像刪除
$ docker rmi souyunku/nginx:v1 Untagged: souyunku/nginx:v1 $ docker rmi e0b Untagged: nginx:v1 Deleted: sha256:e0bd56806499c0cec4534fe5a85525e45a4d12d8be188d5d498385b0ac36f33e Deleted: sha256:67d1bbe70151d306c0014d6e3f5c1734ba74849b8989bab46e11f560ae8ec46d $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 3f8a4339aadd 5 days ago 108MB
拉取自己docker hub的鏡像
$ docker pull souyunku/nginx:v1 v1: Pulling from souyunku/nginx e7bb522d92ff: Already exists 6edc05228666: Already exists cd866a17e81f: Already exists 9c3032d48351: Pull complete Digest: sha256:aae4f5b270340907da80b220315a0e82a15a9debc4347023a4d6c7a96b9cee40 Status: Downloaded newer image for souyunku/nginx:v1
$ docker images souyunku/nginx:v1 REPOSITORY TAG IMAGE ID CREATED SIZE souyunku/nginx v1 4ac2d12f10cd 2 hours ago 108MB私有倉庫
有時候使用 Docker Hub 這樣的公共倉庫可能不方便,用戶可以創建一個本地倉庫供私人使用。
本節介紹如何使用本地倉庫。
docker-registry 是官方提供的工具,可以用于構建私有的鏡像倉庫。本文內容基于 docker-registry v2.x 版本。
安裝運行 docker-registry 容器運行你可以通過獲取官方 registry 鏡像來運行。
$ docker run -d -p 5000:5000 --restart=always --name registry registry
Unable to find image "registry:latest" locally latest: Pulling from library/registry ab7e51e37a18: Pull complete c8ad8919ce25: Pull complete 5808405bc62f: Pull complete f6000d7b276c: Pull complete f792fdcd8ff6: Pull complete Digest: sha256:9d295999d330eba2552f9c78c9f59828af5c9a9c15a3fbd1351df03eaad04c6a Status: Downloaded newer image for registry:latest 10e12c6983d054da8dc85c017b93e64be0ed11858c0d43b6198bdb652a270d9e root@souyunku:~/mydocker# docker run -d > -p 5000:5000 > -v /opt/data/registry:/var/lib/registry > registry 469f1bbf2a25f6038795014b0d4bce5035c4c937b86f968a0bff8acd28a78720 docker: Error response from daemon: driver failed programming external connectivity on endpoint flamboyant_yalow (734bddc352cd5804aeafe4c940267954a70109eabd557481e3572adc7cc29e9c): Bind for 0.0.0.0:5000 failed: port is already allocated.
這將使用官方的 registry 鏡像來啟動私有倉庫。默認情況下,倉庫會被創建在容器的 /var/lib/registry 目錄下。你可以通過 -v 參數來將鏡像文件存放在本地的指定路徑。例如下面的例子將上傳的鏡像放到本地的 /opt/data/registry 目錄。
$ docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry registry私有倉庫操作 查看本地鏡像
創建好私有倉庫之后,就可以使用 docker tag 來標記一個鏡像,然后推送它到倉庫。例如私有倉庫地址為 127.0.0.1:5000。
先在本機查看已有的鏡像。
$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 3f8a4339aadd 5 days ago 108MB標記本地鏡像
使用 docker tag 將 nginx:latest 這個鏡像標記為 127.0.0.1:5000/nginx:latest。
格式為 docker tag IMAGE[:TAG] [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG]。
$ docker tag nginx:latest 127.0.0.1:5000/nginx:latest上傳標記鏡像
使用 docker push 上傳標記的鏡像,到倉庫
$ docker push 127.0.0.1:5000/nginx:latest The push refers to repository [127.0.0.1:5000/nginx] a103d141fc98: Pushed 73e2bd445514: Pushed 2ec5c0a4cb57: Pushed latest: digest: sha256:926b086e1234b6ae9a11589c4cece66b267890d24d1da388c96dd8795b2ffcfb size: 948
$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE 127.0.0.1:5000/nginx latest 3f8a4339aadd 5 days ago 108MB
用 curl 查看倉庫中的鏡像。
$ curl 127.0.0.1:5000/v2/_catalog {"repositories":["nginx"]}
這里可以看到 {"repositories":["ubuntu"]},表明鏡像已經被成功上傳了。
下載倉庫鏡像先刪除已有鏡像,再嘗試從私有倉庫中下載這個鏡像。
$ docker image rm 127.0.0.1:5000/nginx:latest Untagged: 127.0.0.1:5000/nginx:latest Untagged: 127.0.0.1:5000/nginx@sha256:926b086e1234b6ae9a11589c4cece66b267890d24d1da388c96dd8795b2ffcfb
下載鏡像
$ docker pull 127.0.0.1:5000/nginx:latest latest: Pulling from nginx Digest: sha256:926b086e1234b6ae9a11589c4cece66b267890d24d1da388c96dd8795b2ffcfb Status: Downloaded newer image for 127.0.0.1:5000/nginx:latest
參考:Docker — 從入門到實踐
https://www.gitbook.com/download/pdf/book/yeasy/docker_practice
Contact作者:鵬磊
出處:http://www.ymq.io
Email:admin@souyunku.com
版權歸作者所有,轉載請注明出處
Wechat:關注公眾號,搜云庫,專注于開發技術的研究與知識分享
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/27197.html
摘要:上一篇文章搭建了一個具有基礎功能的私有倉庫,這次來搭建一個擁有權限認證的私有倉庫。移動證書到目錄。身份驗證為用戶創建一個帶有一個條目的密碼文件,密碼為創建倉庫啟動注冊表,指示它使用證書。注冊表在端口默認的端口上運行。 上一篇文章搭建了一個具有基礎功能的私有倉庫,這次來搭建一個擁有權限認證、TLS 的私有倉庫。 環境準備 系統:Ubuntu 17.04 x64 IP:198.13.48...
摘要:私有倉庫是,并在中運行。不要使用或為主機名注冊表服務需要由外部客戶端訪問或,默認為用于訪問和令牌通知服務的協議。打開或關閉,默認打開打開此屬性時,準備腳本創建私鑰和根證書,用于生成驗證注冊表令牌。 上一篇文章搭建了一個具有基礎功能,權限認證、TLS 的私有倉庫,但是Docker Registry 作為鏡像倉庫,連管理界面都沒有,甚至連一些運維必備的功能都是缺失的,還有什么 Docker...
摘要:正好我們在使用作為的倉庫,同時提供了等諸多類型的倉庫功能。值得一提的是,我們可以使用這個倉庫從和下載鏡像,但是我們不能通過這個倉庫推送鏡像到遠程倉庫。 背景 我們一直使用 harbor 作為docker的鏡像倉庫,但Harbor只能作為私有倉庫,當需要Docker Hub 或 Google Cloud Containers 上的鏡像時,我們只能自己手動pull,重新打tag,再push...
摘要:原文地址零基礎入門指南五倉庫是集中存放鏡像的地方。最常使用的公開服務是官方的,這也是默認的,并擁有大量的高質量的官方鏡像。登錄可以通過執行命令交互式的輸入用戶名及密碼來完成在命令行界面登錄。使用將這個鏡像標記為。 原文地址:Docker零基礎入門指南(五) 倉庫( Repository )是集中存放鏡像的地方。一個容易混淆的概念是注冊服務器( Registry )。實際上注冊服務器是管...
摘要:我們平時鏡像都是習慣于放在公共倉庫的,比如。但在企業里,我們經常會需要搭建公司自己的鏡像倉庫。這樣可以將數據持久化,當容器掛掉時鏡像不會丟失。下面會講解如何創建一個協議的高可用倉庫。于是我為集群添加了一個節點,來做集群的鏡像倉庫。 我們平時鏡像都是習慣于放在公共倉庫的,比如Dockerhub, Daocloud。但在企業里,我們經常會需要搭建公司自己的鏡像倉庫。 這篇文章講解如何用d...
閱讀 1158·2023-04-26 01:35
閱讀 2513·2021-11-02 14:44
閱讀 7642·2021-09-22 15:38
閱讀 2205·2021-09-06 15:11
閱讀 3720·2019-08-30 15:53
閱讀 795·2019-08-29 16:54
閱讀 631·2019-08-26 13:48
閱讀 1763·2019-08-26 13:47