• Docker Private Registry

    Docker Registry 分类

        Registry用于保存docker镜像,包括镜像的层次结构和元数据

        用户可自建Registry,也可使用官方的Docker Hub

        分类

            Sponsor Registry:第三方的registry,供客户和Docker社区使用

            Mirror Registry:第三方的registry,只让客户使用

            Vendor Registry:由发布Docker镜像的供应商提供的registry

            Private Registry:通过设有防火墙和额外的安全层的私有实体提供的registry

    Registry(repository and index)

        Repository

            由某特定的docker镜像的所有迭代版本组成的镜像仓库

            一个 Registry中可以存在多个Repository

                Repository可分为“顶层仓库”和“用户仓库”

                用户仓库名称格式为“用户名/仓库名”

            每个仓库可以包含多个Tag(标签) ,每个标签对应一个镜像

    Index

        维护用户帐户、镜像的校验以及公共命名空间的信息

        相当于为Registry提供了一个完成用户认证等功能的检索接口

    创建私有Registry

        使用docker-distribution

Server:
~]#yum -y install docker-distribution
~]#systemctl start docker-distribution
Client:
~]#vim /etc/docker/daemon.json 
{
  "registry-mirrors": ["https://registry.docker-cn.com","https://4r35ny5z.mirror.aliy
uncs.com"],
  "insecure-registries": ["centos37.liuyutang.top:5000"]
}
~]#systemctl restart docker
~]#docker tag myweb:v0.3-11 centos37.liuyutang.top:5000/myweb:v0.3-11
~]#docker push centos37.liuyutang.top:5000/myweb:v0.3-11
  • Harbor

    Harbor简介

        Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全。提升用户使用Registry构建和运行环境传输镜像的效率。Harbor支持安装在多个Registry节点的镜像资源复制,镜像全部保存在私有Registry中, 确保数据和知识产权在公司内部网络中管控。另外,Harbor也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。

    特性

        基于角色的访问控制 - 用户与Docker镜像仓库通过“项目”进行组织管理,一个用户可以对多个镜像仓库在同一命名空间(project)里有不同的权限。

        镜像复制 - 镜像可以在多个Registry实例中复制(同步)。尤其适合于负载均衡,高可用,混合云和多云的场景。

        图形化用户界面 - 用户可以通过浏览器来浏览,检索当前Docker镜像仓库,管理项目和命名空间。

        AD/LDAP 支持 - Harbor可以集成企业内部已有的AD/LDAP,用于鉴权认证管理。

        审计管理 - 所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。

        国际化 - 已拥有英文、中文、德文、日文和俄文的本地化版本。更多的语言将会添加进来。

        RESTful API - RESTful API 提供给管理员对于Harbor更多的操控, 使得与其它管理软件集成变得更容易。

        部署简单 - 提供在线和离线两种安装工具, 也可以安装到vSphere平台(OVA方式)虚拟设备。

    安装配置向导

        https://github.com/vmware/harbor/blob/master/docs/installation_guide.md

    参考手册

        https://vmware.github.io/harbor/cn/

    安装部署

        vmware harbor得借助于docker的单机编排工具:docker-compose 

        使用示例

        vmware harbor安装方式              

            在线安装

            离线安装

            OVA安装

       参考手册:https://github.com/vmware/harbor/blob/master/docs/installation_guide.md

    Harbor安装部署

~]#wget https://storage.googleapis.com/harbor-releases/harbor-offline-installer-v1.5.2.tgz
~]#tar xf harbor-offline-installer-v1.4.0.tgz -C /usr/local/
~]#yum -y install epel-release
~]#cd /usr/local/harbor/
harbor]#vim harbor.cfg
hostname = centos17.liuyutang.top
harbor_admin_password = Harbor12345
db_host = mysql
db_password = root123
harbor]#yum -y install docker-compose
harbor]#./install.sh

    输入用户名和密码登录即可

Docker Private Registry && 资源限制_ Private

        部署仓库

Docker Private Registry && 资源限制_Docker_02

    1、创建用户

Docker Private Registry && 资源限制_ Private_03

    2、创建仓库

Docker Private Registry && 资源限制_ Private_04

    3、使用刚才创建的用户登录,创建项目

Docker Private Registry && 资源限制_Docker_05

~]#docker tag myweb:v0.3-1 centos17.liuyutang.top/devel/myweb:v0.3-1
~]#docker tag myweb:v0.3-1 centos17.liuyutang.top/devel/myweb:v0.3-2
~]#docker tag myweb:v0.3-1 centos17.liuyutang.top/devel/myweb:v0.3-3
~]#vim /etc/docker/daemon.json
{
  "registry-mirrors": ["https://registry.docker-cn.com","https://4r35ny5z.mirror.aliy
uncs.com"],
  "insecure-registries": ["centos17.liuyutang.top"]  使用http协议,默认使用https
}
~]#docker login centos17.liuyutang.top
~]#docker push centos17.liuyutang.top/devel/myweb

  Docker Private Registry && 资源限制_资源限制_06

    可查看推上来的镜像

    使用docker-compose命令可管理harbor服务

~]#docker-compose stop
~]#docker-compose start
Define and run multi-container applications with Docker.

Usage:
  docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]
  docker-compose -h|--help
  • Docker资源限制

    默认情况,在Docker容器中没有任何资源限制

    可以从名称空间(namespace)和控制组(cgroups)两个维度来定义

    Memory

        OOME:如果Linux内核探测到当前宿主机已经没有足够内存可用,用于实现执行某些重要的系统功能,它会抛出一个异常,并且开始启动去killing某些进程来释放内存

            一旦发生OOME,任何进程都有可能被杀死,包括docker daemon在内

            为此,Docker特地调整了docker daemon的OOME优先级,以免它被内核“正法”,但容器的优先级未被调

        限制内存资源

    Docker Private Registry && 资源限制_资源限制_07

        --memory-swap

    Docker Private Registry && 资源限制_ Private_08

    CPU

        默认设置每个容器可以使用宿主机的所有CPU资源

            进程分类

                CPU密集型:调低优先级

                IO密集型

        配置默认CFS调度

Docker Private Registry && 资源限制_资源限制_09

    使用示例:使用stree镜像做压测

内存做限制:
~]#docker pull lorel/docker-stress-ng
~]#docker run --name stress --rm -it -m 256m lorel/docker-stress-ng:latest --vm 2
~]#docker top stress
~]#docker stats stress
CPU做限制:
~]#docker run --name stress -it --rm --cpus 2 lorel/docker-stress-ng:latest --cpu 8 
~]#docker stats stress   
~]#docker kill stress
~]#docker run --name stress -it --cpuset-cpus 0,1 --rm lorel/docker-stress-ng:latest --cpu 8
~]#docker stats stress
~]#docker run --name stress -it --cpu-shares 1024 --rm lorel/docker-stress-ng:latest --cpu 8
~]#docker run --name stress1 -it --cpu-shares 512 --rm lorel/docker-stress-ng:latest --cpu 8