用 registry 搭建 docker 本地镜像仓库实战记录

目标:掌握使用 docker commit , docker save, docker load, docker push 等命令 自制本地镜像仓库 local registry 及上传下载镜像
1.使用 docker commit 命令制作 tomcat 镜像,最新版的 tomcat 启动后,登录 localhost:8080 不会出现欢迎页面,原因是 webapps 目录是空的,所以,我对容器做了如下处理:

  1. 启动 tomcat 容器,将 webapps.dist 目录下的所有内容剪切到 webapps目录下,并删除默认的欢迎页面
docker run -it --name my-web tomcat /bin/bash
mv webapps.dist/* ./webapps/
rm webapps/ROOT/index.jsp
  1. 修改启动脚本 /usr/local/tomcat/bin/catalina.sh , 让脚本启动后自动生成 index.html 。在 脚本的 echo “Tomcat started.” 行后面加上一行: echo “hello, $(hostname -i)” > /usr/local/tomcat/webapps/ROOT/index.html 即可
    在这里插入图片描述
echo "hello, $(hostname -i)" > /usr/local/tomcat/webapps/ROOT/index.html
  1. 使用 docker commit 命令将 上面修改后的 容器保存成镜像
docker commit my-web test/tomcat:t1

在这里插入图片描述
4. 使用 docker save 命令将 test/tomcat:t1 镜像保存成 本地 tar 文件
在这里插入图片描述

docker save -o tomcat-t1.tar test/tomcat:t1
  1. 将 tomcat-t1.tar 文件 传到 worker3 服务器上
scp tomcat-t1.tar root@192.168.250.188:/root/

在这里插入图片描述
6. 在 worker3 服务器 加载 test/tomcat:t1 镜像

docker load -i tomcat-t1.tar
docker images

在这里插入图片描述
7. 拉取 registry 镜像 ,运行 registry 容器搭建 本地 镜像仓库

### registry 是一个镜像分发服务
### 关于 registry 的用法 可以参考官方文档: https://distribution.github.io/distribution/about/deploying/ 
docker run -d --hostname local-registry --name my-image-repository --restart=always -p 5000:5000 -v /mnt/images/repository/:/var/lib/registry/docker/registry/ registry

在这里插入图片描述
8. 在 /etc/hosts 文件里面 配置 192.168.250.188 local-registry

### 192.168.250.188 为 worker3 服务器的 ip
sed -i '4a 192.168.250.188 local-registry' /etc/hosts

在这里插入图片描述
9. 为镜像 test/tomcat:t1 打一个新标签 ,然后将 镜像 push 到本地镜像仓库

### 第7步中设置的 --hostname local-registry 就是 本地镜像仓库的 主机名称,5000 是 registry 服务的端口 
docker tag test/tomcat:t1 local-registry:5000/local/tomcat:t1 
docker push local-registry:5000/local/tomcat:t1

在这里插入图片描述
注意:这一步报了一个错误 ‘Get “https://local-registry:5000/v2/”: http: server gave HTTP response to HTTPS client’ , 这个报错 的原因是本地仓库使用的 http协议,docker 默认的是 https 安全协议,解决这个问题,只需要在 /etc/docker/daemon.json 文件里面增加 一个 “insecure-registries”: [“local-registry:5000”] 即可

### 只需要 加 "local-registry:5000" 这一个就可以了,另外两个是其它的镜像仓库
cat /etc/docker/daemon.json
{
"insecure-registries": ["192.168.250.66:5000","my-repository:5000","local-registry:5000"]
}
### 重启 docker 服务
systemctl daemon-reload
systemctl restart docker.service

在这里插入图片描述
10. 将 之前的镜像 push 到本地镜像仓库,删除 镜像 再从本地镜像仓库拉取镜像

docker push local-registry:5000/local/tomcat:t1
docker images
docker rmi local-registry:5000/local/tomcat:t1
docker pull local-registry:5000/local/tomcat:t1

在这里插入图片描述
11. 在 worker3 服务器上 用 镜像 local-registry:5000/local/tomcat:t1 启动容器

docker run -it --name my-web local-registry:5000/local/tomcat:t1 /bin/bash 
###在容器里面启动 tomcat
/usr/local/tomcat/bin/catalina.sh start
### 使用 curl 命令测试 localhost:8080
curl localhost:8080

在这里插入图片描述
说明:

  1. registry 是一个镜像分发服务,要充分理解 “docker run -d --hostname local-registry --name my-image-repository --restart=always -p 5000:5000 -v /mnt/images/repository/:/var/lib/registry/docker/registry/ registry” 的含义
    例如,–hostname 指定的 是 本地镜像仓库 的 主机名,/mnt/images/repository/ 是镜像在 服务器上的存储位置
    在这里插入图片描述
  2. 如果要在其它节点上 使用 local-registry:5000 镜像仓库,其它节点机器上以下两个地方需要做好相关配置:
    /etc/hosts 文件要配置 192.168.250.188 local-registry
    /etc/docker/daemon.json 文件需要配置
    {
    “insecure-registries”: [“local-registry:5000”]
    }

后面会再写一篇文章介绍 在 内网环境 的 k8s 集群 中 如何使用 docker 的本地 镜像仓库

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值