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
镜像已经存在了。