docker镜像仓库

镜像仓库

  • Docker Hub (公有仓库)

对外使用的镜像为公有仓库,自己公司使用的为私有

Docker Hub官网:https://hub.docker.com/   无法访问,需要做VPN

目前 Docker 官方维护了一个公共仓库Docker Hub ,大部分需求都可以通过在 Docker Hub 中直接下载镜像来实现。

  如果你觉得拉取 Docker Hub 的镜像比较慢的话,我们可以配置一个镜像加速器,当然国内大部分云厂商都提供了相应的加速器,简单配置即可。

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

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

  注销:你可以通过docker logout 退出登录。

  • 阿里云镜像仓库:www.aliyun.com

(https://cr.console.aliyun.com/cn-beijing/instances)

账号注册登陆后,搜“容器镜像服务”--->点“容器镜像服务”--->"管理控制台"--->"个人实例"--->"创建命名空间"--->"创建镜像仓库"--->选择仓库"管理"--->可以查看“操作指南”

限额300

按照以上命令依次输入

登录阿里云镜像仓库Docker Registry

拉取nginx镜像

[root@docker-03 ~]# docker pull nginx:1.20

修改镜像名称

[root@docker-03 ~]# docker tag nginx:1.20 crpi-q2jhlmbymah95cms.cn-beijing.personal.cr.aliyuncs.com/whh-test/whh-test:nginx

将镜像推送到Registry

[root@docker-03 ~]# docker push crpi-q2jhlmbymah95cms.cn-beijing.personal.cr.aliyuncs.com/whh-test/whh-test:nginx

在阿里云镜像仓库查看镜像是否推送成功

附带了解:镜像加速器配置https://cr.console.aliyun.com/cn-beijing/instances/mirrors

补充:Docker命令tab自动补全:

yum install bash-completion

重新登录shell

  • Registry (私有仓库)

  公司服务器大部分都是私网,为了安全和方便可以搭建私有仓库,而不用完全手动的去导入导出镜像,因为是局域网拉取速度非常快,可以节省带宽和大量时间。

  公司会有大量的镜像,而且不仅仅是单台的dockerHost。我们需要有一个本地的共用的仓库,来实现多台dockerHost直接拉取镜像而不用手动的将镜像传来传去。

  

  1. 服务端:
  1. 创建基于registry的私有仓库192.168.10.13

用docker容器运行registry私有仓库服务

registry是官方打包好的服务,端口为5000,就像其他虚拟出来的web服务一样

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

下载镜像:(在客户端先下载nginx镜像再创建私有仓库)

[root@docker-03 ~]# docker pull registry:2

如果是拖包的话使用以下命令加载

docker load -i registry.tar

[root@docker-03 ~]# docker images

  1. 运行私有仓库服务

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

-v:  挂载目录。  宿主机的目录(如果没有此目录会自动创建):容器内的目录。

(数据卷:实现容器与宿主机之间的共享,通过一个目录"卷")

--restart=always: 随着docker服务的启动而启动此容器

  1. 客户端192.168.10.11
  1. 给镜像添加标签(要上传的镜像名需要注明私有仓库的ip)

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

拉取nginx镜像

[root@docker-01 ~]# docker pull nginx:1.20

[root@docker-01 ~]# docker images

[root@docker-01 ~]# docker tag nginx:1.20 192.168.10.13:5000/nginx

  1. 编辑docker配置文件(需指定私有仓库可以http方式访问)

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

在客户机上编辑docker的配置文件,指定私有仓库地址

[root@docker-01 ~]# vim /etc/docker/daemon.json

添加:

{

  "insecure-registries":["192.168.10.13:5000"]

}  

重新加载systemd、重启docker服务

[root@docker-01 ~]# systemctl daemon-reload

[root@docker-01 ~]# systemctl restart docker

上传测试:

[root@docker-01 ~]# docker push 192.168.10.13:5000/nginx

  1. 查看仓库有哪些镜像

[root@docker-03 ~]# cd /registry/docker/registry/v2/repositories/

[root@docker-03 repositories]# ls

检索

[root@docker-03 ~]# curl -XGET http://192.168.10.13:5000/v2/_catalog

  -X/--request  指定什么命令

  -G/--get 以get的方式来发送数据

  -E/--cert cert[:passwd] 客户端证书文件和密码 (SSL)

  -T/--upload-file  上传文件

[root@docker-03 ~]# curl http://localhost:5000/v2/_catalog    #查看本地私有仓库镜像

curl http://192.168.10.13:5000/v2/nginx/tags/list

{"name":"nginx","tags":["latest"]} //并看到详细的自定义 版本号

  1. 客户端下载:

[root@docker-01 ~]# docker rmi 192.168.10.13:5000/nginx

[root@docker-01 ~]# docker pull 192.168.10.13:5000/nginx

[root@docker-01 ~]# docker images

  • Harbor(企业级私有仓库)

  Harbor是构建企业级私有docker镜像的仓库的开源解决方案,它是Docker Registry的更高级封装。

  它除了提供友好的Web UI界面,角色和用户权限管理,用户操作审计(用户都做了哪些操作)等功能外,

Harbor安装有在线安装和离线安装:

 **//这里选用离线安装的方式。** 

服务端配置192.168.10.13

  1. 下载一个docker-compose工具。

  docker-compse工具的作用是编排镜像,可以像剧本一样把要做的事先规划好,例如要启动的镜像、镜像名字、运行机制、数据卷,实现更加便捷、快速。

  harbor安装好之后会有一个docker-compose.yml文件,安装docker-compse工具就是为了支持这个功能从github上下载docker-compse工具(需vpn连接下载)

https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-linux-x86_64   

删除私有仓库

删除镜像和容器

下载完成之后,移动到/usr/local/bin/目录(直接下载到环境变量目录)

删除上边做的registry私有仓库

[root@docker-03 ~]# docker ps -a

[root@docker-03 ~]# docker rm -f 0bcd67594961

[root@docker-03 ~]# docker ps -a

[root@docker-03 ~]# docker rmi $(docker images -q)

[root@docker-03 ~]# docker images

将相关软件包拖进当前目录

[root@docker-03 ~]# ls

[root@docker-03 ~]# mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose

使docker-compose命令成为系统命令,不需要输绝对路径

#增加可执行权限

[root@docker-03 ~]# chmod +x /usr/local/bin/docker-compose

#查看版本号,并验证命令可用

[root@docker-03 ~]# docker-compose -v

  1. harbor离线模式安装

有在线和离线两种方式,考虑到网速原因,这里我们采用离线下载方式(需vpn连接下载)

 https://github.com/goharbor/harbor/releases/download/v2.8.3/harbor-offline-installer-v2.8.3.tgz

#将harbor包解压到/usr/local/下

[root@docker-03 ~]# tar xf harbor-offline-installer-v2.8.3.tgz -C /usr/local/

  

  1. 拷贝文件,并修改文件

[root@docker-03 ~]# cd /usr/local/harbor/

[root@docker-03 harbor]# cp harbor.yml.tmpl harbor.yml

[root@docker-03 harbor]# vim harbor.yml

hostname: 192.168.10.13

port: 80

harbor_admin_password: Harbor12345         #登录用户admin,密码Harbor12345

--将https的都注释掉,否则安装失败

#https:

  # https port for harbor, default is 443

 # port: 443

  # The path of cert and key files for nginx

 # certificate: /your/certificate/path

 # private_key: /your/private/key/path

  1. 安装harbor,安装完成自行启动

[root@docker-03 harbor]# docker load < harbor.v2.8.3.tar.gz   将镜像导入镜像库(可选

 准备

[root@docker-03 harbor]# ./prepare

安装

[root@docker-03 harbor]# ./install.sh

  1. 访问地址与账号密码

http://192.168.10.13

默认账户密码:admin/Harbor12345

  1. 另外可以自行启动

--启动

[root@docker-03 harbor]# docker-compose up -d 

--停止

docker-compose stop

--重启

docker-compose restart

---------------------------------------------------------------

**最终harbor还是由一个个容器组成一个架构,实现私有仓库的功能**

[root@docker-03 harbor]# docker ps 

harbor不能启动时,可能原因是关闭防火墙后,docker服务未重启,此时只要将docker服务重启即可,systemctl restart docker

Creating network "harbor_harbor" with the default driver

ERROR: Failed to Setup IP tables: Unable to enable SKIP DNAT rule:  (iptables failed: iptables --wait -t nat -I DOCKER -i br-3f262068d609

 -j RETURN: iptables: No chain/target/match by that name. (exit status 1))

---------------------------------------------

已有仓库 library

可以新建项目仓库

  • docker client的设置

  1. 更改docker配置文件

[root@docker-01 ~]# vim /etc/docker/daemon.json

{

"insecure-registries":["http://192.168.10.13"]

}

重新加载systemd、重启docker服务

[root@docker-01 ~]# systemctl daemon-reload

[root@docker-01 ~]# systemctl restart docker

注:指定多个私有仓库时,  "insecure-registries": ["192.168.10.13","192.168.10.12:5000"]

  1. 客户端登陆  

[root@docker-01 ~]# docker login -u  admin -p Harbor12345 192.168.10.13

  1. 上传私有镜像  

镜像名称要修改成:私有仓库ip/项目名称/镜像名称

[root@docker-01 ~]# docker tag nginx:1.20 192.168.10.13/library/nginx

[root@docker-01 ~]# docker push 192.168.10.13/library/nginx

再次删除:

docker rmi 192.168. 10.13/library/centos7

重新pull:

docker pull 192.168.10.13/library/centos7

退出:docker logout 192.168.10.13

镜像默认存储位置:/data/registry/docker/registry/v2/repositories/library

创建命名空间——名称——镜像仓库——创建镜像仓库——(仓库名称于镜像名称相同)——本地仓库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值