博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker Registry服务器部署配置
阅读量:5926 次
发布时间:2019-06-19

本文共 4368 字,大约阅读时间需要 14 分钟。

  hot3.png

Docker Registry服务器部署非常简单,只需要合并运行镜像即可,由于Docker Registry服务器整合很多服务,配置的参数非常多,包括:存储,Redis,Auth,日志,中间件,监控,HTTP,通知,健康检查,代理,兼容性

部署Registry服务器

docker run -d -p 5000:5000 --restart=always --name registry \  -v `pwd`/data:/var/lib/registry \  registry:2

部署服务器非常简单,只需要一条命令,映射5000端口到容器,restart机制为总是,并分配当前目录下的data目录作为容器卷,存储镜像数据,你可以配置HTTPS方式的访问,如果需要配置TSL请参考Docker官方文档,如果是在局域网内访问这个方式即可满足需求

测试Registry服务

在测试之前必须要理解镜像的命名,理解下面的两条命令

docker pull ubuntu

这个命令是从Docker官方的hub拉取ubuntu镜像,这是简写的方式,完整的命令是这样的docker pull docker.io/library/ubuntu

docker pull localhost:5000/foo/bar

这个命令是从localhost:5000拉取foo/bar镜像,接下来尝试从Docker Hub拉取镜像并推送到本地的Registry服务器,以Ubuntu为例

从Docker Hub拉取Ubuntu镜像并命名为localhost:5000/ubuntu

docker pull ubuntu && docker tag ubuntu localhost:5000/ubuntu

推送镜像到本地的Registry服务器

docker push localhost:5000/ubuntu

删除宿主机的localhost:5000/ubuntu并拉取Registry服务器的ubuntu镜像

docker rmi -f localhost:5000/ubuntudocker pull localhost:5000/ubuntu

配置Registry服务器

配置Registry服务器的方式有两种,一种是在运行容器指定环境变量重写配置文件,另一种是直接映射yaml配置文件,建议使用配置文件的方式,这样迁移方便

环境变量重写配置选项

比如重写配置文件存储选项,文件配置如下所示

storage:  filesystem:    rootdirectory: /var/lib/registry

那么运行Registery容器时就需要指定环境变量REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/somewhere

docker run -d -p 5000:5000 --restart=always --name registry \  -v `pwd`/data:/var/lib/registry \  -e  REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/somewhere \  registry:2

覆盖配置文件

可以使用挂载卷的方式覆盖配置,个人建议使用这种方式配置

docker run -d -p 5000:5000 --restart=always --name registry \             -v `pwd`/config.yml:/etc/docker/registry/config.yml \             registry:2

挂载当前目录下config.yml覆盖容器的/etc/docker/registry/config.yml文件,下面是整个配置文件,参数非常之多,解释一些常用的

version: 0.1log: ## 日志选项  level: debug  formatter: text  fields:    service: registry    environment: staging  hooks:    - type: mail      disabled: true      levels:        - panic      options:        smtp:## 邮件通知配置          addr: mail.example.com:25          username: mailuser          password: password          insecure: true        from: sender@example.com        to:          - errors@example.comloglevel: debug # 即将弃用: 使用Log替代storage:##存储选项,  filesystem: ## 本地文件系统,也可以是云分布式存储,比如微软Azure,亚马逊S3,swift,OSS    rootdirectory: /var/lib/registry    maxthreads: 100 ##最大线程数auth: #用户验证  silly:    realm: silly-realm    service: silly-service  token:    realm: token-realm    service: token-service    issuer: registry-token-issuer    rootcertbundle: /root/certs/bundle  htpasswd:    realm: basic-realm    path: /path/to/htpasswdmiddleware:##中间件类型有registry,repository,storage三种,每种中间件可以像下面的方式使用  registry:    - name: ARegistryMiddleware      options:        foo: bar  storage:    - name: ARegistryMiddlewarereporting:##监控,可以使用一些在线的监控工具包括bugsnag,newrelic  newrelic:    licensekey: newreliclicensekey    name: newrelicname    verbose: truehttp:## 由Nginx提供的HTTP服务,可以把它理解成配置Nginx  addr: localhost:5000  prefix: /my/nested/registry/  host: https://myregistryaddress.org:5000  secret: asecretforlocaldevelopment  relativeurls: false  tls:    certificate: /path/to/x509/public    key: /path/to/x509/private    clientcas:      - /path/to/ca.pem      - /path/to/another/ca.pem    letsencrypt:      cachefile: /path/to/cache-file      email: emailused@letsencrypt.com  debug:    addr: localhost:5001  headers:    X-Content-Type-Options: [nosniff]notifications:## 事件通知,当Registry服务器发生拉取,推送等时发送事件到endpoints  endpoints:    - name: alistener      disabled: false      url: https://my.listener.com/event      headers: 
timeout: 500 threshold: 5 backoff: 1000redis:##这个用过的都懂 addr: localhost:6379 password: asecret db: 0 dialtimeout: 10ms readtimeout: 10ms writetimeout: 10ms pool: maxidle: 16 maxactive: 64 idletimeout: 300shealth:## 健康检查包括存储驱动,file,http服务,tcp的可用性检查 storagedriver: enabled: true interval: 10s threshold: 3 file: - file: /path/to/checked/file interval: 10s http: - uri: http://server.to.check/must/return/200 headers: Authorization: [Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==] statuscode: 200 timeout: 3s interval: 10s threshold: 3 tcp: - addr: redis-server.domain.com:6379 timeout: 3s interval: 10s threshold: 3proxy:## 可以镜像Docker Hub的仓库 remoteurl: https://registry-1.docker.io username: [username] password: [password]compatibility: schema1: signingkeyfile: /etc/registry/key.json

配置文件好长,请根据需求配置

转载于:https://my.oschina.net/freax/blog/825925

你可能感兴趣的文章
关于ubuntu 14.04 dpkg 问题
查看>>
使用php最容易犯的11个MySQL错误。
查看>>
有梦想就有前进的动力
查看>>
windows 提权 cve-2018-8897
查看>>
局域网屏幕监控软件
查看>>
hibernate.cfg.xml的一些事
查看>>
Java IO(一)
查看>>
SpringBoot获取ApplicationContext
查看>>
RHCE 学习笔记(24) - LVM 逻辑卷
查看>>
多线程介绍和多线程模块-lock-互斥锁
查看>>
Windows用户安全小技巧
查看>>
centos服务器解决vsftp连接时的“550 Create directory operation failed.”错误
查看>>
secureCRT常用设置
查看>>
oop1
查看>>
Angular变化检测机制
查看>>
SaltStack入门篇之远程执行和配置管理
查看>>
我的友情链接
查看>>
commons-lang3:DateUtils
查看>>
MySQL5.6二进制软件包编译安装详解(三)
查看>>
grub4dos中的不容易理解的问题
查看>>