5、Docker 私有仓库搭建 及 docker-compose 体系规划

Docker 私有仓库搭建 及 docker-compose 体系规划

说明

在基于docker的部署体系中,往往会用到 image 模式发布java web项目,这时候就需要用到私有仓库来存放 image
本章内容包含两部分,分别是 docker 的私有仓库搭建和devops体系的docker-compose 规划。

一. 镜像查找
  • 首先,登陆 docker hub 官方网站,搜索所需软件的 docker images,本文选择registry
    镜像搜索
    注意:镜像选择原则为,优先选择Docker Certified的镜像,其次选择 official image的镜像 ,再次选择 stardownload 数量最高的镜像。

  • 然后,查看镜像详情信息,获取镜像拉取得脚本。
    镜像描述

  • tags作为docker image的镜像版本,我们根据业务需要选择合适的 tags

二. 镜像获取

根据我们从docker hub 官网查询 registry 的image说明,选取2.7.1版本作为我们devops体系的私有仓库镜像。拉取脚本如下:

docker pull registry:2.7.1

拉取镜像

三. 镜像导入导出

有时候会遇到需要内网安装的docker环境的业务场景,这时候没有网络,我们可以通过 docker savedocker load 命令从有外网的机器导出镜像,再导入到需要安装的内网环境。

1、镜像导出

docker 镜像导出 命令语法: docker save < imageid > -o <imagefile.tar>

  • 查看本地images列表,并记录 image id
docker images
  • 导出image到指定目录
docker save f32a97de94e1 -o /external/export_images/registry_2.7.1.tar

镜像导出

2、镜像导入

docker 镜像导入 命令语法: docker load -i <imagefile.tar>

docker load -i /external/import_images/registry_2.7.1.tar

镜像导入
注意:镜像导入成功后,我们发现镜像的 repositroytag均为 none

3、解决导入后 repository和tag名称为none的问题

根据原导出镜像的repository和tag信息,设置镜像的tag即可。命令语法:docker tag [image id] [name]:[版本]

docker tag f32a97de94e1 registry:2.7.1

修改tag

四. 容器创建

重点: 考虑到docker run命令每次重新执行后,都会重新划分虚拟目录,所以我们需要把数据目录和配置目录映射到物理磁盘下。

1、映射目录分配

查看registryDockerfile 可知,registry:2.7.1的内容存储卷为/var/lib/registry
registry dockerfile截图
按照 devops的物理映射目录规划,将 /var/lib/registry 映射到 registry 容器的 data 目录,规划如下:

/devops/registry/data:/var/lib/registry
2、端口映射规划

registry私有仓库的端口为 5000,外部映射端口也是用5000,故端口规划如下:

5000:5000
3、容器创建

目录创建脚本

sudo mkdir -p /devops/registry/data

容器创建脚本

docker run -d --name registry --restart always \
           --publish 5000:5000 \
           -v /devops/registry/data:/var/lib/registry \
           registry:2.7.1

说明:

  • -d:容器以后台持续运行模式启动,-d--detach 的缩写
  • --name registry :容器名称为 registry
  • --restart always :容器重启策略,采用always在容器退出时总是重启容器
  • --publish 5000:5000:容器内的5000端口映射到容器外的5000端口(左侧为外部端口)
  • -v /devops/registry/data:/var/lib/registry:容器内的/var/lib/registry目录映射到容器外的/devops/registry/data目录,-v--volume的缩写
  • registry:2.7.1:镜像名称

创建结果如下:registry docker run

五. 私有仓库访问

docker 默认的远程仓库为 https://registry.hub.docker.com/v1/repositories ,如需访问我们自己搭建的私有仓库,需要配置docker的信任服务器。
操作如下:

1、配置docker的私有仓库访问地址
cd /etc/docker/
vi daemon.conf

注意:daemon.conf 扩展名必须为 .conf

添加如下配置信息:

文件中添加如下配置 (ip地址为私有仓库的ip地址,本架构中私有仓库在本机)
{ “insecure-registries”:[“127.0.0.1:5000”] }

注意:添加国内的docker image 镜像站,方式与此相同

{ “registry-mirrors”: [“https://cr.console.aliyun.com”] }

配置结果如下图所示:
私有仓库配置

2、将daemon.conf添加到docker启动项中
sudo vi /lib/systemd/system/docker.service

ExecStart 配置的上一行 添加如下内容

EnvironmentFile=/etc/docker/daemon.conf

3、重启docker服务
sudo systemctl daemon-reload
sudo service docker restart
六. 私有仓库推送(拉取)镜像

注意:为演示image推送,我们先从官方拉取busybox镜像,再推送至私有仓库

1、本地镜像准备
  • 拉取镜像
docker pull busybox:latest
  • 查看本地镜像列表,并记录 image id,(busybox 的镜像ID为b534869c81f0
docker images
2、创建私有仓库busybox镜像的tag
docker tag b534869c81f0 192.168.43.150:5000/busybox:latest
3、推送镜像
docker push 192.168.43.150:5000/busybox:latest
4、查看推送结果
curl http://192.168.43.150:5000/v2/_catalog

镜像推送至私有仓库

七. 私有仓库常用API

官方文档 https://docs.docker.com/registry/spec/api/#introduction

常用API如下

  • /v2/_catalog :镜像目录
  • /v2/busybox/tags/list :指定镜像的tag列表
八. docker-compose 规划

docker-compose 通过一个docker-compose.yml 模板文件,将docker run命令的参数按照 yml文件格式编写,实现一条命令管理所有docker容器的功能。

我们的devops的docker容器规划,采用 version 2 规范编写docker-compose.yml文件,物理文件规划以 /devops 目录作为devops的根目录,docker-compose.yml文件存放在此目录下。然后在该目录下以各个容器名称创建文件夹,并根据所需物理映射的内容将文件目录分为confdatalog目录,规划结构样例如下:
目录规划
registry私有仓库为例,构建docker-compose.yml文件,未来所有新的docker容器脚本直接添加到此模板,并创建相应映射的物理文件目录即可。
docker-compose.yml 文件内容如下

version: '2'
services: 
  registry: 
    container_name: registry
    image: registry:2.7.1
    restart: always
    ports:
      - "5000:5000"
    volumes: 
      - "./registry/data:/var/lib/registry"

注意: 对口映射和磁盘映射的语法与docker run 稍有差别。

启动 docker-compose 的容器集合,命令如下:

docker-compose up -d

容器启动效果
docker-compose常用命令:

  • docker-compose up [options] [--scale SERVICE=NUM...] [SERVICE...] :创建容器,-d 后台运行。
  • docker-compose ps [options] [SERVICE...] :查看容器信息
  • docker-compose logs [options] [SERVICE...] :查看容器日志
  • docker-compose stop [options] [SERVICE...] :停止容器
  • docker-compose start [SERVICE...] :启动已存在的容器
  • docker-compose restart [options] [SERVICE...] : 重启容器
  • docker-compose rm [options] [SERVICE...] :删除(停止状态的)服务容器

注意: docker-compose 所有命令执行,必须在 docker-compose.yml文件所在目录下执行,如/devops

devops 完整的目录规划、docker-compose.yml 及 nginx配置,请到作者码云下载:https://gitee.com/tysite/devops

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值