在上文 《了解和使用 Docker》 之后,反响不错,也上了热榜。本来是想直接整理一下容器编排工具 Docker Swarm 和 K8s 博文的,但是半路杀出了这个活动,为表敬意,先参与一波吧。
本文主要介绍一下容器镜像仓库的使用,包括公有仓库和自己搭建的私有仓库。
Docker hub 是 Docker 官方维护的一个公共仓库,大部分需求都可以通过在 Docker Hub 中直接下载镜像来实现。
因为 hub.docker.com 是在国外的,所以无法访问该网址,我们平时使用时可以通过配置镜像加速来拉取镜像。《了解和使用 Docker》中有镜像加速配置,这里就不再次陈述了。
但是如果要将自己的镜像推送到公共仓库中还需要有一个账号登录到 hub.docker.com 中才可以 push。
通过下图链接注册一个账号并登录
登录成功后需要自己创建一个仓库,用来存储镜像。
镜像仓库创建好之后,就可以将本地的容器镜像 push 到我们所创建的镜像仓库中,并向全球用户共享容器镜像。
我们以 centos 镜像为例,重新打一个 tag 后进行推送
用刚才注册的账号登录 Docker hub
# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: xxx
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded 成功
为容器镜像重新打标记
# docker tag centos:latest xxxx/centos:v1
上传容器镜像至 docker hub
# docker push xxxx/centos:v1
The push refers to repository [docker.io/xxxx/centos]
74ddd0ec08fa: Mounted from library/centos
v1: digest: sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc size: 529
至此镜像就上传成功了,同时别的用户也可以使用这个镜像。
如果企业需要搭建自己的镜像仓库,可通过 Harbor 进行搭建,可以自己管理自己的镜像,DevOps 工作也比较方便,重要的是不会受网络的影响。 这个其实就跟 Maven 私有仓库一样。
在搭建 Harbor 前需要安装 Docker、Docker Compose 环境,这里不做详细描述。
下载harbor离线安装包
# wget https://github.com/goharbor/harbor/releases/download/v2.4.1/harbor-offline-installer-v2.4.1.tgz
解压harbor离线安装包
# tar xf harbor-offline-installer-v2.4.1.tgz
修改配置文件内容
# vim harbor.yml
# Configuration file of Harbor
# The IP address or hostname to access admin UI and registry service.
# DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
hostname: 192.168.10.155
# http related config
http:
# port for http, default is 80. If https enabled, this port will redirect to https port
port: 80
# https related config
https:
# https port for harbor, default is 443
port: 443
# The path of cert and key files for nginx
certificate: 证书
private_key: 密钥
#访问密码
harbor_admin_password: 12345
......
执行预备、安装脚本
# ./prepare & ./install.sh
安装好之后就可以通过界面访问了
修改docker daemon使用 Harbor
# vim /etc/docker/daemon.json
# cat /etc/docker/daemon.json
{
"insecure-registries": ["192.168.10.155"]
}
重启加载daemon配置
# systemctl daemon-reload
# systemctl restart docker
登录 Harbor
# docker login 192.168.10.155
Username: admin 用户名 admin
Password: 密码 12345
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded 登陆成功
推送本地容器镜像到harbor仓库
# docker push 192.168.10.155/library/centos:v1
通过 Harbor 界面我们就可以看到刚才推送的镜像了。