Add results for docker repositories.

- Add results for Registry2.
- Add results for Sonatype Nexus.
- Add results for Artifactory.

Change-Id: I57700e04bf3f417b5fd960113bab23deeadf56f1
This commit is contained in:
listomin 2016-03-24 13:49:21 +03:00
parent d43a16fc67
commit 69e65047de
62 changed files with 1814 additions and 0 deletions

View File

@ -21,6 +21,7 @@ Contents
introduction.rst introduction.rst
methodologies/index.rst methodologies/index.rst
test_plans/index.rst test_plans/index.rst
test_results/index.rst
labs/index.rst labs/index.rst
test_results/index test_results/index

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View File

@ -0,0 +1,587 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<config xmlns="http://artifactory.jfrog.org/xsd/1.7.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.jfrog.org/xsd/artifactory-v1_7_0.xsd">
<offlineMode>false</offlineMode>
<helpLinksEnabled>true</helpLinksEnabled>
<fileUploadMaxSizeMb>100</fileUploadMaxSizeMb>
<dateFormat>dd-MM-yy HH:mm:ss z</dateFormat>
<addons>
<showAddonsInfo>true</showAddonsInfo>
<showAddonsInfoCookie>1457516661046</showAddonsInfoCookie>
</addons>
<security>
<anonAccessEnabled>true</anonAccessEnabled>
<anonAccessToBuildInfosDisabled>false</anonAccessToBuildInfosDisabled>
<hideUnauthorizedResources>false</hideUnauthorizedResources>
<passwordSettings>
<encryptionPolicy>supported</encryptionPolicy>
<expirationPolicy>
<enabled>false</enabled>
<passwordMaxAge>60</passwordMaxAge>
<notifyByEmail>true</notifyByEmail>
</expirationPolicy>
</passwordSettings>
<ldapSettings/>
<ldapGroupSettings/>
<userLockPolicy>
<enabled>false</enabled>
<loginAttempts>5</loginAttempts>
</userLockPolicy>
</security>
<backups>
<backup>
<key>backup-daily</key>
<enabled>true</enabled>
<cronExp>0 0 2 ? * MON-FRI</cronExp>
<retentionPeriodHours>0</retentionPeriodHours>
<createArchive>false</createArchive>
<excludedRepositories/>
<sendMailOnError>true</sendMailOnError>
<excludeBuilds>false</excludeBuilds>
<excludeNewRepositories>false</excludeNewRepositories>
</backup>
<backup>
<key>backup-weekly</key>
<enabled>false</enabled>
<cronExp>0 0 2 ? * SAT</cronExp>
<retentionPeriodHours>336</retentionPeriodHours>
<createArchive>false</createArchive>
<excludedRepositories/>
<sendMailOnError>true</sendMailOnError>
<excludeBuilds>false</excludeBuilds>
<excludeNewRepositories>false</excludeNewRepositories>
</backup>
</backups>
<indexer>
<enabled>false</enabled>
<cronExp>0 23 5 * * ?</cronExp>
</indexer>
<localRepositories>
<localRepository>
<key>docker-local</key>
<type>docker</type>
<includesPattern>**/*</includesPattern>
<repoLayoutRef>simple-default</repoLayoutRef>
<dockerApiVersion>V2</dockerApiVersion>
<forceDockerAuthentication>false</forceDockerAuthentication>
<forceNugetAuthentication>false</forceNugetAuthentication>
<blackedOut>false</blackedOut>
<handleReleases>true</handleReleases>
<handleSnapshots>true</handleSnapshots>
<maxUniqueSnapshots>0</maxUniqueSnapshots>
<suppressPomConsistencyChecks>true</suppressPomConsistencyChecks>
<propertySets>
<propertySetRef>artifactory</propertySetRef>
</propertySets>
<archiveBrowsingEnabled>true</archiveBrowsingEnabled>
<snapshotVersionBehavior>unique</snapshotVersionBehavior>
<localRepoChecksumPolicyType>client-checksums</localRepoChecksumPolicyType>
<calculateYumMetadata>false</calculateYumMetadata>
<yumRootDepth>0</yumRootDepth>
<debianTrivialLayout>false</debianTrivialLayout>
</localRepository>
</localRepositories>
<remoteRepositories/>
<virtualRepositories/>
<proxies/>
<reverseProxies>
<reverseProxy>
<key>nginx</key>
<webServerType>nginx</webServerType>
<artifactoryAppContext>artifactory</artifactoryAppContext>
<publicAppContext>artifactory</publicAppContext>
<serverName>172.20.9.16</serverName>
<serverNameExpression xsi:nil="true"/>
<sslCertificate xsi:nil="true"/>
<sslKey xsi:nil="true"/>
<dockerReverseProxyMethod>portPerRepo</dockerReverseProxyMethod>
<useHttps>false</useHttps>
<useHttp>true</useHttp>
<sslPort>443</sslPort>
<httpPort>80</httpPort>
<reverseProxyRepositories>
<reverseProxyRepoConfigs>
<repoRef>docker-local</repoRef>
<serverName>172.20.9.16</serverName>
<port>5000</port>
</reverseProxyRepoConfigs>
</reverseProxyRepositories>
<artifactoryServerName>172.20.9.16</artifactoryServerName>
<upStreamName>artifactory</upStreamName>
<artifactoryPort>8081</artifactoryPort>
</reverseProxy>
</reverseProxies>
<propertySets>
<propertySet>
<name>artifactory</name>
<visible>false</visible>
<properties>
<property>
<name>licenses</name>
<closedPredefinedValues>true</closedPredefinedValues>
<multipleChoice>true</multipleChoice>
<predefinedValues>
<predefinedValue>
<value>AFL-3.0</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>AGPL-V3</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>APL-1.0</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>Apache-2.0</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>Apache-1.0</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>Apache-1.1</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>APSL-2.0</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>Artistic-License-2.0</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>Attribution</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>BSL-1.0</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>CA-TOSL-1.1</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>CDDL-1.0</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>CDDL-1.0.1</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>CDDL-1.1</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>Codehaus</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>CCAG-2.5</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>CPAL-1.0</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>CUAOFFICE-1.0</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>Day</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>Day-Addendum</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>Bouncy-Castle</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>EUDATAGRID</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>Enovi</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>CPL-1.0</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>LGPL-2.1</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>LGPL-3.0</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>Historical</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>HSQLDB</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>IBMPL-1.0</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>IPAFont-1.0</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>ISC</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>Lucent-1.02</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>MirOS</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>MS-PL</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>MS-RL</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>JA-SIG</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>BSD</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>MIT</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>JSON</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>Motosoto-0.9.1</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>Eclipse-1.0</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>ECL2</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>Eiffel-2.0</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>JTidy</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>JTA-Specification-1.0.1B</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>Entessa-1.0</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>EUPL-1.1</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>Fair</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>Frameworx-1.0</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>GPL-2.0</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>GPL-2.0+CE</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>GPL-3.0</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>Mozilla-1.1</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>Multics</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>NASA-1.3</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>NTP</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>NAUMEN</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>Nethack</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>Nokia-1.0a</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>NOSL-3.0</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>OCLC-2.0</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>Openfont-1.1</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>Opengroup</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>OpenSymphony</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>OSL-3.0</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>PHP-3.0</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>PostgreSQL</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>Public Domain</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>Public Domain - SUN</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>PythonPL</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>PythonSoftFoundation</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>QTPL-1.0</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>Real-1.0</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>RPL-1.5</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>RicohPL</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>SimPL-2.0</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>Sleepycat</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>SUNPublic-1.0</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>Sybase-1.0</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>TMate</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>UoI-NCSA</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>IU-Extreme-1.1.1</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>VovidaPL-1.0</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>W3C</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>wxWindows</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>Xnet</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>ZPL-2.0</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>ZLIB</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>TPL</value>
<defaultValue>false</defaultValue>
</predefinedValue>
<predefinedValue>
<value>Not Searched</value>
<defaultValue>false</defaultValue>
</predefinedValue>
</predefinedValues>
</property>
</properties>
</propertySet>
</propertySets>
<repoLayouts>
<repoLayout>
<name>maven-2-default</name>
<artifactPathPattern>[orgPath]/[module]/[baseRev](-[folderItegRev])/[module]-[baseRev](-[fileItegRev])(-[classifier]).[ext]</artifactPathPattern>
<distinctiveDescriptorPathPattern>true</distinctiveDescriptorPathPattern>
<descriptorPathPattern>[orgPath]/[module]/[baseRev](-[folderItegRev])/[module]-[baseRev](-[fileItegRev])(-[classifier]).pom</descriptorPathPattern>
<folderIntegrationRevisionRegExp>SNAPSHOT</folderIntegrationRevisionRegExp>
<fileIntegrationRevisionRegExp>SNAPSHOT|(?:(?:[0-9]{8}.[0-9]{6})-(?:[0-9]+))</fileIntegrationRevisionRegExp>
</repoLayout>
<repoLayout>
<name>ivy-default</name>
<artifactPathPattern>[org]/[module]/[baseRev](-[folderItegRev])/[type]s/[module](-[classifier])-[baseRev](-[fileItegRev]).[ext]</artifactPathPattern>
<distinctiveDescriptorPathPattern>true</distinctiveDescriptorPathPattern>
<descriptorPathPattern>[org]/[module]/[baseRev](-[folderItegRev])/[type]s/ivy-[baseRev](-[fileItegRev]).xml</descriptorPathPattern>
<folderIntegrationRevisionRegExp>\d{14}</folderIntegrationRevisionRegExp>
<fileIntegrationRevisionRegExp>\d{14}</fileIntegrationRevisionRegExp>
</repoLayout>
<repoLayout>
<name>gradle-default</name>
<artifactPathPattern>[org]/[module]/[baseRev](-[folderItegRev])/[module]-[baseRev](-[fileItegRev])(-[classifier]).[ext]</artifactPathPattern>
<distinctiveDescriptorPathPattern>true</distinctiveDescriptorPathPattern>
<descriptorPathPattern>[org]/[module]/ivy-[baseRev](-[fileItegRev]).xml</descriptorPathPattern>
<folderIntegrationRevisionRegExp>\d{14}</folderIntegrationRevisionRegExp>
<fileIntegrationRevisionRegExp>\d{14}</fileIntegrationRevisionRegExp>
</repoLayout>
<repoLayout>
<name>maven-1-default</name>
<artifactPathPattern>[org]/[type]s/[module]-[baseRev](-[fileItegRev])(-[classifier]).[ext]</artifactPathPattern>
<distinctiveDescriptorPathPattern>true</distinctiveDescriptorPathPattern>
<descriptorPathPattern>[org]/[type]s/[module]-[baseRev](-[fileItegRev]).pom</descriptorPathPattern>
<folderIntegrationRevisionRegExp>.+</folderIntegrationRevisionRegExp>
<fileIntegrationRevisionRegExp>.+</fileIntegrationRevisionRegExp>
</repoLayout>
<repoLayout>
<name>nuget-default</name>
<artifactPathPattern>[orgPath]/[module]/[module].[baseRev](-[fileItegRev]).nupkg</artifactPathPattern>
<distinctiveDescriptorPathPattern>false</distinctiveDescriptorPathPattern>
<folderIntegrationRevisionRegExp>.*</folderIntegrationRevisionRegExp>
<fileIntegrationRevisionRegExp>.*</fileIntegrationRevisionRegExp>
</repoLayout>
<repoLayout>
<name>npm-default</name>
<artifactPathPattern>[orgPath]/[module]/[module]-[baseRev](-[fileItegRev]).tgz</artifactPathPattern>
<distinctiveDescriptorPathPattern>false</distinctiveDescriptorPathPattern>
<folderIntegrationRevisionRegExp>.*</folderIntegrationRevisionRegExp>
<fileIntegrationRevisionRegExp>.*</fileIntegrationRevisionRegExp>
</repoLayout>
<repoLayout>
<name>bower-default</name>
<artifactPathPattern>[orgPath]/[module]/[module]-[baseRev](-[fileItegRev]).[ext]</artifactPathPattern>
<distinctiveDescriptorPathPattern>false</distinctiveDescriptorPathPattern>
<folderIntegrationRevisionRegExp>.*</folderIntegrationRevisionRegExp>
<fileIntegrationRevisionRegExp>.*</fileIntegrationRevisionRegExp>
</repoLayout>
<repoLayout>
<name>vcs-default</name>
<artifactPathPattern>[orgPath]/[module]/[refs&lt;tags|branches&gt;]/[baseRev]/[module]-[baseRev](-[fileItegRev])(-[classifier]).[ext]</artifactPathPattern>
<distinctiveDescriptorPathPattern>false</distinctiveDescriptorPathPattern>
<folderIntegrationRevisionRegExp>.*</folderIntegrationRevisionRegExp>
<fileIntegrationRevisionRegExp>[a-zA-Z0-9]{40}</fileIntegrationRevisionRegExp>
</repoLayout>
<repoLayout>
<name>sbt-default</name>
<artifactPathPattern>[org]/[module]/(scala_[scalaVersion&lt;.+&gt;])/(sbt_[sbtVersion&lt;.+&gt;])/[baseRev]/[type]s/[module](-[classifier]).[ext]</artifactPathPattern>
<distinctiveDescriptorPathPattern>true</distinctiveDescriptorPathPattern>
<descriptorPathPattern>[org]/[module]/(scala_[scalaVersion&lt;.+&gt;])/(sbt_[sbtVersion&lt;.+&gt;])/[baseRev]/[type]s/ivy.xml</descriptorPathPattern>
<folderIntegrationRevisionRegExp>\d{14}</folderIntegrationRevisionRegExp>
<fileIntegrationRevisionRegExp>\d{14}</fileIntegrationRevisionRegExp>
</repoLayout>
<repoLayout>
<name>simple-default</name>
<artifactPathPattern>[orgPath]/[module]/[module]-[baseRev](-[fileItegRev]).[ext]</artifactPathPattern>
<distinctiveDescriptorPathPattern>false</distinctiveDescriptorPathPattern>
<folderIntegrationRevisionRegExp>.*</folderIntegrationRevisionRegExp>
<fileIntegrationRevisionRegExp>.*</fileIntegrationRevisionRegExp>
</repoLayout>
</repoLayouts>
<remoteReplications/>
<localReplications/>
<gcConfig>
<cronExp>0 0 /4 * * ?</cronExp>
</gcConfig>
<cleanupConfig>
<cronExp>0 12 5 * * ?</cronExp>
</cleanupConfig>
<virtualCacheCleanupConfig>
<cronExp>0 12 0 * * ?</cronExp>
</virtualCacheCleanupConfig>
<folderDownloadConfig>
<enabled>false</enabled>
<maxDownloadSizeMb>1024</maxDownloadSizeMb>
<maxFiles>5000</maxFiles>
<maxConcurrentRequests>10</maxConcurrentRequests>
</folderDownloadConfig>
<trashcanConfig>
<enabled>true</enabled>
<allowPermDeletes>false</allowPermDeletes>
<retentionPeriodDays>14</retentionPeriodDays>
</trashcanConfig>
</config>

View File

@ -0,0 +1,85 @@
user www-data;
worker_processes 30;
pid /run/nginx.pid;
events {
worker_connections 768;
# multi_accept on;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on;
gzip_disable "msie6";
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
## server configuration
server {
listen 80 ;
server_name 172.20.9.16;
if ($http_x_forwarded_proto = '') {
set $http_x_forwarded_proto $scheme;
}
## Application specific logs
## access_log /var/log/nginx/172.20.9.16-access.log timing;
## error_log /var/log/nginx/172.20.9.16-error.log;
rewrite ^/$ /artifactory/webapp/ redirect;
rewrite ^/artifactory/?(/webapp)?$ /artifactory/webapp/ redirect;
location /artifactory/ {
proxy_read_timeout 900;
proxy_pass_header Server;
proxy_cookie_path ~*^/.* /;
proxy_pass http://172.20.9.16:8081/artifactory/;
proxy_set_header X-Artifactory-Override-Base-Url $http_x_forwarded_proto://$host:$server_port/artifactory;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
## server configuration
server {
listen 5000;
server_name 172.20.9.16;
if ($http_x_forwarded_proto = '') {
set $http_x_forwarded_proto $scheme;
}
## Application specific logs
## access_log /var/log/nginx/172.20.9.16-access.log timing;
## error_log /var/log/nginx/172.20.9.16-error.log;
rewrite ^/(v1|v2)/(.*) /artifactory/api/docker/docker-local/$1/$2;
client_max_body_size 0;
chunked_transfer_encoding on;
location /artifactory/ {
proxy_read_timeout 900;
proxy_pass_header Server;
proxy_cookie_path ~*^/.* /;
proxy_pass http://172.20.9.16:8081/artifactory/;
proxy_set_header X-Artifactory-Override-Base-Url $http_x_forwarded_proto://$host:$server_port/artifactory;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}

View File

@ -0,0 +1,107 @@
<?xml version='1.0' encoding='UTF-8'?>
<security version="v8">
<users>
<user>
<username>anonymous</username>
<password>d41d8cd98f00b204e9800998ecf8427e</password>
<admin>false</admin>
<enabled>true</enabled>
<updatableProfile>false</updatableProfile>
<accountNonExpired>true</accountNonExpired>
<credentialsExpired>false</credentialsExpired>
<credentialsNonExpired>true</credentialsNonExpired>
<accountNonLocked>true</accountNonLocked>
<transientUser>false</transientUser>
<groups/>
<userPropertyInfos>
<userProperty>
<propKey>passwordCreated</propKey>
<propValue>1457516661467</propValue>
</userProperty>
</userPropertyInfos>
<lastLoginTimeMillis>0</lastLoginTimeMillis>
<lastAccessTimeMillis>0</lastAccessTimeMillis>
<locked>false</locked>
</user>
<user>
<username>admin</username>
<password>1f70548d73baca61aab8660733c7de81</password>
<salt>CAFEBABEEBABEFAC</salt>
<admin>true</admin>
<enabled>true</enabled>
<updatableProfile>true</updatableProfile>
<accountNonExpired>true</accountNonExpired>
<credentialsExpired>false</credentialsExpired>
<credentialsNonExpired>true</credentialsNonExpired>
<accountNonLocked>true</accountNonLocked>
<realm>internal</realm>
<transientUser>false</transientUser>
<groups/>
<userPropertyInfos>
<userProperty>
<propKey>passwordCreated</propKey>
<propValue>1457516661448</propValue>
</userProperty>
</userPropertyInfos>
<lastLoginTimeMillis>1458541070096</lastLoginTimeMillis>
<lastLoginClientIp>172.20.8.3</lastLoginClientIp>
<lastAccessTimeMillis>0</lastAccessTimeMillis>
<locked>false</locked>
</user>
</users>
<groups>
<group>
<groupName>readers</groupName>
<description>A group for read-only users</description>
<newUserDefault>true</newUserDefault>
<realm>artifactory</realm>
</group>
</groups>
<acls>
<acl>
<permissionTarget>
<name>Any Remote</name>
<repoKeys>
<string>ANY REMOTE</string>
</repoKeys>
<includes>
<string>**</string>
</includes>
<excludes/>
</permissionTarget>
<aces>
<ace>
<principal>anonymous</principal>
<group>false</group>
<mask>3</mask>
</ace>
</aces>
<updatedBy>_system_</updatedBy>
</acl>
<acl>
<permissionTarget>
<name>Anything</name>
<repoKeys>
<string>ANY</string>
</repoKeys>
<includes>
<string>**</string>
</includes>
<excludes/>
</permissionTarget>
<aces>
<ace>
<principal>readers</principal>
<group>true</group>
<mask>1</mask>
</ace>
<ace>
<principal>anonymous</principal>
<group>false</group>
<mask>31</mask>
</ace>
</aces>
<updatedBy>_system_</updatedBy>
</acl>
</acls>
</security>

View File

@ -0,0 +1,347 @@
.. _Measuring_performance_of_JFrog_Artifactory_Pro:
*********************************************************
Results of measuring performance of JFrog Artifactory Pro
*********************************************************
:Abstract:
This document includes performance test results of `JFrog Artifactory Pro`_
service as a repository of docker images. All test have been performed
regarding :ref:`Measuring_performance_of_container_repositories`
Environment description
=======================
Hardware configuration of each server
-------------------------------------
.. table:: Description of servers hardware
+-------+----------------+------------------------+------------------------+
|server |name |728998-comp-disk-228 |728998-comp-disk-227 |
| +----------------+------------------------+------------------------+
| |role |test_tool |artifactory |
| +----------------+------------------------+------------------------+
| |vendor,model |HP,DL380 Gen9 |HP,DL380 Gen9 |
| +----------------+------------------------+------------------------+
| |operating_system| | 3.13.0-76-generic | | 3.13.0-76-generic |
| | | | Ubuntu-trusty | | Ubuntu-trusty |
| | | | x86_64 | | x86_64 |
+-------+----------------+------------------------+------------------------+
|CPU |vendor,model |Intel,E5-2680 v3 |Intel,E5-2680 v3 |
| +----------------+------------------------+------------------------+
| |processor_count |2 |2 |
| +----------------+------------------------+------------------------+
| |core_count |12 |12 |
| +----------------+------------------------+------------------------+
| |frequency_MHz |2500 |2500 |
+-------+----------------+------------------------+------------------------+
|RAM |vendor,model |HP,752369-081 |HP,752369-081 |
| +----------------+------------------------+------------------------+
| |amount_MB |262144 |262144 |
+-------+----------------+------------------------+------------------------+
|NETWORK|interface_name |p1p1 |p1p1 |
| +----------------+------------------------+------------------------+
| |vendor,model |Intel,X710 Dual Port |Intel,X710 Dual Port |
| +----------------+------------------------+------------------------+
| |bandwidth |10G |10G |
+-------+----------------+------------------------+------------------------+
|STORAGE|dev_name |/dev/sda |/dev/sda |
| +----------------+------------------------+------------------------+
| |vendor,model | | raid10 - HP P840 | | raid10 - HP P840 |
| | | | 12 disks EH0600JEDHE | | 12 disks EH0600JEDHE |
| +----------------+------------------------+------------------------+
| |SSD/HDD |HDD |HDD |
| +----------------+------------------------+------------------------+
| |size | 3,6TB | 3,6TB |
+-------+----------------+------------------------+------------------------+
Network scheme and part of configuration of hardware network switches
---------------------------------------------------------------------
Network scheme of the environment:
.. image:: Network_Scheme.png
:alt: Network Scheme of the environment
Here is the part of switch configuration for each switch port which connected to
p1p1 interface of a server:
.. code:: bash
switchport mode trunk
switchport trunk native vlan 600
switchport trunk allowed vlan 600-602,630-649
spanning-tree port type edge trunk
spanning-tree bpduguard enable
no snmp trap link-status
Software configuration of the Artifactory service
-------------------------------------------------
Installation of Artifactory:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code:: bash
# Install Java
apt-get install software-properties-common
sudo add-apt-repository ppa:webupd8team/java
apt-get update
sudo apt-get install oracle-java8-installer # Interactive java installer
# Install ArtifactoryPro
echo "deb https://jfrog.bintray.com/artifactory-pro-debs trusty main" > /etc/apt/sources.list.d/artifactory.list
apt-get update
apt-get install jfrog-artifactory-pro
# Install Nginx as a reverse proxy
# https://www.jfrog.com/confluence/display/RTF/Configuring+NGINX
apt-get install nginx
You can find nginx configuration file here
:download:`nginx.conf <configs/nginx.conf>`
Here is the all config files of Artifactory
:download:`artifactory_etc.tar.gz <configs/artifactory_etc.tar.gz>`
After installation all default repositories was removed from Artifactory and
"docker-local" hosted repository was created. You can find full configuration of
the Artifactory installation here:
:download:`config_descriptor.xml <configs/config_descriptor.xml>`
:download:`security_descriptor.xml <configs/security_descriptor.xml>`
.. table:: Versions of some software
+-----------+------------------+
|Software |Version |
+===========+==================+
|Ubuntu |Ubuntu 14.04.3 LTS|
+-----------+------------------+
|Artifactory|4.5.2 rev 40121 |
+-----------+------------------+
Operating system configuration:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
You can find outputs of some commands and /etc folder in the following archive:
:download:`server_description_of_728998-comp-disk-227.tar.gz <configs/server_description_of_728998-comp-disk-227.tar.gz>`
Software configuration of the node with test tool
-------------------------------------------------
Test tool:
^^^^^^^^^^
Firstly we need to install docker-engine:
.. code:: bash
echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" > /etc/apt/sources.list.d/docker.list
apt-get update && apt-get -y install docker-engine
echo DOCKER_OPTS=\"--insecure-registry 172.20.9.16:5000\" >> /etc/default/docker
service docker restart
We use Python2.7 and
:ref:`Script for collecting performance metrics of docker repository` with
:ref:`Proposed docker file` to perform the tests. The image size is a sum of
layers:
.. code:: bash
IMAGE CREATED CREATED BY SIZE COMMENT
93333b8ed564 About a minute ago /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "/usr/s 0 B
35d8142196c0 About a minute ago /bin/sh -c #(nop) EXPOSE 80/tcp 0 B
3a63f30ab247 About a minute ago /bin/sh -c apt-get install -y nginx 18.14 MB
97434d46f197 2 days ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0 B
<missing> 2 days ago /bin/sh -c sed -i 's/^#\s*\(deb.*universe\)$/ 1.895 kB
<missing> 2 days ago /bin/sh -c set -xe && echo '#!/bin/sh' > /u 194.5 kB
<missing> 2 days ago /bin/sh -c #(nop) ADD file:e01d51d39ea04c8efb 187.8 MB
It means that DATA_SIZE=206.13 MB
.. table:: Versions of some software
+-----------+------------------+
|Software |Version |
+===========+==================+
|Ubuntu |Ubuntu 14.04.3 LTS|
+-----------+------------------+
|Docker |1.10 |
+-----------+------------------+
Operating system:
^^^^^^^^^^^^^^^^^
You can find outputs of some commands and /etc folder in the following archive:
:download:`server_description_of_728997-comp-disk-228.tar.gz <configs/server_description_of_728997-comp-disk-228.tar.gz>`
Testing process
===============
1.
Artifactory was installed on top of 728998-comp-disk-227 server as described in
`Installation of Artifactory:`_ section.
2.
The values of the variables in test-repo.py script was changed:
iterations = 1000
concurrency = 1
repo_address = "172.20.9.16:5000"
3.
The following command was executed to perform the tests:
.. code:: bash
sudo python test-repo.py
4.
push_results.csv and pull_results.csv was saved in persistent folder.
5. Clean up docker repository in Artifactory via Web UI
6.
The steps from 2 to 5 was repeated with the following values of the
concurrency parameters: 1,10,30,50,100
Results
=======
Push action results
-------------------
PUSH_TIME(ITERATION)
^^^^^^^^^^^^^^^^^^^^
After simple processing results the following plots for push action in depend on
iteration number created (click to expand an image):
+----------------+-------------------------------------------------------------+
|Function |Plot |
+================+=============================================================+
|PUSH_TIME |.. image:: results/artifactory-1000-1/push-1000-1.png |
|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=1) |
|CONCURRENCY=1) | :scale: 20 |
+----------------+-------------------------------------------------------------+
|PUSH_TIME |.. image:: results/artifactory-1000-10/push-1000-10.png |
|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=10) |
|CONCURRENCY=10) | :scale: 20 |
+----------------+-------------------------------------------------------------+
|PUSH_TIME |.. image:: results/artifactory-1000-30/push-1000-30.png |
|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=30) |
|CONCURRENCY=30) | :scale: 20 |
+----------------+-------------------------------------------------------------+
|PUSH_TIME |.. image:: results/artifactory-1000-50/push-1000-50.png |
|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=50) |
|CONCURRENCY=50) | :scale: 20 |
+----------------+-------------------------------------------------------------+
|PUSH_TIME |.. image:: results/artifactory-1000-100/push-1000-100.png |
|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=100) |
|CONCURRENCY=100)| :scale: 20 |
+----------------+-------------------------------------------------------------+
|PUSH_TIME |.. image:: results/artifactory-push-1000-1_10_30_50_100.png |
|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY={1,10,30,50,100} |
|CONCURRENCY={1, | :scale: 20 |
|10,30,50,100} | |
+----------------+-------------------------------------------------------------+
PUSH_TIME(CONCURRENCY)
^^^^^^^^^^^^^^^^^^^^^^
The following table and graph show how PUSH_TIME parameter depend on CONCURRENCY
parameter.
.. table:: Maximum, Minimum, Average and Percentile 90% of PUSH_TIME values in
depend on CONCURRENCY parameter.
+-----------+-----------+-----------+-----------+--------------+
|Concurrency|Maximum |Minimum |Average |Percentile 90%|
+===========+===========+===========+===========+==============+
+-----------+-----------+-----------+-----------+--------------+
|1 |20.45173717|18.13562512|18.45595757|18.70360937 |
+-----------+-----------+-----------+-----------+--------------+
|10 |52.81749606|21.4737699 |47.39192888|47.92230422 |
+-----------+-----------+-----------+-----------+--------------+
|30 |147.2520959|21.35128784|140.8133277|143.3592351 |
+-----------+-----------+-----------+-----------+--------------+
|50 |242.0436599|21.53936005|232.1077632|238.6817375 |
+-----------+-----------+-----------+-----------+--------------+
|100 |474.1983588|21.41779709|447.7350837|471.5060248 |
+-----------+-----------+-----------+-----------+--------------+
.. image:: results/artifactory-push.png
:alt: PUSH_TIME
:scale: 100
Pull action results
-------------------
PULL_TIME(ITERATION)
^^^^^^^^^^^^^^^^^^^^
After simple processing results the following plots for pull action in depend on
iteration number created (click to expand an image):
+----------------+-------------------------------------------------------------+
|Function |Plot |
+================+=============================================================+
|PULL_TIME |.. image:: results/artifactory-1000-1/pull-1000-1.png |
|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=1) |
|CONCURRENCY=1) | :scale: 20 |
+----------------+-------------------------------------------------------------+
|PULL_TIME |.. image:: results/artifactory-1000-10/pull-1000-10.png |
|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=10) |
|CONCURRENCY=10) | :scale: 20 |
+----------------+-------------------------------------------------------------+
|PULL_TIME |.. image:: results/artifactory-1000-30/pull-1000-30.png |
|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=30) |
|CONCURRENCY=30) | :scale: 20 |
+----------------+-------------------------------------------------------------+
|PULL_TIME |.. image:: results/artifactory-1000-50/pull-1000-50.png |
|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=50) |
|CONCURRENCY=50) | :scale: 20 |
+----------------+-------------------------------------------------------------+
|PULL_TIME |.. image:: results/artifactory-1000-100/pull-1000-100.png |
|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=100) |
|CONCURRENCY=100)| :scale: 20 |
+----------------+-------------------------------------------------------------+
|PULL_TIME |.. image:: results/artifactory-pull-1000-1_10_30_50_100.png |
|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY={1,10,30,50,100} |
|CONCURRENCY={1, | :scale: 20 |
|10,30,50,100} | |
+----------------+-------------------------------------------------------------+
PULL_TIME(CONCURRENCY)
^^^^^^^^^^^^^^^^^^^^^^
The following table and graph show how PUSH_TIME parameter depend on CONCURRENCY
parameter.
.. table:: Maximum, Minimum, Average and Percentile 90% of PULL_TIME values in
depend on CONCURRENCY parameter.
+-----------+------------+-------------+------------+--------------+
|Concurrency|Maximum |Minimum |Average |Percentile 90%|
+===========+============+=============+============+==============+
|1 |1.023168087 |0.09103393555|0.7067174957|0.7760614157 |
+-----------+------------+-------------+------------+--------------+
|10 |1.87360692 |0.08845591545|1.127708118 |1.361271906 |
+-----------+------------+-------------+------------+--------------+
|30 |4.27976203 |0.1920921803 |2.644113734 |2.870757174 |
+-----------+------------+-------------+------------+--------------+
|50 |6.287320852 |0.2292528152 |4.416184656 |4.711911416 |
+-----------+------------+-------------+------------+--------------+
|100 |10.30138803 |0.167137146 |8.50843117 |9.09850688 |
+-----------+------------+-------------+------------+--------------+
.. image:: results/artifactory-pull.png
:alt: PULL_TIME
:scale: 100
Issues which have been found during the tests
=============================================
.. table:: Issues which have been found during the tests
+-------------------------------+---------------------------------------------+
|Issue description |Root cause, Link |
+===============================+=============================================+
|| Artifactory allows re-pushing|https://www.jfrog.com/jira/browse/RTFACT-9591|
|| existed docker layers instead| |
|| of answer with | |
|| "already exists" message | |
+-------------------------------+---------------------------------------------+
|| only 5 images can be uploaded|| Root cause of the issue haven't found yet |
|| to Artifactory at the || |
|| same time || |
+-------------------------------+---------------------------------------------+
.. references:
.. _JFrog Artifactory Pro: https://www.jfrog.com/artifactory

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -0,0 +1,10 @@
Container repositories test results
***********************************
.. toctree::
:numbered:
:maxdepth: 3
registry2/index
artifactory/index
nexus/index

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

@ -0,0 +1,356 @@
.. _Measuring_performance_of_Sonatype_Nexus:
**************************************************
Results of measuring performance of Sonatype Nexus
**************************************************
:Abstract:
This document includes performance test results of `Sonatype Nexus`_ service
as a repository of docker images. All test have been performed regarding
:ref:`Measuring_performance_of_container_repositories`
Environment description
=======================
Hardware configuration of each server
-------------------------------------
.. table:: Description of servers hardware
+-------+----------------+------------------------+------------------------+
|server |name |728998-comp-disk-228 |728998-comp-disk-227 |
| +----------------+------------------------+------------------------+
| |role |test_tool |Nexus |
| +----------------+------------------------+------------------------+
| |vendor,model |HP,DL380 Gen9 |HP,DL380 Gen9 |
| +----------------+------------------------+------------------------+
| |operating_system| | 3.13.0-76-generic | | 3.13.0-76-generic |
| | | | Ubuntu-trusty | | Ubuntu-trusty |
| | | | x86_64 | | x86_64 |
+-------+----------------+------------------------+------------------------+
|CPU |vendor,model |Intel,E5-2680 v3 |Intel,E5-2680 v3 |
| +----------------+------------------------+------------------------+
| |processor_count |2 |2 |
| +----------------+------------------------+------------------------+
| |core_count |12 |12 |
| +----------------+------------------------+------------------------+
| |frequency_MHz |2500 |2500 |
+-------+----------------+------------------------+------------------------+
|RAM |vendor,model |HP,752369-081 |HP,752369-081 |
| +----------------+------------------------+------------------------+
| |amount_MB |262144 |262144 |
+-------+----------------+------------------------+------------------------+
|NETWORK|interface_name |p1p1 |p1p1 |
| +----------------+------------------------+------------------------+
| |vendor,model |Intel,X710 Dual Port |Intel,X710 Dual Port |
| +----------------+------------------------+------------------------+
| |bandwidth |10G |10G |
+-------+----------------+------------------------+------------------------+
|STORAGE|dev_name |/dev/sda |/dev/sda |
| +----------------+------------------------+------------------------+
| |vendor,model | | raid10 - HP P840 | | raid10 - HP P840 |
| | | | 12 disks EH0600JEDHE | | 12 disks EH0600JEDHE |
| +----------------+------------------------+------------------------+
| |SSD/HDD |HDD |HDD |
| +----------------+------------------------+------------------------+
| |size | 3,6TB | 3,6TB |
+-------+----------------+------------------------+------------------------+
Network scheme and part of configuration of hardware network switches
---------------------------------------------------------------------
Network scheme of the environment:
.. image:: Network_Scheme.png
:alt: Network Scheme of the environment
Here is the part of switch configuration for each switch port which connected to
p1p1 interface of a server:
.. code:: bash
switchport mode trunk
switchport trunk native vlan 600
switchport trunk allowed vlan 600-602,630-649
spanning-tree port type edge trunk
spanning-tree bpduguard enable
no snmp trap link-status
Software configuration of the Nexus service
----------------------------------------------------
Installation of Nexus:
^^^^^^^^^^^^^^^^^^^^^^
.. code:: bash
# Install Java
apt-get install software-properties-common
sudo add-apt-repository ppa:webupd8team/java
apt-get update
sudo apt-get install oracle-java8-installer # Interactive java installer
# Install Nexus
wget http://download.sonatype.com/nexus/3/nexus-3.0.0-m7-unix.sh
chmod +x nexus-3.0.0-m7-unix.sh
echo "o
1
n
y
1
1
" | ./nexus-3.0.0-m7-unix.sh -c
service nexus restart
update-rc.d nexus defaults
After installation all default repositories was removed from Nexus and
"docker-local" hosted repository was created. You can find full configuration of
the Nexus installation in the support file created after configuration:
:download:`support.zip <configs/support.zip>`
.. table:: Versions of some software
+-----------+------------------+
|Software |Version |
+===========+==================+
|Ubuntu |Ubuntu 14.04.3 LTS|
+-----------+------------------+
|NexusOSS |3m7 |
+-----------+------------------+
Operating system configuration:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
You can find outputs of some commands and /etc folder in the following archive:
:download:`server_description_of_728998-comp-disk-227.tar.gz <configs/server_description_of_728998-comp-disk-227.tar.gz>`
Software configuration of the node with test tool
-------------------------------------------------
Test tool:
^^^^^^^^^^
Firstly we need to install docker-engine:
.. code:: bash
echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" > /etc/apt/sources.list.d/docker.list
apt-get update && apt-get -y install docker-engine
echo DOCKER_OPTS=\"--insecure-registry 172.20.9.16:5000\" >> /etc/default/docker
service docker restart
We use Python2.7 and
:ref:`Script for collecting performance metrics of docker repository` with
:ref:`Proposed docker file` to perform the tests. The image size is a sum of
layers:
.. code:: bash
IMAGE CREATED CREATED BY SIZE COMMENT
93333b8ed564 About a minute ago /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "/usr/s 0 B
35d8142196c0 About a minute ago /bin/sh -c #(nop) EXPOSE 80/tcp 0 B
3a63f30ab247 About a minute ago /bin/sh -c apt-get install -y nginx 18.14 MB
97434d46f197 2 days ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0 B
<missing> 2 days ago /bin/sh -c sed -i 's/^#\s*\(deb.*universe\)$/ 1.895 kB
<missing> 2 days ago /bin/sh -c set -xe && echo '#!/bin/sh' > /u 194.5 kB
<missing> 2 days ago /bin/sh -c #(nop) ADD file:e01d51d39ea04c8efb 187.8 MB
It means that DATA_SIZE=206.13 MB
.. table:: Versions of some software
+-----------+------------------+
|Software |Version |
+===========+==================+
|Ubuntu |Ubuntu 14.04.3 LTS|
+-----------+------------------+
|Docker |1.10 |
+-----------+------------------+
Operating system:
^^^^^^^^^^^^^^^^^
You can find outputs of some commands and /etc folder in the following archive:
:download:`server_description_of_728997-comp-disk-228.tar.gz <configs/server_description_of_728997-comp-disk-228.tar.gz>`
Testing process
===============
1.
Nexus was installed on top of 728998-comp-disk-227 server as described in
`Installation of Nexus:`_ section.
2.
The values of the variables in test-repo.py script was changed:
iterations = 1000
concurrency = 1
repo_address = "172.20.9.16:5000"
3.
The following command was executed to perform the tests:
.. code:: bash
sudo docker login -u jenkins -p jenkins -e jenkins@example.com
sudo python test-repo.py
4.
push_results.csv and pull_results.csv was saved in persistent folder.
5.
The steps from 1 to 4 was repeated with the following values of the
concurrency parameters: 1,10,30,50,100
Results
=======
Push action results
-------------------
PUSH_TIME(ITERATION)
^^^^^^^^^^^^^^^^^^^^
After simple processing results the following plots for push action in depend on
iteration number created (click to expand an image):
+----------------+----------------------------------------------------------+
|Function |Plot |
+================+==========================================================+
|PUSH_TIME |.. image:: results/nexus-1000-1/push-1000-1.png |
|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=1) |
|CONCURRENCY=1) | :scale: 20 |
+----------------+----------------------------------------------------------+
|PUSH_TIME |.. image:: results/nexus-1000-10/push-1000-10.png |
|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=10) |
|CONCURRENCY=10) | :scale: 20 |
+----------------+----------------------------------------------------------+
|PUSH_TIME |.. image:: results/nexus-1000-30/push-1000-30.png |
|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=30) |
|CONCURRENCY=30) | :scale: 20 |
+----------------+----------------------------------------------------------+
|PUSH_TIME |.. image:: results/nexus-1000-50/push-1000-50.png |
|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=50) |
|CONCURRENCY=50) | :scale: 20 |
+----------------+----------------------------------------------------------+
|PUSH_TIME |.. image:: results/nexus-1000-100/push-1000-100.png |
|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=100) |
|CONCURRENCY=100)| :scale: 20 |
+----------------+----------------------------------------------------------+
|PUSH_TIME |.. image:: results/nexus-push-1000-1_10_30_50_100.png |
|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY={1,10,30,50,100}|
|CONCURRENCY={1, | :scale: 20 |
|10,30,50,100} | |
+----------------+----------------------------------------------------------+
PUSH_TIME(CONCURRENCY)
^^^^^^^^^^^^^^^^^^^^^^
The following table and graph show how PUSH_TIME parameter depend on CONCURRENCY
parameter.
.. table:: Maximum, Minimum, Average and Percentile 90% of PUSH_TIME values in
depend on CONCURRENCY parameter.
+-----------+-----------+-----------+-----------+--------------+
|Concurrency|Maximum |Minimum |Average |Percentile 90%|
+===========+===========+===========+===========+==============+
|1 |19.54624987|18.28802991|18.60292332|18.85230837 |
+-----------+-----------+-----------+-----------+--------------+
|10 |158.930537 |21.7508142 |45.62607854|48.32535088 |
+-----------+-----------+-----------+-----------+--------------+
|30 |260.8910789|21.95701599|140.7167748|156.5025718 |
+-----------+-----------+-----------+-----------+--------------+
|50 |295.4358571|21.76140809|220.7136473|235.8214025 |
+-----------+-----------+-----------+-----------+--------------+
|100 |507.6230781|42.87186408|425.6215228|458.9536175 |
+-----------+-----------+-----------+-----------+--------------+
.. image:: results/nexus-push.png
:alt: PUSH_TIME
:scale: 100
Pull action results
-------------------
PULL_TIME(ITERATION)
^^^^^^^^^^^^^^^^^^^^
After simple processing results the following plots for pull action in depend on
iteration number created (click to expand an image):
+----------------+----------------------------------------------------------+
|Function |Plot |
+================+==========================================================+
|PULL_TIME |.. image:: results/nexus-1000-1/pull-1000-1.png |
|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=1) |
|CONCURRENCY=1) | :scale: 20 |
+----------------+----------------------------------------------------------+
|PULL_TIME |.. image:: results/nexus-1000-10/pull-1000-10.png |
|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=10) |
|CONCURRENCY=10) | :scale: 20 |
+----------------+----------------------------------------------------------+
|PULL_TIME |.. image:: results/nexus-1000-30/pull-1000-30.png |
|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=30) |
|CONCURRENCY=30) | :scale: 20 |
+----------------+----------------------------------------------------------+
|PULL_TIME |.. image:: results/nexus-1000-50/pull-1000-50.png |
|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=50) |
|CONCURRENCY=50) | :scale: 20 |
+----------------+----------------------------------------------------------+
|PULL_TIME |.. image:: results/nexus-1000-100/pull-1000-100.png |
|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=100) |
|CONCURRENCY=100)| :scale: 20 |
+----------------+----------------------------------------------------------+
|PULL_TIME |.. image:: results/nexus-pull-1000-1_10_30_50_100.png |
|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY={1,10,30,50,100}|
|CONCURRENCY={1, | :scale: 20 |
|10,30,50,100} | |
+----------------+----------------------------------------------------------+
PULL_TIME(CONCURRENCY)
^^^^^^^^^^^^^^^^^^^^^^
The following table and graph show how PUSH_TIME parameter depend on CONCURRENCY
parameter.
.. table:: Maximum, Minimum, Average and Percentile 90% of PULL_TIME values in
depend on CONCURRENCY parameter.
+-----------+------------+-------------+------------+--------------+
|Concurrency|Maximum |Minimum |Average |Percentile 90%|
+===========+============+=============+============+==============+
|1 |0.7448480129|0.04781007767|0.6843045886|0.7085263491 |
+-----------+------------+-------------+------------+--------------+
|10 |1.598811865 |0.07142710686|1.180489622 |1.346029782 |
+-----------+------------+-------------+------------+--------------+
|30 |4.289592028 |0.1032390594 |2.841079599 |3.127129436 |
+-----------+------------+-------------+------------+--------------+
|50 |6.079101086 |0.1912419796 |4.465888512 |4.781247687 |
+-----------+------------+-------------+------------+--------------+
|100 |10.95208812 |0.194712162 |9.210462797 |10.03164272 |
+-----------+------------+-------------+------------+--------------+
.. image:: results/nexus-pull.png
:alt: PULL_TIME
:scale: 100
Issues which have been found during the tests
=============================================
.. table:: Issues which have been found during the tests
+-------------------------------+---------------------------------------------+
|Issue description |Root cause, Link |
+===============================+=============================================+
|| Nexus allows re-pushing || Docker 1.10 is known not to work with |
|| existed docker layers instead|| Nexus 3.0m7 (1.10 was released after the |
|| of answer with || 3.0m7 release) |
|| "already exists" message || |
+-------------------------------+---------------------------------------------+
|| only 5 images can be uploaded|| Root cause of the issue haven't found yet |
|| to Nexus at the || |
|| same time || |
+-------------------------------+---------------------------------------------+
.. references:
.. _Sonatype Nexus: http://www.sonatype.com/nexus/solution-overview/nexus-repository

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View File

@ -0,0 +1,320 @@
.. _Measuring_performance_of_docker_registry:
***************************************************
Results of measuring performance of Docker Registry
***************************************************
:Abstract:
This document includes performance test results of `Docker Registry2`_ service
as a repository of docker images. All test have been performed regarding
:ref:`Measuring_performance_of_container_repositories`
Environment description
=======================
Hardware configuration of each server
-------------------------------------
.. table:: Description of servers hardware
+-------+----------------+------------------------+------------------------+
|server |name |728998-comp-disk-228 |728998-comp-disk-227 |
| +----------------+------------------------+------------------------+
| |role |test_tool |registry |
| +----------------+------------------------+------------------------+
| |vendor,model |HP,DL380 Gen9 |HP,DL380 Gen9 |
| +----------------+------------------------+------------------------+
| |operating_system| | 3.13.0-76-generic | | 3.13.0-76-generic |
| | | | Ubuntu-trusty | | Ubuntu-trusty |
| | | | x86_64 | | x86_64 |
+-------+----------------+------------------------+------------------------+
|CPU |vendor,model |Intel,E5-2680 v3 |Intel,E5-2680 v3 |
| +----------------+------------------------+------------------------+
| |processor_count |2 |2 |
| +----------------+------------------------+------------------------+
| |core_count |12 |12 |
| +----------------+------------------------+------------------------+
| |frequency_MHz |2500 |2500 |
+-------+----------------+------------------------+------------------------+
|RAM |vendor,model |HP,752369-081 |HP,752369-081 |
| +----------------+------------------------+------------------------+
| |amount_MB |262144 |262144 |
+-------+----------------+------------------------+------------------------+
|NETWORK|interface_name |p1p1 |p1p1 |
| +----------------+------------------------+------------------------+
| |vendor,model |Intel,X710 Dual Port |Intel,X710 Dual Port |
| +----------------+------------------------+------------------------+
| |bandwidth |10G |10G |
+-------+----------------+------------------------+------------------------+
|STORAGE|dev_name |/dev/sda |/dev/sda |
| +----------------+------------------------+------------------------+
| |vendor,model | | raid10 - HP P840 | | raid10 - HP P840 |
| | | | 12 disks EH0600JEDHE | | 12 disks EH0600JEDHE |
| +----------------+------------------------+------------------------+
| |SSD/HDD |HDD |HDD |
| +----------------+------------------------+------------------------+
| |size | 3,6TB | 3,6TB |
+-------+----------------+------------------------+------------------------+
Network scheme and part of configuration of hardware network switches
---------------------------------------------------------------------
Network scheme of the environment:
.. image:: Network_Scheme.png
:alt: Network Scheme of the environment
Here is the part of switch configuration for each switch port which connected to
p1p1 interface of a server:
.. code:: bash
switchport mode trunk
switchport trunk native vlan 600
switchport trunk allowed vlan 600-602,630-649
spanning-tree port type edge trunk
spanning-tree bpduguard enable
no snmp trap link-status
Software configuration of the DockerRegistry service
----------------------------------------------------
Installation of Registry2:
^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code:: bash
echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" > /etc/apt/sources.list.d/docker.list
apt-get update && apt-get -y install docker-engine
service docker restart
docker run -d -p 5000:5000 --name registry registry:2
.. table:: Versions of some software
+-----------+------------------+
|Software |Version |
+===========+==================+
|Ubuntu |Ubuntu 14.04.3 LTS|
+-----------+------------------+
|Registry | |
+-----------+------------------+
Operating system configuration:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
You can find outputs of some commands and /etc folder in the following archive:
:download:`server_description_of_728998-comp-disk-227.tar.gz <configs/server_description_of_728998-comp-disk-227.tar.gz>`
Software configuration of the node with test tool
-------------------------------------------------
Test tool:
^^^^^^^^^^
Firstly we need to install docker-engine:
.. code:: bash
echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" > /etc/apt/sources.list.d/docker.list
apt-get update && apt-get -y install docker-engine
echo DOCKER_OPTS=\"--insecure-registry 172.20.9.16:5000\" >> /etc/default/docker
service docker restart
We use Python2.7 and
:ref:`Script for collecting performance metrics of docker repository` with
:ref:`Proposed docker file` to perform the tests. The image size is a sum of
layers:
.. code:: bash
IMAGE CREATED CREATED BY SIZE COMMENT
93333b8ed564 About a minute ago /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "/usr/s 0 B
35d8142196c0 About a minute ago /bin/sh -c #(nop) EXPOSE 80/tcp 0 B
3a63f30ab247 About a minute ago /bin/sh -c apt-get install -y nginx 18.14 MB
97434d46f197 2 days ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0 B
<missing> 2 days ago /bin/sh -c sed -i 's/^#\s*\(deb.*universe\)$/ 1.895 kB
<missing> 2 days ago /bin/sh -c set -xe && echo '#!/bin/sh' > /u 194.5 kB
<missing> 2 days ago /bin/sh -c #(nop) ADD file:e01d51d39ea04c8efb 187.8 MB
It means that DATA_SIZE=206.13 MB
.. table:: Versions of some software
+-----------+------------------+
|Software |Version |
+===========+==================+
|Ubuntu |Ubuntu 14.04.3 LTS|
+-----------+------------------+
|Docker |1.10 |
+-----------+------------------+
Operating system:
^^^^^^^^^^^^^^^^^
You can find outputs of some commands and /etc folder in the following archive:
:download:`server_description_of_728997-comp-disk-228.tar.gz <configs/server_description_of_728997-comp-disk-228.tar.gz>`
Testing process
===============
1.
Registry2 was installed on top of 728998-comp-disk-227 server as described in
`Installation of Registry2:`_ section.
2.
The values of the variables in test-repo.py script was changed:
iterations = 1000
concurrency = 1
repo_address = "172.20.9.16:5000"
3.
The following command was executed to perform the tests:
.. code:: bash
sudo python test-repo.py
4.
push_results.csv and pull_results.csv was saved in persistent folder.
5.
The steps from 1 to 4 was repeated with the following values of the
concurrency parameters: 1,10,30,50,100
Results
=======
Push action results
-------------------
PUSH_TIME(ITERATION)
^^^^^^^^^^^^^^^^^^^^
After simple processing results the following plots for push action in depend on
iteration number created (click to expand an image):
+----------------+----------------------------------------------------------+
|Function |Plot |
+================+==========================================================+
|PUSH_TIME |.. image:: results/registry-1000-1/push-1000-1.png |
|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=1) |
|CONCURRENCY=1) | :scale: 20 |
+----------------+----------------------------------------------------------+
|PUSH_TIME |.. image:: results/registry-1000-10/push-1000-10.png |
|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=10) |
|CONCURRENCY=10) | :scale: 20 |
+----------------+----------------------------------------------------------+
|PUSH_TIME |.. image:: results/registry-1000-30/push-1000-30.png |
|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=30) |
|CONCURRENCY=30) | :scale: 20 |
+----------------+----------------------------------------------------------+
|PUSH_TIME |.. image:: results/registry-1000-50/push-1000-50.png |
|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=50) |
|CONCURRENCY=50) | :scale: 20 |
+----------------+----------------------------------------------------------+
|PUSH_TIME |.. image:: results/registry-1000-100/push-1000-100.png |
|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=100) |
|CONCURRENCY=100)| :scale: 20 |
+----------------+----------------------------------------------------------+
|PUSH_TIME |.. image:: results/registry-push-1000-1_10_30_50_100.png |
|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY={1,10,30,50,100}|
|CONCURRENCY={1, | :scale: 20 |
|10,30,50,100} | |
+----------------+----------------------------------------------------------+
PUSH_TIME(CONCURRENCY)
^^^^^^^^^^^^^^^^^^^^^^
The following table and graph show how PUSH_TIME parameter depend on CONCURRENCY
parameter.
.. table:: Maximum, Minimum, Average and Percentile 90% of PUSH_TIME values in
depend on CONCURRENCY parameter.
+-----------+-----------+-----------+-----------+--------------+
|Concurrency|Maximum |Minimum |Average |Percentile 90%|
+===========+===========+===========+===========+==============+
|1 |18.23183703|2.014497995|2.852927562|2.120845795 |
+-----------+-----------+-----------+-----------+--------------+
|10 |51.36455989|4.625913858|6.886669915|4.924576068 |
+-----------+-----------+-----------+-----------+--------------+
|30 |143.376904 |14.23889208|20.4385057 |14.57682798 |
+-----------+-----------+-----------+-----------+--------------+
|50 |45.15124679|21.27197409|24.59056571|24.24201851 |
+-----------+-----------+-----------+-----------+--------------+
|100 |254.9175169|20.78799295|66.44495539|133.36117 |
+-----------+-----------+-----------+-----------+--------------+
.. image:: results/registry-push.png
:alt: PUSH_TIME
:scale: 100
Pull action results
-------------------
PULL_TIME(ITERATION)
^^^^^^^^^^^^^^^^^^^^
After simple processing results the following plots for pull action in depend on
iteration number created (click to expand an image):
+----------------+----------------------------------------------------------+
|Function |Plot |
+================+==========================================================+
|PULL_TIME |.. image:: results/registry-1000-1/pull-1000-1.png |
|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=1) |
|CONCURRENCY=1) | :scale: 20 |
+----------------+----------------------------------------------------------+
|PULL_TIME |.. image:: results/registry-1000-10/pull-1000-10.png |
|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=10) |
|CONCURRENCY=10) | :scale: 20 |
+----------------+----------------------------------------------------------+
|PULL_TIME |.. image:: results/registry-1000-30/pull-1000-30.png |
|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=30) |
|CONCURRENCY=30) | :scale: 20 |
+----------------+----------------------------------------------------------+
|PULL_TIME |.. image:: results/registry-1000-50/pull-1000-50.png |
|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=50) |
|CONCURRENCY=50) | :scale: 20 |
+----------------+----------------------------------------------------------+
|PULL_TIME |.. image:: results/registry-1000-100/pull-1000-100.png |
|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=100) |
|CONCURRENCY=100)| :scale: 20 |
+----------------+----------------------------------------------------------+
|PULL_TIME |.. image:: results/registry-pull-1000-1_10_30_50_100.png |
|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY={1,10,30,50,100}|
|CONCURRENCY={1, | :scale: 20 |
|10,30,50,100} | |
+----------------+----------------------------------------------------------+
PULL_TIME(CONCURRENCY)
^^^^^^^^^^^^^^^^^^^^^^
The following table and graph show how PUSH_TIME parameter depend on CONCURRENCY
parameter.
.. table:: Maximum, Minimum, Average and Percentile 90% of PULL_TIME values in
depend on CONCURRENCY parameter.
+-----------+------------+-------------+------------+--------------+
|Concurrency|Maximum |Minimum |Average |Percentile 90%|
+===========+============+=============+============+==============+
|1 |0.7883470058|0.05074381828|0.6775195916|0.7058973074 |
+-----------+------------+-------------+------------+--------------+
|10 |1.59649086 |0.05712890625|1.113002464 |1.204397488 |
+-----------+------------+-------------+------------+--------------+
|30 |4.239136934 |0.1007189751 |2.70093091 |2.899113488 |
+-----------+------------+-------------+------------+--------------+
|50 |6.978290081 |0.131428957 |4.493998793 |4.860594058 |
+-----------+------------+-------------+------------+--------------+
|100 |13.00426912 |0.152477026 |8.819601912 |9.696622682 |
+-----------+------------+-------------+------------+--------------+
.. image:: results/registry-pull.png
:alt: PULL_TIME
:scale: 100
Issues which have been found during the tests
=============================================
.. table:: Issues which have been found during the tests
+-------------------------------+---------------------------------------------+
|Issue description |Root cause, Link |
+===============================+=============================================+
|| only 5 images can be uploaded|| Root cause of the issue haven't found yet |
|| to Registry at the || |
|| same time || |
+-------------------------------+---------------------------------------------+
.. references:
.. _Docker Registry2: https://docs.docker.com/registry

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View File

@ -10,3 +10,4 @@ Test Results
:maxdepth: 2 :maxdepth: 2
mq_ha/index mq_ha/index
container_repositories/index