docker私有镜像仓库+Harbor

目录

  • Docker Hub
  • Registry
    • 创建私有仓库
  • Harbor
    • 1、下载一个docker-compse工具。
    • 2、harbor离线模式
    • harbor使用
    • docker client的设置

Docker Hub

Docker Hub官网:https://hub.docker.com/

目前 Docker 官方维护了一个公共仓库Docker Hub ,大部分需求都可以通过在 Docker Hub 中直接下载镜像来实现。如果你觉得拉取 Docker Hub的镜像比较慢的话,我们可以配置一个镜像加速器,当然国内大部分云厂商都提供了相应的加速器,简单配置即可。

注册
你可以在 https://cloud.docker.com 免费注册一个 Docker 账号。

登录
通过执行docker login 命令交互式的输入用户名及密码来完成在命令行界
面登录 Docker Hub。

注销
你可以通过docker logout 退出登录。 拉取镜像

Registry

有时候使用 Docker Hub 这样的公共仓库可能不方便,用户可以创建一个本地仓库供私人使用。

docker-registry是官方提供的工具,可以用于构建私有的镜像仓库。本文内容基于 docker-registry v2.x 版本。你可以通过获取官方 registry 镜像来运行

一般情况下,不论是通过commit容器得到的镜像,或者是用dockerfile制作的镜像,如果需要将镜像保存,可以使用我们之前提到的导出导入命令(save -o ; load -i)。导出的包,然后再传给其他dockerHost,这种方法也是可行的。

但往往在公司会有大量的镜像,而且不仅仅是单台的dockerHost。我们迫切需要有一个本地的共用的仓库,来实现多台dockerHost直接拉取镜像而不用手动的将镜像穿来穿去,之前的DockerHub可以帮助我们解决这个问题,当然前提需要申请一个DockerHub的账号,创建一个仓库。但这种方法需要消耗我们的带宽,因为是通过网络传输,既然是网络传输,就需要消耗一定的时间。今天说的Registry仓库,是通过一个容器给我们提供的服务,是比较简易的私有仓库,以后在企业中还会有功能更加完善的Harbor仓库。

创建私有仓库

registry是官方提供的工具,可以用于构建私有的镜像仓库。你可以通过获
取官方 registry 镜像来运行。

1)用docker容器运行registry私有仓库服务。
//下载需要的镜像

[root@docker01 ~]# docker pull registry:2

PS:注意,这里我们使用的是registry:2版本,还有一个registry镜像,这两个没有什么大的区别。registry: 是用Python语言写的,registry:2使用Go语言写的,理论上来说,registry:2这个版本运行更快些。

2)运行私有仓库服务

[root@docker01 ~]# docker run -itd --name registry --restart=always -p 5000:5000 -v /registry:/var/lib/registry registry:2

-p: 端口映射。 宿主机端口:容器暴露的端口。

-p 80 : 如果-p选项后边只写了一个端口,那么这个端口是指容器暴露的端口号随机映射到宿主机(32768开始…)

-P :后边没有接任何的端口参数。那么它会把容器暴露的端口,全部随机的映射到宿主机。

-v: 挂载目录。 宿主机的目录:容器内的目录。

3) 镜像重命名
//因为我们使用的私有镜像,在上传或下载的时候,都需要我们将镜像的名称直接重命名,要注明它私有仓库的IP地址:暴露端口。切记是必须,否则将识别不到仓库而上传或下载失败。

格式为 docker tag IMAGE[:TAG]
[REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG]
[root@docker01 ~]# docker tag registry:2 192.168.1.20:5000/registry

4)编辑docker配置文件
因为docker默认是从dockehub上下载镜像的,需要在本地指定一下私有仓库的IP加端口, 这是因为 Docker 默认不允许非 HTTPS 方式推送镜像。 如果没做这一步,会报HTTPS的错。

//编辑docker的配置文件,指定私有仓库地址

[root@docker01 ~]# vim /usr/lib/systemd/system/docker.service
修改:
ExecStart=/usr/bin/do

你可能感兴趣的:(docker,docker)