Docker镜像发布到仓库

Docker自定义镜像后,可以发布到公有仓库或者私有仓库,团队其他成员就可以从仓库或者镜像,Docker 仓库分为公有仓库和私有仓库。

公有仓库是对所有人开放的,其中最知名的是 Docker Hub。Docker Hub 是一个官方维护的公共注册中心,包含了大量的镜像,任何人都可以在 Docker Hub 上查找、下载和分享镜像。当你在本地使用 docker pull 命令下载一个不指定仓库地址的公共镜像时,默认会从 Docker Hub 上获取。但是考虑到国内网速比较慢,比较流行的就是阿里云。

私有仓库则是限制访问的,仅供特定用户或组织使用。私有仓库用于内部开发、产品发布和敏感数据管理等场景,可以提供更高的安全性和控制权。一些常见的私有仓库解决方案包括:

  • Docker Registry:Docker 官方提供的开源私有仓库服务器。你可以自己搭建一个 Docker Registry 服务器,用于存储和管理自己的 Docker 镜像。

  • Harbor:一个企业级的容器镜像管理工具,提供私有镜像仓库、用户权限控制、镜像复制和扫描等功能。

  • GitLab、Artifactory 等版本控制工具和软件包管理工具也提供了私有 Docker 仓库的功能。

为了使用私有仓库,你需要在本地 Docker 环境中进行相应的配置,包括登录到私有仓库的账户、权限管理等。然后你可以使用与公有仓库类似的命令进行镜像的上传、下载、推送和拉取操作。例如,使用 docker push 命令将本地镜像推送到私有仓库,使用 docker pull 命令从私有仓库拉取镜像等

一、发布公有仓库阿里云

这里公有仓库以阿里云为=主体进行讲解,进入网址:https://cr.console.aliyun.com/cn-hangzhou/instances

1)创建个人版实例后,需要设置仓库密码,自己自行设置即可

2)设置命名空间

和编码的时候先有报名在有文件是一样的,先创建命令空间,如下:

创建成功后,修改仓库类型为:公开:

 

3)设置后点击创建镜像仓库

4)选择本地仓库,创建镜像仓库

创建后如下:

5)测试将镜像推送到远程仓库

查看镜像

执行推送命令参考上面给的命令复制修改即可

 修改成自己的命令如下:

docker login --username=auguses registry.cn-hangzhou.aliyuncs.com
docker tag cbddedbf8642 registry.cn-hangzhou.aliyuncs.com/augusigls/mytomcat:8
docker push registry.cn-hangzhou.aliyuncs.com/augusigls/mytomcat:8

6)测试

先删除自己本地的制作的镜像,确保没有

从远程获取镜像阿里云提供的语法如下

docker pull registry.cn-hangzhou.aliyuncs.com/augusigls/mytomcat:8

二、发布私有仓库

Docker Registry是官方提供的工具,用于构建私有镜像仓库。Docker Registry本质上是Docker Hub提供的一个镜像,可以直接拉取运行。

2.1.环境搭建

2.1.1.拉取镜像 

docker pull registry

2.1.2.启动Docker Registry 生成容器

docker run -d -p 5000:5000 -v /app/myregistry/:/tmp/registry --privileged=true registry

执行后如下:

2.1.3.验证(查看私服中的所有镜像)

curl http://192.168.42.128:5000/v2/_catalog
Registry会返回json格式的所有镜像目录 ,目前由于并没有推送镜像,所以里面是空的

2.2.向Registry私仓中上传镜像

2.2.1.配置docker允许接收http请求

修改/etc/docker/daemon.json,添加insecure-registries允许http:

{
    "registry-mirros": ["https://xxxx.mirror.aliyuncs.com"],
    "insecure-registries": ["192.168.xxx.xxx:5000"]
}

docker默认不允许http方式推送镜像,通过配置选项来取消这个限制。修改完后如果不生效,建议重启docker

然后重启docker:(新版本的docker会立即生效)

# centos6 的命令
sudo chkconfig daemon-reload
sudo service docker restart

# centos7 的命令
sudo systemctl daemon-reload
sudo systemctl restart docker

2.2.2.推送到私仓

1)添加一个对应私仓地址的tag 
docker tag mytomcat:8 192.168.42.128:5000/mytomcat:8

注意:

java8/tomcat:8是镜像的名称和版本
2)push到私仓
docker push 192.168.42.128:5000/mytomcat:8

3)查看私仓中镜像目录验证

curl http://192.168.42.128:5000/v2/_catalog

4)拉取验证:

 docker pull 192.168.42.128:5000/mytomcat:8

先删除之前的镜像

然后拉取镜像

posted @ 2023-11-23 15:52  酒剑仙*  阅读(474)  评论(0)    收藏  举报