Docker - 私有仓库

Docker 仓库简介

你好,未来的Docker大师们!今天,我们将深入探索Docker仓库的迷人世界。如果你是新手,不用担心;我会一步一步地引导你,就像我多年来教导无数学生那样。让我们开始这段旅程吧!

Docker - Registries

Docker仓库就像是你Docker镜像的图书馆。它是一个可以存储、管理和分发这些镜像的地方。把它想象成你存放所有喜欢的书籍(或者说Docker镜像)的书架,整齐有序,易于访问。

Docker 仓库的类型

Docker仓库主要有两种类型:

  1. 公共仓库(如Docker Hub)
  2. 私有仓库

今天,我们将专注于私有仓库。但为什么你需要一个私有仓库呢?想象一下你在写一个秘密食谱。你不会想把它贴在公共布告板上,对吧?这就是私有仓库的用武之地!

设置私有仓库

让我们卷起袖子,自己设置一个私有仓库。这比你想象的要简单!

步骤 1:拉取仓库镜像

首先,我们需要从Docker Hub拉取官方的仓库镜像。打开终端并输入:

docker pull registry:2

这个命令就像是在请求图书管理员从“Docker Hub”图书馆给你带来“registry”这本书。

步骤 2:运行仓库容器

现在,让我们启动我们的仓库:

docker run -d -p 5000:5000 --name my-registry registry:2

让我们分解一下:

  • -d:在后台运行容器
  • -p 5000:5000:将容器的5000端口映射到宿主机的5000端口
  • --name my-registry:给我们的容器起一个友好的名字
  • registry:2:我们用来创建这个容器的镜像

恭喜你!你现在在机器上运行了自己的私有仓库。

将镜像推送到私有仓库

现在我们有了仓库,让我们放一些镜像进去!

步骤 1:标记镜像

首先,我们需要标记一个镜像,将其与我们的仓库关联:

docker tag my-image:latest localhost:5000/my-image:latest

这就好比在你的书上贴上一个特殊标签,以示它属于你的私人图书馆。

步骤 2:推送镜像

现在,让我们将这个镜像推送到我们的仓库:

docker push localhost:5000/my-image:latest

你已经将你的第一本书加入了私人图书馆!

从私有仓库拉取镜像

要从私有仓库使用镜像,你可以这样拉取:

docker pull localhost:5000/my-image:latest

就这么简单!你现在从私人图书馆中检索书籍。

保护你的私有仓库

现在,我们肯定不希望任何人都能访问我们的私人图书馆,对吧?让我们增加一些安全性。

使用基本认证

以下是设置基本认证的方法:

  1. 创建密码文件:
docker run --entrypoint htpasswd registry:2 -Bbn myuser mypassword > auth/htpasswd
  1. 运行带认证的仓库:
docker run -d \
-p 5000:5000 \
--name secure-registry \
-v "$(pwd)"/auth:/auth \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \
registry:2

现在,你的仓库已经通过用户名和密码进行了保护!

有用的Docker仓库命令

以下是一些你可能发现很有用的命令:

命令 描述
docker pull registry:2 拉取仓库镜像
docker run -d -p 5000:5000 --name my-registry registry:2 运行仓库容器
docker tag image:tag localhost:5000/image:tag 为本地仓库标记镜像
docker push localhost:5000/image:tag 将镜像推送到本地仓库
docker pull localhost:5000/image:tag 从本地仓库拉取镜像
docker search localhost:5000/ 在本地仓库中搜索

结论

就这样,朋友们!你刚刚建立了自己的私有Docker仓库。记住,熟能生巧。不要害怕尝试和尝试不同的事情。谁知道呢?你可能会发现一些新奇而激动人心的东西!

在我多年的教学过程中,我见证了学生从完全的初学者变成了Docker高手。只要有耐心和毅力,你也会达到那个水平。继续努力(双关语)并享受Docker之旅!

Credits: Image by storyset