第5课 本地镜像发布到私有库

第5课 本地镜像发布到私有库

掏出魔法传送门和镜像宝箱)小魔法师们!今天我们要学习镜像传送魔法——把本地制作的魔法镜像发布到私有魔法库!这样就能安全地分享我们的独家魔法了!🔮✨

🧙♂️ 第一章:为什么需要私有魔法库?

想象一下:你发明了超厉害的”熊猫奶茶魔法”,但:

  • 🚫 不想公开到Docker Hub(公共魔法集市)

  • 🔒 只想给你的魔法小队使用

  • 🏰 在公司/学校内部共享

这时候就需要搭建私有魔法库(Private Registry)!


📦 第二章:搭建私有魔法库

下载镜像Docker Registry
+ docker pull registry

方法一:用Docker官方Registry镜像(最简单) 

# 启动私有Registry容器(使用特定版本标签)
docker run -d \
  -p 5000:5000 \
  --name private-registry \
  --restart always \
  registry:2.8.2

# 或者使用最新稳定版本
docker run -d \
  -p 5000:5000 \
  --name private-registry \
  --restart always \
  registry:latest
# 现在私有库就在 http://localhost:5000 运行啦!

方法二:带认证的安全魔法库

# 1. 创建认证目录
mkdir -p auth

# 2.使用httpd镜像生成密码文件(使用正确的命令)
docker run --rm --entrypoint htpasswd httpd:2.4 \
  -Bbn admin securepassword123 > auth/htpasswd

# 3. 启动带认证的Registry
docker run -d \
  -p 5000:5000 \
  --name private-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.8.2

# 4. 测试登录
docker login localhost:5000
# 用户名: admin
# 密码: securepassword123

💡 参数解释

  • -B:使用bcrypt加密(更安全)

  • -b:批量模式(从命令行读取密码)

  • -n:不加密密码(输出到标准输出)

  • admin:用户名

  • securepassword123:密码


🐼 第三章:制作本地魔法镜像

我们先做个简单的可爱的熊猫魔法镜像:

1. 创建Dockerfile:

FROM alpine:3.18
CMD echo "🐼 Hello from $(hostname)! Magic milk tea is ready!"

2. 构建镜像:

docker build -t panda-tea:v1.0 .

3. 测试运行:

docker run panda-tea:v1.0
# 输出:🐼 Hello from abc123! Magic milk tea is ready!

📤 第四章:标记镜像(打上私有库地址)

关键步骤! 镜像名称必须包含私有库地址:

# 给镜像打上私有库标签
docker tag panda-tea:v1.0 localhost:5000/panda-tea:v1.0

# 如果是远程私有库,使用IP或域名
docker tag panda-tea:v1.0 192.168.1.100:5000/panda-tea:v1.0
docker tag panda-tea:v1.0 registry.example.com:5000/panda-tea:v1.0

为什么?
就像寄快递要写地址一样!localhost:5000/告诉Docker:”这个镜像要送到本地5000端口的私有库”


🚀 第五章:推送镜像到私有库

# 推送到私有Registry
docker push localhost:5000/panda-tea:v1.0

如果看到类似这样的输出,就成功了! 

The push refers to repository [localhost:5000/panda-tea]
a1b2c3d4: Pushed 
v1.0: digest: sha256:... size: 527

📥 第六章:从私有库拉取镜像

其他魔法师可以这样获取你的镜像: 

# 从私有库拉取镜像
docker pull localhost:5000/panda-tea:v1.0

# 运行测试
docker run localhost:5000/panda-tea:v1.0

🔐 第七章:远程私有库和认证

如果私有库在别的机器上:

1. 首先配置Docker允许非安全Registry(允许不安全注册中心)

# 编辑Docker配置文件
sudo nano /etc/docker/daemon.json

# 添加内容:
{
  "insecure-registries": ["192.168.1.100:5000", "registry.example.com:5000"]
}

# 重启Docker服务
sudo systemctl restart docker

2. 登录认证(如果设置了密码)

# 登录到私有Registry
docker login 192.168.1.100:5000

# 输入用户名和密码
Username: admin
Password: password123

3. 推送和拉取

# 标记镜像
docker tag panda-tea:v1.0 192.168.1.100:5000/panda-tea:v1.0

# 推送到远程Registry
docker push 192.168.1.100:5000/panda-tea:v1.0

# 从其他机器拉取
docker pull 192.168.1.100:5000/panda-tea:v1.0

🎯 第八章:实战完整流程

假设我们在3台机器上共享镜像:

在机器A(私有库服务器):

# 启动私有Registry
docker run -d -p 5000:5000 --name registry registry:2.8.2

# 配置允许非安全Registry
echo '{"insecure-registries": ["server-a-ip:5000"]}' | sudo tee /etc/docker/daemon.json
sudo systemctl restart docker

在机器B(开发机):

 
 
# 构建镜像
docker build -t my-app:v2.0 .

# 标记并推送
docker tag my-app:v2.0 server-a-ip:5000/my-app:v2.0
docker push server-a-ip:5000/my-app:v2.0

在机器C(生产机):

# 拉取并运行
docker pull server-a-ip:5000/my-app:v2.0
docker run -d server-a-ip:5000/my-app:v2.0

💡 第九章:高级技巧

查看私有库中的镜像:

# 查看所有镜像
curl -X GET http://localhost:5000/v2/_catalog

# 查看特定镜像的标签列表
curl -X GET http://localhost:5000/v2/panda-tea/tags/list

删除私有库中的镜像(谨慎操作!):

# 启用垃圾回收功能
docker exec registry bin/registry garbage-collect /etc/docker/registry/config.yml

🎩 魔法总结:

  1. 搭建私有库docker run -d -p 5000:5000 registry:2

  2. 标记镜像docker tag 镜像名 私有库地址/镜像名:标签

  3. 推送镜像docker push 私有库地址/镜像名:标签

  4. 拉取镜像docker pull 私有库地址/镜像名:标签

(魔法传送门发出耀眼蓝光)✨现在你学会了镜像传送魔法!可以在团队内部安全地分享你的魔法镜像了!

记住:私有库就像专属魔法图书馆,只对信任的人开放! 快去建立你们的魔法知识宝库吧!📚🐋

给TA打赏
共{{data.count}}人
人已打赏
Docker

第4课 Docker Swarm--终极军团魔法

2025-8-27 18:56:28

Docker

第6课 docker swarm下mysql主从服务器的搭建

2025-8-29 18:53:40

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索