镜像仓库
- 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直接拉取镜像而不用手动的将镜像传来传去。
- 服务端:
- 创建基于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

- 运行私有仓库服务
[root@docker-03 ~]# docker run -d --name registry --restart=always -p 5000:5000 -v /registry:/var/lib/registry registry:2
-v: 挂载目录。 宿主机的目录(如果没有此目录会自动创建):容器内的目录。
(数据卷:实现容器与宿主机之间的共享,通过一个目录"卷")
--restart=always: 随着docker服务的启动而启动此容器
- 客户端192.168.10.11:
- 给镜像添加标签(要上传的镜像名需要注明私有仓库的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
- 编辑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

- 查看仓库有哪些镜像
[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"]} //并看到详细的自定义 版本号
- 客户端下载:
[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:
- 下载一个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

- 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/
- 拷贝文件,并修改文件
[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

- 安装harbor,安装完成自行启动
[root@docker-03 harbor]# docker load < harbor.v2.8.3.tar.gz 将镜像导入镜像库(可选)

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

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

- 访问地址与账号密码
http://192.168.10.13
默认账户密码:admin/Harbor12345


- 另外可以自行启动
--启动
[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的设置
- 更改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"]
- 客户端登陆
[root@docker-01 ~]# docker login -u admin -p Harbor12345 192.168.10.13

- 上传私有镜像
镜像名称要修改成:私有仓库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
创建命名空间——名称——镜像仓库——创建镜像仓库——(仓库名称于镜像名称相同)——本地仓库
1万+

被折叠的 条评论
为什么被折叠?



