> 文档中心 > Docker系列教程(6)Docker 仓库

Docker系列教程(6)Docker 仓库


Docker 仓库

Docker Hub

目前 Docker 官方维护了一个公共仓库 Docker Hub。

大部分需求都可以通过在 Docker Hub 中直接下载镜像来实现。

注册

在 https://hub.docker.com 免费注册一个 Docker 账号。

登录和退出

登录需要输入用户名和密码,登录成功后,我们就可以从 docker hub 上拉取自己账号下的全部镜像。

$ docker login

退出

退出 docker hub 可以使用以下命令

$ docker logout

拉取镜像

你可以通过 docker search 命令来查找官方仓库中的镜像,并利用 docker pull 命令来将它下载到本地。

以 ubuntu 为关键词进行搜索:

$ docker search ubuntu

使用 docker pull 将官方 ubuntu 镜像下载到本地:

$ docker pull ubuntu 

推送镜像

用户登录后,可以通过 docker push 命令将自己的镜像推送到 Docker Hub。

以下命令中的 username 请替换为你的 Docker 账号用户名。

$ docker tag ubuntu:18.04 username/ubuntu:18.04$ docker image lsREPOSITORY      TAG IMAGE ID     CREATED    ...  ubuntu   18.04      275d79972a86 6 days ago ...  username/ubuntu 18.04      275d79972a86 6 days ago ...  $ docker push username/ubuntu:18.04$ docker search username/ubuntuNAME      DESCRIPTIONSTARS  OFFICIAL    AUTOMATEDusername/ubuntu

第三方镜像市场

Docker私有仓库搭建

平时经常用Docker来部署各种环境,发现从DockerHub上下载镜像有时候比较慢。第三方的镜像还可以使用一些国内的镜像仓库来加速,如果我们自己构建的镜像那就不行了。这时候搭建一个私有的镜像仓库很有必要,最近发现Harbor这个企业级镜像仓库,非常好用且功能强大,推荐给大家!

Harbor简介

Harbor是一款开源的Docker镜像仓库服务。提供了基于角色的镜像访问机制,可以保护你的镜像安全。

安装

学习开源项目的第一步,一般都是把它运行起来,我们先来把Harbor运行起来吧!

  • 下载Harbor安装包,这里下载的是v1.10.6离线版本,下载地址:https://github.com/goharbor/harbor/releases

  • 下载完成后上传到Linux服务器,使用如下命令解压;

$ tar xvf harbor-offline-installer-v1.10.6.tgz
  • 修改Harbor的配置文件harbor.yml
## Configuration file of Harbor# hostname设置访问地址,可以使用ip、域名,不可以设置为127.0.0.1或localhost,此处我设置为本地iphostname = 192.168.3.101# Harbor启动后,管理员UI登录的密码,默认是Harbor12345harbor_admin_password = Harbor12345# 认证方式,这里支持多种认证方式,如LADP、本次存储、数据库认证。默认是db_auth,mysql数据库认证auth_mode = db_auth# 是否开启自注册self_registration = on# Token有效时间,默认30分钟token_expiration = 30
  • 使用install.sh脚本安装Harbor:
./install.sh
  • Harbor启动成功后会输出如下信息,这里需要注意的是Harbor会启动Nginx、Redis之类的容器,以前创建过的需要先删除掉,看到started successfully就表示启动成功了;

  • 我们可以使用docker images命令查看下安装Harbor安装的Docker镜像,还挺多的;

  • 访问Harbor的管理界面,输入账号密码admin:Harbor12345登录即可,访问地址:http://192.168.3.101/

使用

接下来我们就可以使用Harbor来管理我们的镜像了。

  • 首先点击新建项目按钮,新建一个项目:

  • 这里新建一个叫做test的私有项目;

  • 由于docker login命令默认不支持http访问,所以我们需要手动开启,使用Vim编辑器修改docker的配置文件daemon.json

vi /etc/docker/daemon.json
  • 添加一行insecure-registries配置即可,允许使用非安全方式访问Harbor镜像仓库,注意不要少了端口号80
{ "registry-mirrors":["https://xxx.aliyuncs.com"], "insecure-registries":["192.168.3.101:80"]}
  • 再次重新启动docker服务;
systemctl restart docker
  • 再次使用install.sh启动Harbor服务;
./install.sh
  • 使用docker login命令访问Harbor镜像仓库,注意加上端口号为80
[root@linux-local harbor]# docker login 192.168.3.101:80Username: adminPassword: WARNING! Your password will be stored unencrypted in /root/.docker/config.json.Configure a credential helper to remove this warning. Seehttps://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded
  • 编写Dockerfile脚本,用于构建Docker镜像,一个最简单的busybox脚本如下;
FROM busybox:latest
  • 使用如下命令构建一个自己的busybox镜像;
docker build -t 192.168.3.101:80/test/busybox .
  • 将自己构建的busybox镜像推送到Harbor镜像仓库;
docker push 192.168.3.101:80/test/busybox
  • 推送成功后在Harbor的管理界面中就可以查看到busybox镜像了;

  • 由于Harbor是用Docker Compose部署的,可以直接使用Docker Compose的命令来停止和启动。

# 停止Harbordocker-compose stop# 启动Harbordocker-compose start

结合SpringBoot使用

如何使用Maven插件一键打包并推送到Harbor镜像仓库。

  • 首先修改项目的pom.xml文件,修改推送的镜像仓库地址,并添加认证信息即可;
     io.fabric8     docker-maven-plugin     0.33.0               build-image      package         build                      http://192.168.3.101:2375    http://192.168.3.101:80             admin   Harbor12345                      192.168.3.101:80/mall-tiny/${project.name}:${project.version}      java:8    ${project.build.finalName}.jar        /        artifact["java", "-jar","/${project.build.finalName}.jar"]macrozheng<!--${project.basedir}-->         ${project.artifactId}    8080:8080    mysql:db     /etc/localtime:/etc/localtime /mydata/app/${project.artifactId}/logs:/var/logs                    Copy to clipboardErrorCopied
  • 推送镜像之前需要在Harbor中创建好mall-tiny项目,否则会无法推送镜像;

  • 之后使用Maven插件打包镜像并推送到Harbor仓库推送过程中输出信息如下;

[INFO] Scanning for projects...[INFO]    
  • 打开Harbor管理页面,发现mall-tiny-fabric镜像已经存在了。

电玩男