pierone, 具有S3后端不可变标签和SCM源跟踪的STUPS Docker 注册表

分享于 

7分钟阅读

GitHub

  繁體 雙語
Docker Registry with S3 backend, immutable tags and SCM source tracking
  • 源代码名称:pierone
  • 源代码网址:http://www.github.com/zalando-stups/pierone
  • pierone源代码文档
  • pierone源代码下载
  • Git URL:
    git://www.github.com/zalando-stups/pierone.git
    Git Clone代码到本地:
    git clone http://www.github.com/zalando-stups/pierone
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/zalando-stups/pierone
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    Pier Pier one Registry Registry Registry Travis CI build statusCoveralls status

    Docker 注册表,带有不可变标签,repo 权限,S3后端和 OAuth。

    插件开发

    服务是用Clojure编写的。 你需要使用 Leiningen 来构建或者开发。

    要为应用程序启动web服务器,你需要在本地主机上运行一个运行着空pierone数据库(。postgres/postgres作为用户/通过)的PostgreSQL实例。 运行开发web服务器,包括:

    $ lein repl
    (go)

    web服务器将在端口 8080上运行。 你可以在 http://localhost:8080/ui/ 找到 Swagger UI。

    使用不同客户端版本进行的

    在 Docker 中使用 Docker: https://hub.docker.com/r/library/docker/

    例如:

    `sh # First push the image $ docker push my-machine-hostname:8080/foo/bar:123 # Try to pull it using a specific version of docker (1.11) # Start the daemon $ docker run -it --privileged --name docker11 -d docker:1.11-dind --insecure-registry my-machine-hostname:8080 # Execute the command $ docker run -it --rm --link docker11:docker docker:1.11 docker pull my-machine-hostname:8080/foo/bar:123 #.. . execute more commands # Stop the daemon $ docker rm -fv docker11 `

    测试

    使用代码覆盖率报告运行单元测试:

    $ lein cloverage
    $ docker pull busybox
    $ docker tag busybox localhost:8080/example/foobar:1.0
    $ docker push localhost:8080/example/foobar:1.0
    $ docker pull localhost:8080/example/foobar:1.0

    建筑

    $ lein do uberjar, scm-source, docker build

    运行

    Pier支持许多 环境变量 来使用AmazonS3后端。 你将需要一个PostgreSQL数据库( 数据库架构在首次启动时自动创建)。

    # run Pier One locally with file backend and connect to localhost PostgreSQL# NOTE: we simply use the"host" networking hack here to connect to the localhost DB$ docker run -it -p 8080:8080 --net=host stups/pierone
    DB_SUBNAME Postgres连接字符串,比如"//pierone.foo.eu-west-1.rds.amazonaws.com:5432/pierone?ssl=true". 默认值为"//localhost:5432/pierone" DB_PASSWORD Postgres密码。 默认值为"Postgres"。DB_USER Postgres用户名。 默认值为"postgres"。HTTP_ALLOW_PUBLIC_READ 允许在不进行身份验证的情况下下载 Docker 图像( 比如。 将Pier作为开放源代码项目的注册表运行。 默认为"false"。HTTP_TEAM_SERVICE_URL URL,通过用户的UID获取团队成员信息。 HTTP_TOKENINFO_URL OAuth2令牌信息 URL ( 比如。 你可以离开这个配置属性禁用OAuth认证。 基于 HTTP_IIDINFO_URL IID信息URL的基于授权的AWS实例身份。 仅在 HTTP_TOKENINFO_URL 同时设置时启用。 为了完全验证 Postgres SSL证书,PGSSLMODE 设置为"验证完整"。 STORAGE_S3_BUCKET 仅适用于S3后端: Amazon S3 bucket名称。 NREPL_ENABLED 设置为 true,启动应用程序之前启动NREPL服务器。 默认值为 falseNREPL_PORT 指定NREPL服务器的端口。 默认为随机端口。API_SNS_REGION SNS主题区域( 已经推标签上的通知) API_SNS_TOPIC_ARN SNS主题阿恩( 推送标签上的通知)

    有关deploying的详细信息,请参阅Pier安装指南 one。

    安全性

    第一个使用 OAuth 2保护它的资源。 当前实现假定:

    • OAuth令牌信息包含带有用户ID的uid 字段( 比如。 ")"
    • 可以在团队服务中查找用户成员资格组
    • 认证的用户可以提取所有 Docker 图像
    • 认证的用户只能推到他们的团队信息库

    由于 Docker CLI只支持基本身份验证,因此Pier使用特殊用户名:

    oauth2:OAUTH2_TOKEN_GOES_HERE

    这个字符串必须用base64编码并放入 ~/.docker/config.json:

    {
     "auths": {
     "pierone.example.org": {
     "email": "no-mail-required@example.org",
     "auth": "BASE64_ENCODED_AUTH_STRING" }
     }
    }
    此外,为了支持来自已知 AWS EC2机器的映像,实例标识文档( http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-identity-documents.html ) 可以用于认证OAuth2令牌,它还使用特殊用户名:
    instance-identity-document:MIAGCSqG.. . AAAAAAA

    可以从下面的EC2实例概要文件中获取 MIAG... 字符串 http://169.254.169.254/latest/dynamic/instance-identity/pkcs7 它不是一个通用用例,但Pier一个 CLI API可以用于生成 ~/.docker/config.json:

    python3 -c "from pierone.api import docker_login_with_iid; docker_login_with_iid('pierone.example.org')"

    使用 Pier一个允许配置具有适当身份验证凭据的Docker 客户机。

    许可证

    版权所有 © 2015 Zalando传感器

    在Apache许可以证下许可以证版本 2.0 ("许可以证") ;你可以能不使用这里文件,除了符合许可以证。 你可以获得许可证的副本在*

    http://www.apache.org/licenses/LICENSE-2.0

    在规定的法律或者书面许可下,在许可条款下分发的软件在不保证任何种类的担保或者条件的前提下分发,或者明示或者隐含。 查看许可协议下特定语言的许可权限和限制的许可证。


    Source  DOC  Docker  TRAC  is_cn_en  Backend  
    相关文章