mirror of
https://github.com/Joxit/docker-registry-ui.git
synced 2026-02-15 21:09:51 +00:00
Compare commits
202 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
19e96ab94c | ||
|
|
4e5b768833 | ||
|
|
c1f6c43e4a | ||
|
|
fb8185907e | ||
|
|
636cb60ca8 | ||
|
|
34fd13d6b7 | ||
|
|
57a1cf919a | ||
|
|
ad7c2698fd | ||
|
|
7032ec9f0f | ||
|
|
3b9a804289 | ||
|
|
49ec1d9938 | ||
|
|
c84c9f36e6 | ||
|
|
1939b47677 | ||
|
|
736d527cc8 | ||
|
|
c310845c18 | ||
|
|
f0c7232843 | ||
|
|
49fcba3f6c | ||
|
|
ab12cceefc | ||
|
|
3af4438815 | ||
|
|
f826381681 | ||
|
|
ba2e0b119e | ||
|
|
772d19c18f | ||
|
|
ba6d817b41 | ||
|
|
19e72e4a5f | ||
|
|
05cbb51125 | ||
|
|
7c0874694a | ||
|
|
126509d7fa | ||
|
|
e1fd515279 | ||
|
|
befbd0bcfb | ||
|
|
8ddfb1b5ae | ||
|
|
3a385fc08d | ||
|
|
f958365336 | ||
|
|
29c17b1baa | ||
|
|
b323dc6c04 | ||
|
|
992328eae9 | ||
|
|
dd26bf66a2 | ||
|
|
8fcae3cda4 | ||
|
|
f4455703ca | ||
|
|
22e3f2254e | ||
|
|
4075e0005c | ||
|
|
7c00b85183 | ||
|
|
21e3ad51af | ||
|
|
73613a3b96 | ||
|
|
6da744a9c5 | ||
|
|
db6b74a5f0 | ||
|
|
840a00e32b | ||
|
|
026f65abc6 | ||
|
|
1dc84eb46e | ||
|
|
e0ec86503a | ||
|
|
b97ee4bc60 | ||
|
|
a19c992d5a | ||
|
|
6c8b929e4f | ||
|
|
4fcbea698b | ||
|
|
999e5ae1c6 | ||
|
|
8b9efa0397 | ||
|
|
1c88ad57f8 | ||
|
|
c66887fac7 | ||
|
|
3dc035dac8 | ||
|
|
29cd2b7a8f | ||
|
|
e065298eed | ||
|
|
f02c99f12d | ||
|
|
7eed05ae50 | ||
|
|
7a35d61359 | ||
|
|
e990c39a18 | ||
|
|
3bfe107e3c | ||
|
|
0f54555b52 | ||
|
|
1ca1a1a207 | ||
|
|
bc5082dcf9 | ||
|
|
58b1486c81 | ||
|
|
2c9f006b8c | ||
|
|
026cf8ccdc | ||
|
|
69066dd867 | ||
|
|
6d4d507db5 | ||
|
|
83f15aa267 | ||
|
|
b643a44113 | ||
|
|
a2b3c592df | ||
|
|
263584fc43 | ||
|
|
1173453f72 | ||
|
|
7d095916db | ||
|
|
8ef411059c | ||
|
|
603b5861fa | ||
|
|
4ff1b2fabe | ||
|
|
e6af9321a8 | ||
|
|
bb3182d56e | ||
|
|
761a680703 | ||
|
|
926f67e1b5 | ||
|
|
781b026471 | ||
|
|
92fd78165f | ||
|
|
a3276dcb79 | ||
|
|
962592c54a | ||
|
|
669c3399d0 | ||
|
|
9c303d32c7 | ||
|
|
3d4267f5ab | ||
|
|
b3427213d0 | ||
|
|
7beac85f25 | ||
|
|
ea21483346 | ||
|
|
8fe3adf125 | ||
|
|
142727e8ac | ||
|
|
fb80283dd9 | ||
|
|
11692c136e | ||
|
|
cde932ec17 | ||
|
|
307e171ede | ||
|
|
6b012cc8fd | ||
|
|
887e77f2f1 | ||
|
|
5890b723d2 | ||
|
|
e947d2251d | ||
|
|
b427e09e84 | ||
|
|
476a96279e | ||
|
|
e5b0d5d756 | ||
|
|
2337a06db6 | ||
|
|
8c613701d3 | ||
|
|
1bad64443d | ||
|
|
ef3a9795cf | ||
|
|
99ea6cf1d8 | ||
|
|
ccd349b7d5 | ||
|
|
d87cd44a00 | ||
|
|
b8802ef7ab | ||
|
|
e6c20afcf3 | ||
|
|
1220825f31 | ||
|
|
501d0d72a0 | ||
|
|
be813e6617 | ||
|
|
b4e6369a71 | ||
|
|
c9ede6fe61 | ||
|
|
656914f0d7 | ||
|
|
f8c5010fd1 | ||
|
|
42f19fcef7 | ||
|
|
f9620639bf | ||
|
|
d1700ccf74 | ||
|
|
991eaf932d | ||
|
|
e2ee319d4a | ||
|
|
06d6293e79 | ||
|
|
00fe443a7c | ||
|
|
6e7fc1508e | ||
|
|
178cd5a59d | ||
|
|
da9591609e | ||
|
|
f0a40d6087 | ||
|
|
01d8bcfccd | ||
|
|
c60c2f3e95 | ||
|
|
241ee0fd13 | ||
|
|
2e915a82b1 | ||
|
|
e3d592ac65 | ||
|
|
531f9400a0 | ||
|
|
d7f6cd7e1a | ||
|
|
8524c0d18b | ||
|
|
8b7bd6cfb8 | ||
|
|
f56cd055a2 | ||
|
|
79203787bd | ||
|
|
32d895a09d | ||
|
|
bc26eca908 | ||
|
|
e301dda408 | ||
|
|
ce93a4da92 | ||
|
|
7296c2e727 | ||
|
|
94fcd53792 | ||
|
|
95558fe75a | ||
|
|
44f3242b85 | ||
|
|
9b05503e77 | ||
|
|
980c5ddaa9 | ||
|
|
2eeae54bca | ||
|
|
f7fe27c07e | ||
|
|
48aba129ce | ||
|
|
a2e81ac12c | ||
|
|
a48ce7ef75 | ||
|
|
04f4c204d8 | ||
|
|
41d71a1991 | ||
|
|
b3fbaff578 | ||
|
|
5e2ead0c2a | ||
|
|
70d5ae2601 | ||
|
|
3b0e63ff12 | ||
|
|
b6144ae13f | ||
|
|
65bbac3453 | ||
|
|
d380a767af | ||
|
|
36c44b19a3 | ||
|
|
28310f9804 | ||
|
|
6296a192d6 | ||
|
|
a0c88d06f0 | ||
|
|
eec736d4e8 | ||
|
|
9e99b08b82 | ||
|
|
0f805daafa | ||
|
|
8bd1f31c9c | ||
|
|
7777ff28df | ||
|
|
4fee7b44d3 | ||
|
|
79960ea52d | ||
|
|
7716f8b44a | ||
|
|
0ac7a151d9 | ||
|
|
1321d9b573 | ||
|
|
ef149bf1cc | ||
|
|
e5a406a6ba | ||
|
|
dbb746981a | ||
|
|
d7a19734ce | ||
|
|
92fc37adb4 | ||
|
|
02210e0943 | ||
|
|
0199f87087 | ||
|
|
3399030e4e | ||
|
|
660a938d6e | ||
|
|
7356591292 | ||
|
|
32d0df1af9 | ||
|
|
5c1cb93a1c | ||
|
|
9d97c30914 | ||
|
|
cec469ab67 | ||
|
|
34200c1114 | ||
|
|
67c6cb1bee | ||
|
|
021cddfef7 |
@@ -4,4 +4,5 @@
|
||||
!nginx
|
||||
!src
|
||||
!package.json
|
||||
!gulpfile.js
|
||||
!gulpfile.js
|
||||
!favicon.ico
|
||||
61
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
61
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
@@ -0,0 +1,61 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
Hi, I use this docker registry UI and I have an issue...
|
||||
|
||||
## Bug description
|
||||
|
||||
A clear and concise description of what the bug is.
|
||||
## How to Reproduce
|
||||
|
||||
For UI bug, steps to reproduce the behavior:
|
||||
1. Go to '...'
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
|
||||
For service bug, steps to reproduce the behavior:
|
||||
<!-- Remove your credentials or anonymize them -->
|
||||
My docker-compose file
|
||||
```yml
|
||||
|
||||
```
|
||||
|
||||
My private docker registry configuration
|
||||
```yml
|
||||
|
||||
```
|
||||
|
||||
## Expected behavior
|
||||
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
## Screenshots
|
||||
|
||||
If applicable, add screenshots to help explain your problem.
|
||||
|
||||
## System information
|
||||
|
||||
- OS: [e.g. Debian 10, Windows, Android 9...]
|
||||
<!-- Browser is only for UI bugs -->
|
||||
- Browser:
|
||||
- Name: [e.g. Chrome, Firefox...]
|
||||
- Version: [e.g. 22]
|
||||
- Docker registry UI:
|
||||
- Version: [e.g. 1.4.0]
|
||||
- Server: [docker or dist]
|
||||
<!-- Only for Docker and for where the UI is hosted -->
|
||||
- Docker version: [e.g. 19.03]
|
||||
- Docker registry ui tag: [latest, static, master, 1.4-static...]
|
||||
- OS/Arch: [e.g. linux/amd64]
|
||||
- Tools: [e.g. docker-compose, kubernets..]
|
||||
|
||||
## Additional context
|
||||
|
||||
Add any other context about the problem here.
|
||||
10
.github/ISSUE_TEMPLATE/custom.md
vendored
Normal file
10
.github/ISSUE_TEMPLATE/custom.md
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
---
|
||||
name: Custom issue template
|
||||
about: Describe this issue template's purpose here.
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
|
||||
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Is your feature request related to a problem? Please describe.**
|
||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
|
||||
**Describe the solution you'd like**
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
**Describe alternatives you've considered**
|
||||
A clear and concise description of any alternative solutions or features you've considered.
|
||||
|
||||
**Additional context**
|
||||
Add any other context or screenshots about the feature request here.
|
||||
44
.github/workflows/main.yml
vendored
Normal file
44
.github/workflows/main.yml
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
name: Build and push master/main docker images
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master, main ]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Install dependencies
|
||||
run: npm install
|
||||
- name: Build the interface
|
||||
run: npm run build
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v1
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v1
|
||||
- name: Login to DockerHub
|
||||
uses: docker/login-action@v1
|
||||
with:
|
||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
- name: Build and push Beta Alpine Version
|
||||
uses: docker/build-push-action@v2
|
||||
with:
|
||||
context: .
|
||||
file: ./Dockerfile
|
||||
platforms: linux/386,linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x
|
||||
push: true
|
||||
tags: |
|
||||
joxit/docker-registry-ui:master
|
||||
joxit/docker-registry-ui:main
|
||||
- name: Build and push Beta Debian Version
|
||||
uses: docker/build-push-action@v2
|
||||
with:
|
||||
context: .
|
||||
file: ./debian.dockerfile
|
||||
platforms: linux/386,linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x
|
||||
push: true
|
||||
tags: |
|
||||
joxit/docker-registry-ui:master-debian
|
||||
joxit/docker-registry-ui:main-debian
|
||||
74
.github/workflows/release.yml
vendored
Normal file
74
.github/workflows/release.yml
vendored
Normal file
@@ -0,0 +1,74 @@
|
||||
name: Release
|
||||
|
||||
on:
|
||||
push:
|
||||
tags: '*'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Install dependencies
|
||||
run: npm install
|
||||
- name: Build the interface
|
||||
run: npm run build
|
||||
- name: Major tag
|
||||
id: major-tag
|
||||
run: echo "::set-output name=tag::$(git describe --tags | grep -o '^[0-9]*')"
|
||||
- name: Minor tag
|
||||
id: minor-tag
|
||||
run: echo "::set-output name=tag::$(git describe --tags | grep -o '^[0-9]*\.[0-9]*')"
|
||||
- name: Patch tag
|
||||
id: patch-tag
|
||||
run: echo "::set-output name=tag::$(git describe --tags | grep -o '^[0-9]*\.[0-9]*\.[0-9]*')"
|
||||
- name: Download kokai
|
||||
run: curl -sSL https://github.com/Joxit/kokai/releases/download/$(curl -sSL https://api.github.com/repos/Joxit/kokai/releases/latest | jq -r ".tag_name")/kokai-linux-x86_64 > kokai
|
||||
- name: Create Release Note
|
||||
run: chmod +x kokai && ./kokai release --ref ${{ github.ref }} --tag-from-ref . > RELEASE_NOTE.md
|
||||
- name: Create Release
|
||||
id: create_release
|
||||
uses: actions/create-release@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
tag_name: ${{ github.ref }}
|
||||
release_name: Release ${{ github.ref }}
|
||||
body_path: RELEASE_NOTE.md
|
||||
draft: false
|
||||
prerelease: false
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v1
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v1
|
||||
- name: Login to DockerHub
|
||||
uses: docker/login-action@v1
|
||||
with:
|
||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
- name: Build and push Latest Version
|
||||
uses: docker/build-push-action@v2
|
||||
with:
|
||||
context: .
|
||||
file: ./Dockerfile
|
||||
platforms: linux/386,linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x
|
||||
push: true
|
||||
tags: |
|
||||
joxit/docker-registry-ui:latest
|
||||
joxit/docker-registry-ui:${{steps.major-tag.outputs.tag}}
|
||||
joxit/docker-registry-ui:${{steps.minor-tag.outputs.tag}}
|
||||
joxit/docker-registry-ui:${{steps.patch-tag.outputs.tag}}
|
||||
- name: Build and push Latest Debian Version
|
||||
uses: docker/build-push-action@v2
|
||||
with:
|
||||
context: .
|
||||
file: ./debian.dockerfile
|
||||
platforms: linux/386,linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x
|
||||
push: true
|
||||
tags: |
|
||||
joxit/docker-registry-ui:debian
|
||||
joxit/docker-registry-ui:${{steps.major-tag.outputs.tag}}-debian
|
||||
joxit/docker-registry-ui:${{steps.minor-tag.outputs.tag}}-debian
|
||||
joxit/docker-registry-ui:${{steps.patch-tag.outputs.tag}}-debian
|
||||
6
.gitignore
vendored
6
.gitignore
vendored
@@ -2,4 +2,8 @@
|
||||
node_modules
|
||||
package-lock.json
|
||||
registry-data
|
||||
.idea
|
||||
.idea
|
||||
_site
|
||||
*.orig
|
||||
.serve/
|
||||
demo/v2
|
||||
|
||||
7
.prettierrc
Normal file
7
.prettierrc
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"singleQuote": true,
|
||||
"tabWidth": 2,
|
||||
"quoteProps": "preserve",
|
||||
"printWidth": 120,
|
||||
"proseWrap": "preserve"
|
||||
}
|
||||
76
CODE_OF_CONDUCT.md
Normal file
76
CODE_OF_CONDUCT.md
Normal file
@@ -0,0 +1,76 @@
|
||||
# Contributor Covenant Code of Conduct
|
||||
|
||||
## Our Pledge
|
||||
|
||||
In the interest of fostering an open and welcoming environment, we as
|
||||
contributors and maintainers pledge to making participation in our project and
|
||||
our community a harassment-free experience for everyone, regardless of age, body
|
||||
size, disability, ethnicity, sex characteristics, gender identity and expression,
|
||||
level of experience, education, socio-economic status, nationality, personal
|
||||
appearance, race, religion, or sexual identity and orientation.
|
||||
|
||||
## Our Standards
|
||||
|
||||
Examples of behavior that contributes to creating a positive environment
|
||||
include:
|
||||
|
||||
* Using welcoming and inclusive language
|
||||
* Being respectful of differing viewpoints and experiences
|
||||
* Gracefully accepting constructive criticism
|
||||
* Focusing on what is best for the community
|
||||
* Showing empathy towards other community members
|
||||
|
||||
Examples of unacceptable behavior by participants include:
|
||||
|
||||
* The use of sexualized language or imagery and unwelcome sexual attention or
|
||||
advances
|
||||
* Trolling, insulting/derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or electronic
|
||||
address, without explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a
|
||||
professional setting
|
||||
|
||||
## Our Responsibilities
|
||||
|
||||
Project maintainers are responsible for clarifying the standards of acceptable
|
||||
behavior and are expected to take appropriate and fair corrective action in
|
||||
response to any instances of unacceptable behavior.
|
||||
|
||||
Project maintainers have the right and responsibility to remove, edit, or
|
||||
reject comments, commits, code, wiki edits, issues, and other contributions
|
||||
that are not aligned to this Code of Conduct, or to ban temporarily or
|
||||
permanently any contributor for other behaviors that they deem inappropriate,
|
||||
threatening, offensive, or harmful.
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct applies both within project spaces and in public spaces
|
||||
when an individual is representing the project or its community. Examples of
|
||||
representing a project or community include using an official project e-mail
|
||||
address, posting via an official social media account, or acting as an appointed
|
||||
representative at an online or offline event. Representation of a project may be
|
||||
further defined and clarified by project maintainers.
|
||||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||
reported by contacting the project team at contact@joxit.dev. All
|
||||
complaints will be reviewed and investigated and will result in a response that
|
||||
is deemed necessary and appropriate to the circumstances. The project team is
|
||||
obligated to maintain confidentiality with regard to the reporter of an incident.
|
||||
Further details of specific enforcement policies may be posted separately.
|
||||
|
||||
Project maintainers who do not follow or enforce the Code of Conduct in good
|
||||
faith may face temporary or permanent repercussions as determined by other
|
||||
members of the project's leadership.
|
||||
|
||||
## Attribution
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
|
||||
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
|
||||
|
||||
[homepage]: https://www.contributor-covenant.org
|
||||
|
||||
For answers to common questions about this code of conduct, see
|
||||
https://www.contributor-covenant.org/faq
|
||||
42
CONTRIBUTORS.md
Normal file
42
CONTRIBUTORS.md
Normal file
@@ -0,0 +1,42 @@
|
||||
# Contributors
|
||||
|
||||
## Committers
|
||||
|
||||
- Jones Magloire [@Joxit](https://github.com/Joxit)
|
||||
- Lennart Blom [@lennartblom](https://github.com/lennartblom)
|
||||
- Jakob Ackermann [@das7pad](https://github.com/das7pad)
|
||||
- Olivier Nizet [@onizet](https://github.com/onizet)
|
||||
- Anton Antonov [@syndbg](https://github.com/syndbg)
|
||||
- Bertrand Pechenot [@berpec](https://github.com/berpec)
|
||||
- Sébastien Huss [@sebt3](https://github.com/sebt3)
|
||||
- Vladimir Kozyrev [@fieryvova](https://github.com/fieryvova)
|
||||
- Haibo Jia [@bluethon](https://github.com/bluethon)
|
||||
- Manuel Leitold [@agrippa1994](https://github.com/agrippa1994)
|
||||
- Murad [@muradheydarov](https://github.com/muradheydarov)
|
||||
- Giacomo Mazzamuto [@gmazzamuto](https://github.com/gmazzamuto)
|
||||
- Joe Bureau [@jabstone](https://github.com/jabstone)
|
||||
|
||||
## Because committers are not the only contributors
|
||||
|
||||
- Ewout Prangsma [@ewoutp](https://github.com/ewoutp)
|
||||
- [@soosap](https://github.com/soosap)
|
||||
- Madhukar Mishra [@madhukar93](https://github.com/madhukar93)
|
||||
- Yoan Blanc [@greut](https://github.com/greut)
|
||||
- [@samuelmaier](https://github.com/samuelmaier)
|
||||
- [@sbaloo](https://github.com/sbaloo)
|
||||
- [@rucciva](https://github.com/rucciva)
|
||||
- [@wuyue92tree](https://github.com/wuyue92tree)
|
||||
- Giovanni Toraldo [@gionn](https://github.com/gionn)
|
||||
- [@marcusblake](https://github.com/marcusblake)
|
||||
- Dario Piombo [@pidario](https://github.com/pidario)
|
||||
- Jernej K. [@Cvetk0](https://github.com/Cvetk0)
|
||||
- Cristian Posoiu [@cr1st1p](https://github.com/cr1st1p)
|
||||
- Sepp Zuther [@Herr-Sepp](https://github.com/Herr-Sepp)
|
||||
- Tomas Hulata [@tombokombo](https://github.com/tombokombo)
|
||||
- Ben Jackson [@bjj](https://github.com/bjj)
|
||||
- 三十文 [@xfduan](https://github.com/xfduan)
|
||||
- Aram Akhavan [@kaysond](https://github.com/kaysond)
|
||||
- Jason Tackaberry [@jtackaberry](https://github.com/jtackaberry)
|
||||
- Maxime Loliée [@loliee](https://github.com/loliee)
|
||||
- Enrico [@Enrico204](https://github.com/Enrico204)
|
||||
- [@clyvari](https://github.com/clyvari)
|
||||
23
Dockerfile
23
Dockerfile
@@ -12,22 +12,19 @@
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
FROM node:10-alpine AS builder
|
||||
|
||||
WORKDIR /usr/app
|
||||
|
||||
COPY package.json .
|
||||
|
||||
RUN yarn install
|
||||
|
||||
COPY . .
|
||||
|
||||
RUN yarn build
|
||||
|
||||
FROM nginx:alpine
|
||||
|
||||
LABEL maintainer="Jones MAGLOIRE @Joxit"
|
||||
|
||||
WORKDIR /usr/share/nginx/html/
|
||||
|
||||
COPY --from=builder /usr/app/dist/ /usr/share/nginx/html/
|
||||
ENV NGINX_PROXY_HEADER_Host '$http_host'
|
||||
ENV NGINX_LISTEN_PORT '80'
|
||||
ENV SHOW_CATALOG_NB_TAGS 'false'
|
||||
|
||||
COPY nginx/default.conf /etc/nginx/conf.d/default.conf
|
||||
COPY bin/90-docker-registry-ui.sh /docker-entrypoint.d/90-docker-registry-ui.sh
|
||||
COPY dist/ /usr/share/nginx/html/
|
||||
COPY favicon.ico /usr/share/nginx/html/
|
||||
|
||||
RUN chown -R nginx:nginx /etc/nginx/ /usr/share/nginx/html/ /var/cache/nginx
|
||||
@@ -1 +0,0 @@
|
||||
static.dockerfile
|
||||
242
README.md
242
README.md
@@ -1,134 +1,118 @@
|
||||
---
|
||||
title: Docker Registry User Interface
|
||||
---
|
||||
|
||||
# Docker Registry UI
|
||||
|
||||

|
||||

|
||||
[](https://github.com/sponsors/Joxit)
|
||||
[](https://artifacthub.io/packages/search?repo=joxit)
|
||||
|
||||
## Overview
|
||||
|
||||
This project aims to provide a user interface for your private docker registry v2.
|
||||
There is no default registry on this UI, you should add your own with the UI.
|
||||
You can manage more than one registry server.
|
||||
All registries will be stored in the [local storage](https://en.wikipedia.org/wiki/Web_storage#Local_and_session_storage) of your browser.
|
||||
This project aims to provide a simple and complete user interface for your private docker registry. You can customize the interface with various options. The major option is `SINGLE_REGISTRY` which allows you to disable the dynamic selection of docker registeries (same behavior as the old **static** tag).
|
||||
|
||||
You may need the [migration guide from 1.x to 2.x](https://github.com/Joxit/docker-registry-ui/wiki/Migrating-from-1.x-to-2.x) or [the 1.x readme](https://github.com/Joxit/docker-registry-ui/blob/8fe3adf12540d1316cb57628ebe86a392a703d90/README.md)
|
||||
|
||||
This web user interface uses [Riot](https://github.com/Riot/riot) the react-like user interface micro-library and [riot-mui](https://github.com/kysonic/riot-mui) components.
|
||||
|
||||
## [GitHub Page](https://joxit.dev/docker-registry-ui) and [Live Demo](https://joxit.dev/docker-registry-ui/demo/)
|
||||
## [Project Page](https://joxit.dev/docker-registry-ui), [Live Demo](https://joxit.dev/docker-registry-ui/demo/), [Examples](https://github.com/Joxit/docker-registry-ui/tree/main/examples), [Helm Chart](https://helm.joxit.dev/)
|
||||
|
||||

|
||||

|
||||
|
||||
If you like my work and want to support it, don't hesitate to [sponsor me](https://github.com/sponsors/Joxit).
|
||||
|
||||
## Features
|
||||
|
||||
- List all your repositories/images.
|
||||
- List all tags for a repository/image
|
||||
- Sort the tag list
|
||||
- One interface for many registries
|
||||
- Use a secured docker registry
|
||||
- Share your docker registry with query parameter `url` (e.g. `https://joxit.dev/docker-registry-ui/demo?url=https://registry.example.com`)
|
||||
- Use `joxit/docker-registry-ui:static` as reverse proxy to your docker registry (This will avoid CORS).
|
||||
- Display image size (see #30)
|
||||
- Add Title when using REGISTRY_URL (see #28)
|
||||
- Alpine and Debian based images with supports for arm32v7 and arm64v8
|
||||
- Copy `docker pull` command to clipbloard
|
||||
- Show sha256 for specific tag (hover image tag)
|
||||
- Display image creation date (see #49)
|
||||
- Display image history (see #58)
|
||||
- Display image/tag count
|
||||
- Image aggregation (see #56)
|
||||
- Customise docker pull command on static registry UI (see #71)
|
||||
- List all tags for a image.
|
||||
- Sort the tag list with number compatibility (see [#46](https://github.com/Joxit/docker-registry-ui/pull/46)).
|
||||
- Use a secured docker registry.
|
||||
- Display image size (see [#30](https://github.com/Joxit/docker-registry-ui/issues/30)).
|
||||
- Multi arch supports, Alpine and Debian based images with supports for arm32v7 and arm64v8.
|
||||
- Copy `docker pull` command to clipboard (see [#42](https://github.com/Joxit/docker-registry-ui/issues/42)).
|
||||
- Show sha256 for specific tag (hover image tag).
|
||||
- Display image creation date (see [#49](https://github.com/Joxit/docker-registry-ui/issues/49))
|
||||
- Display image history (see [#58](https://github.com/Joxit/docker-registry-ui/pull/58) & [#61](https://github.com/Joxit/docker-registry-ui/pull/61)).
|
||||
- Image aggregation (see [#56](https://github.com/Joxit/docker-registry-ui/issues/56)).
|
||||
- Display image/tag count (see [#56 issue comment](https://github.com/Joxit/docker-registry-ui/issues/56#issuecomment-449246524)).
|
||||
- Select multiple tags to delete (see [#29](https://github.com/Joxit/docker-registry-ui/issues/29)).
|
||||
- Select all tags with ALT + Click to delete (see [#80](https://github.com/Joxit/docker-registry-ui/issues/80)).
|
||||
- One interface for many registries (when `SINGLE_REGISTRY=false`).
|
||||
- Share your docker registry with query parameter `url` (e.g. `https://joxit.dev/docker-registry-ui/demo?url=https://registry.example.com`) (when `SINGLE_REGISTRY=false`).
|
||||
- Use the UI as reverse proxy (with `NGINX_PROXY_PASS_URL` environment variable) to your docker registry (This will avoid CORS).
|
||||
- Add Title when using `REGISTRY_TITLE` (see [#28](https://github.com/Joxit/docker-registry-ui/issues/28)).
|
||||
- Customise docker pull command on static registry UI (see [#71](https://github.com/Joxit/docker-registry-ui/issues/71)).
|
||||
- Add custom header via environment variable and file via `NGINX_PROXY_HEADER_*` (see [#89](https://github.com/Joxit/docker-registry-ui/pull/89))
|
||||
- Show/Hide content digest in taglist via `SHOW_CONTENT_DIGEST` (values are: [`true`, `false`], default: `false`) (see [#126](https://github.com/Joxit/docker-registry-ui/issues/126)).
|
||||
- Limit the number of elements in the image list via `CATALOG_ELEMENTS_LIMIT` (see [#127](https://github.com/Joxit/docker-registry-ui/pull/127)).
|
||||
- Multi arch support in history page (see [#130](https://github.com/Joxit/docker-registry-ui/issues/130) and [#134](https://github.com/Joxit/docker-registry-ui/pull/134))
|
||||
- Set a list of default registries with `DEFAULT_REGISTRIES` (see [#219](https://github.com/Joxit/docker-registry-ui/pull/219)).
|
||||
- Desactivate add and remove regisitries with `READ_ONLY_REGISTRIES` (see [#219](https://github.com/Joxit/docker-registry-ui/pull/219)).
|
||||
- Filter images and tags with a search bar. You can select the search bar with the shortcut `CRTL` + `F` or `F3`. When the search bar is already focused, the shortcut will fallback to the default behavior (see [#213](https://github.com/Joxit/docker-registry-ui/issues/213)).
|
||||
- **Forward** custom header to your backend registry via environment variable and file via `NGINX_PROXY_PASS_HEADER_*` (see [#206](https://github.com/Joxit/docker-registry-ui/pull/206)).
|
||||
- Run the container with user nginx instead of root via `--user nginx` and listend on custom port via `NGINX_LISTEN_PORT` (see [#224](https://github.com/Joxit/docker-registry-ui/issues/224)).
|
||||
- Show number of tags per images on catalog page. This will produce + nb images requests, not recommended on large registries via `SHOW_CATALOG_NB_TAGS` (default: `false`) (see [#161](https://github.com/Joxit/docker-registry-ui/issues/161) and [#239](https://github.com/Joxit/docker-registry-ui/pull/239)).
|
||||
- Expose custom labels in history page, custom labels will be processed like maintainer label via `HISTORY_CUSTOM_LABELS` (see [#160](https://github.com/Joxit/docker-registry-ui/issues/160) and [#240](https://github.com/Joxit/docker-registry-ui/pull/240)).
|
||||
- Access to the official Helm Chart: https://helm.joxit.dev/
|
||||
|
||||
## Getting Started
|
||||
## FAQ
|
||||
|
||||
### Basic
|
||||
- What is the difference between **`SINGLE_REGISTRY=false`** and **`SINGLE_REGISTRY=true`** options ?
|
||||
- When `SINGLE_REGISTRY` is set to false, a menu appears on the interface allowing you to dynamically change docker registry URLs.
|
||||
- Why, when I delete all tags of an image, the image is still in the UI ?
|
||||
- This is a limitation of docker registry, the garbage collector don't remove empty images. If you want to delete dangling images, you will need to delete the folder in your registry data. (see [#77](https://github.com/Joxit/docker-registry-ui/issues/77))
|
||||
- Why the image size in the UI is not the same as displayed during `docker images` ?
|
||||
- The UI displays the compressed size of the image and not the extracted size version.
|
||||
- Can I use HTTPS on the UI ?
|
||||
- Yes, put your favourite reverse proxy on the front of the UI. Your reverse proxy will take care of HTTPS connection.
|
||||
- Does the UI support authentication ?
|
||||
- Yes, but it supports only basic auth. It's a simple standalone frontend, it will use your browser window for authentication.
|
||||
- Can I use the UI and docker client with an insecure registry (registry url without https) ?
|
||||
- Yes you can, you must first configure your docker client. (see [#76](https://github.com/Joxit/docker-registry-ui/issues/76))
|
||||
- What does Mixed Content error mean ?
|
||||
- This means you are using a UI with HTTPS and your registry is using HTTP (unsecured). When you are on a HTTPS site, you can't get HTTP content. Upgrade you registry with a HTTPS connection.
|
||||
- Why the default nginx `Host` is set to `$http_host` ?
|
||||
- This fixes the issue [#88](https://github.com/Joxit/docker-registry-ui/issues/88). More about this in [#113](https://github.com/Joxit/docker-registry-ui/issues/113).
|
||||
- Why OPTIONS (aka preflight requests) and DELETE fails with 401 status code (using Basic Auth) ?
|
||||
- This is caused by a bug in docker registry, it returns 401 status requests on preflight requests, this breaks [W3C preflight-request specification](https://www.w3.org/TR/cors/#preflight-request). I suggest to have your UI on the same domain than your registry e.g. registry.example.com/ui/ **or** use `NGINX_PROXY_PASS_URL` **or** configure a nginx/apache/haproxy in front of your registry that returns 200 on each OPTIONS requests. (see [#104](https://github.com/Joxit/docker-registry-ui/issues/104), [#204](https://github.com/Joxit/docker-registry-ui/issues/204), [#207](https://github.com/Joxit/docker-registry-ui/issues/207), [#214](https://github.com/Joxit/docker-registry-ui/issues/214), [#266](https://github.com/Joxit/docker-registry-ui/issues/266)).
|
||||
- Can I use the docker registry ui as a standalone application (with Electron) ?
|
||||
- Yes, check out the example [here](https://github.com/Joxit/docker-registry-ui/tree/main/examples/electron). (see [#129](https://github.com/Joxit/docker-registry-ui/pull/129))
|
||||
- I deleted images through the UI, but they are still present on the server. How can I delete them?
|
||||
- When you delete an image with the UI, only the reference is deleted and not the content. To remove dangling images, you need to run the garbage collector of the registry with the command `registry garbage-collect config.yml` or `docker exec registry registry garbage-collect config.yml`. (see [#77](https://github.com/Joxit/docker-registry-ui/issues/77) [#147](https://github.com/Joxit/docker-registry-ui/issues/147))
|
||||
- Why when I delete one tag, all tags with the same SHA are deleted ?
|
||||
- This a docker registry API limitation, there is only one way to [delete images with tag](https://docs.docker.com/registry/spec/api/#deleting-an-image), it's by its `name` and its `manifest` (it's a sha of the content). So when you delete a tag, this will delete all tags of this image with the same SHA/manifest.
|
||||
- Can I run the container with an unprivileged user ?
|
||||
- Yes you can run the container with the `nginx` user, (see [#224](https://github.com/Joxit/docker-registry-ui/issues/224)).
|
||||
|
||||
First you need node and npm in order to download dependencies.
|
||||
|
||||
```sh
|
||||
git clone https://github.com/Joxit/docker-registry-ui.git
|
||||
cd docker-registry-ui
|
||||
npm install
|
||||
```
|
||||
Need more informations ? Try my [examples](https://github.com/Joxit/docker-registry-ui/tree/main/examples) or open an issue.
|
||||
|
||||
Now you can open index.html with your browser or use a http-server
|
||||
## Available options
|
||||
|
||||
```sh
|
||||
npm install -g http-server
|
||||
http-server
|
||||
```
|
||||
You can run the container with the unprivileged user `nginx`, see the discussion [#224](https://github.com/Joxit/docker-registry-ui/issues/224).
|
||||
|
||||
### Docker
|
||||
Some env options are available for use this interface for **only one server**.
|
||||
|
||||
The docker contains the source code and a node webserver in order to serve the docker-registry-ui.
|
||||
- `REGISTRY_URL`: The default url of your docker registry. You may need CORS configuration on your registry. This is usually the domain name or IP of your registry reachable by your computer (e.g `http://registry.example.com`). (default: derived from the hostname of your UI).
|
||||
- `REGISTRY_TITLE`: Set a custom title for your user interface. (default: value derived from `REGISTRY_URL`).
|
||||
- `PULL_URL`: Set a custom url when you copy the `docker pull` command. (default: value derived from `REGISTRY_URL`).
|
||||
- `DELETE_IMAGES`: Set if we can delete images from the UI. (default: `false`)
|
||||
- `SHOW_CONTENT_DIGEST`: Show content digest in docker tag list. (default: `false`)
|
||||
- `CATALOG_ELEMENTS_LIMIT`: Limit the number of elements in the catalog page. (default: `100000`).
|
||||
- `SINGLE_REGISTRY`: Remove the menu that show the dialogs to add, remove and change the endpoint of your docker registry. (default: `false`).
|
||||
- `NGINX_PROXY_PASS_URL`: Update the default Nginx configuration and set the **proxy_pass** to your backend docker registry (this avoid CORS configuration). This is usually the name of your registry container in the form `http://registry:5000`.
|
||||
- `NGINX_PROXY_HEADER_*`: Update the default Nginx configuration and **set custom headers** for your backend docker registry. Only when `NGINX_PROXY_PASS_URL` is used.
|
||||
- `NGINX_PROXY_PASS_HEADER_*`: Update the default Nginx configuration and **forward custom headers** to your backend docker registry. Only when `NGINX_PROXY_PASS_URL` is used.
|
||||
- `NGINX_LISTEN_PORT`: Listen on a port other than 80. (default: `80` when the user is root, `8080` otherwise).
|
||||
- `DEFAULT_REGISTRIES`: List of comma separated registry URLs (e.g `http://registry.example.com,http://registry:5000`), available only when `SINGLE_REGISTRY=false`. (default: ` `).
|
||||
- `READ_ONLY_REGISTRIES`: Desactivate dialog for remove and add new registries, available only when `SINGLE_REGISTRY=false`. (default: `false`).
|
||||
- `SHOW_CATALOG_NB_TAGS`: Show number of tags per images on catalog page. This will produce + nb images requests, not recommended on large registries. (default: `false`).
|
||||
- `HISTORY_CUSTOM_LABELS`: Expose custom labels in history page, custom labels will be processed like maintainer label.
|
||||
- `USE_CONTROL_CACHE_HEADER`: Use `Control-Cache` header and set to `no-store, no-cache`. This will avoid some issues on multi-arch images (see [#260](https://github.com/Joxit/docker-registry-ui/issues/260)). This option requires registry configuration: `Access-Control-Allow-Headers` with `Cache-Control`. (default: `false`).
|
||||
|
||||
#### Get the docker image
|
||||
|
||||
You can get the image in three ways
|
||||
|
||||
From sources with this command:
|
||||
|
||||
```sh
|
||||
git clone https://github.com/Joxit/docker-registry-ui.git
|
||||
# Alpine
|
||||
docker build -t joxit/docker-registry-ui:latest docker-registry-ui
|
||||
docker build -t joxit/docker-registry-ui:static -f docker-registry-ui/static.dockerfile docker-registry-ui
|
||||
# Debian
|
||||
docker build -t joxit/docker-registry-ui:debian -f docker-registry-ui/debian.dockerfile docker-registry-ui
|
||||
docker build -t joxit/docker-registry-ui:static -f docker-registry-ui/debian-static.dockerfile docker-registry-ui
|
||||
```
|
||||
|
||||
Or build with the url:
|
||||
|
||||
```sh
|
||||
# Alpine
|
||||
docker build -t joxit/docker-registry-ui:latest github.com/Joxit/docker-registry-ui
|
||||
docker build -t joxit/docker-registry-ui:static -f static.dockerfile github.com/Joxit/docker-registry-ui
|
||||
# Debian
|
||||
docker build -t joxit/docker-registry-ui:debian -f debian.dockerfile github.com/Joxit/docker-registry-ui
|
||||
docker build -t joxit/docker-registry-ui:debian-static -f debian-static.dockerfile github.com/Joxit/docker-registry-ui
|
||||
```
|
||||
|
||||
Or pull the image from [docker hub](https://hub.docker.com/r/joxit/docker-registry-ui/):
|
||||
|
||||
```sh
|
||||
# Alpine
|
||||
docker pull joxit/docker-registry-ui:latest
|
||||
docker pull joxit/docker-registry-ui:static
|
||||
# Debian
|
||||
docker pull joxit/docker-registry-ui:debian
|
||||
docker pull joxit/docker-registry-ui:debian-static
|
||||
```
|
||||
|
||||
#### Run the docker
|
||||
|
||||
To run the docker and see the website on your 80 port, try this:
|
||||
|
||||
```sh
|
||||
docker run -d -p 80:80 joxit/docker-registry-ui
|
||||
```
|
||||
|
||||
#### Run the static docker
|
||||
|
||||
Some env options are available for use this interface for only one server.
|
||||
|
||||
- `URL`: set the static URL to use (You will need CORS configuration). Example: `http://127.0.0.1:5000`. (`Required`)
|
||||
- `REGISTRY_URL`: your docker registry URL to contact (CORS configuration is not needed). Example: `http://my-docker-container:5000`. (Can't be used with `URL`, since 0.3.2).
|
||||
- `DELETE_IMAGES`: if this variable is empty or `false`, delete feature is deactivated. It is activated otherwise.
|
||||
- `REGISTRY_TITLE`: Set a custom title for your user interface when using `REGISTRY_URL` (since 0.3.4).
|
||||
- `PULL_URL`: Set a custom url for the docker pull command, this is useful when you use `REGISTRY_URL` and your registry is on a different host (since 1.1.0).
|
||||
|
||||
Example with `URL` option.
|
||||
|
||||
```sh
|
||||
docker run -d -p 80:80 -e URL=http://127.0.0.1:5000 -e DELETE_IMAGES=true joxit/docker-registry-ui:static
|
||||
```
|
||||
|
||||
Example with `REGISTRY_URL`, this will add a proxy to your registry.
|
||||
Your registry will be accessible here : `http://127.0.0.1/v2`, this will avoid CORS errors (see #25).
|
||||
Be careful, `joxit/docker-registry-ui` and `registry:2` will communicate, both containers should be in the same network or use your private IP.
|
||||
|
||||
```sh
|
||||
docker network create registry-ui-net
|
||||
docker run -d --net registry-ui-net --name registry-srv registry:2
|
||||
docker run -d --net registry-ui-net -p 80:80 -e REGISTRY_URL=http://registry-srv:5000 -e DELETE_IMAGES=true -e REGISTRY_TITLE="My registry" joxit/docker-registry-ui:static
|
||||
```
|
||||
|
||||
There are some examples with [docker-compose](https://docs.docker.com/compose/) and docker-registry-ui as proxy [here](https://github.com/Joxit/docker-registry-ui/tree/master/examples/ui-as-proxy/) or docker-registry-ui as standalone [here](https://github.com/Joxit/docker-registry-ui/tree/master/examples/ui-as-standalone/).
|
||||
There are some examples with [docker-compose](https://docs.docker.com/compose/) and docker-registry-ui as proxy [here](https://github.com/Joxit/docker-registry-ui/tree/main/examples/ui-as-proxy/) or docker-registry-ui as standalone [here](https://github.com/Joxit/docker-registry-ui/tree/main/examples/ui-as-standalone/).
|
||||
|
||||
## Using CORS
|
||||
|
||||
@@ -138,16 +122,19 @@ If your docker registry does not need credentials, you will need to send this HE
|
||||
|
||||
Access-Control-Allow-Origin: ['*']
|
||||
|
||||
If your docker registry need credentials, you will need to send these HEADERS:
|
||||
If your docker registry need credentials, you will need to send these HEADERS (you must add the protocol `http`/`https` and the port when not default `80`/`443`):
|
||||
|
||||
```yml
|
||||
http:
|
||||
headers:
|
||||
Access-Control-Allow-Origin: ['<your docker-registry-ui url>']
|
||||
Access-Control-Allow-Credentials: true
|
||||
Access-Control-Allow-Origin: ['http://registry.example.com']
|
||||
Access-Control-Allow-Credentials: [true]
|
||||
Access-Control-Allow-Headers: ['Authorization', 'Accept', 'Cache-Control']
|
||||
Access-Control-Allow-Methods: ['HEAD', 'GET', 'OPTIONS'] # Optional
|
||||
```
|
||||
|
||||
An alternative for CORS issues is a plugin on your browser, more info [here](https://github.com/Joxit/docker-registry-ui/issues/25#issuecomment-621104846) (thank you [xmontero](https://github.com/xmontero)).
|
||||
|
||||
## Using delete
|
||||
|
||||
For deleting images, you need to activate the delete feature in your registry:
|
||||
@@ -164,9 +151,12 @@ And you need to add these HEADERS:
|
||||
http:
|
||||
headers:
|
||||
Access-Control-Allow-Methods: ['HEAD', 'GET', 'OPTIONS', 'DELETE']
|
||||
Access-Control-Allow-Headers: ['Authorization', 'Accept', 'Cache-Control']
|
||||
Access-Control-Expose-Headers: ['Docker-Content-Digest']
|
||||
```
|
||||
|
||||
If you are running the **static interface** don't forget the environment variable `DELETE_IMAGES`.
|
||||
|
||||
## Registry example
|
||||
|
||||
Example of docker registry configuration file:
|
||||
@@ -187,9 +177,9 @@ http:
|
||||
addr: :5000
|
||||
headers:
|
||||
X-Content-Type-Options: [nosniff]
|
||||
Access-Control-Allow-Origin: ['http://127.0.0.1:8001']
|
||||
Access-Control-Allow-Origin: ['http://127.0.0.1:8000']
|
||||
Access-Control-Allow-Methods: ['HEAD', 'GET', 'OPTIONS', 'DELETE']
|
||||
Access-Control-Allow-Headers: ['Authorization']
|
||||
Access-Control-Allow-Headers: ['Authorization', 'Accept', 'Cache-Control']
|
||||
Access-Control-Max-Age: [1728000]
|
||||
Access-Control-Allow-Credentials: [true]
|
||||
Access-Control-Expose-Headers: ['Docker-Content-Digest']
|
||||
@@ -199,11 +189,21 @@ auth:
|
||||
path: /etc/docker/registry/htpasswd
|
||||
```
|
||||
|
||||
## Standalone Application
|
||||
If you do not want to install the docker-registry-ui on your server, you may
|
||||
check out the [Electron](examples/electron/README.md) standalone application.
|
||||
|
||||
## All examples
|
||||
|
||||
- [Use docker-registry-ui as a proxy (use REGISTRY_URL)](https://github.com/Joxit/docker-registry-ui/tree/master/examples/ui-as-proxy)
|
||||
- [Use docker-registry-ui as standalone (use URL)](https://github.com/Joxit/docker-registry-ui/tree/master/examples/ui-as-standalone)
|
||||
- [Use docker-registry-ui with traefik](https://github.com/Joxit/docker-registry-ui/tree/master/examples/traefik)
|
||||
- [Use docker-registry-ui with docker registry and Amazon s3 (#75)](https://github.com/Joxit/docker-registry-ui/tree/master/examples/issue-75)
|
||||
- [FIX revproxy to registry does not work when published under non-root url (#73)](https://github.com/Joxit/docker-registry-ui/tree/master/examples/issue-73)
|
||||
- [Use docker-registry-ui with HTTPS (#20)](https://github.com/Joxit/docker-registry-ui/tree/master/examples/issue-20)
|
||||
- [Use docker-registry-ui as a proxy (use REGISTRY_URL)](https://github.com/Joxit/docker-registry-ui/tree/main/examples/ui-as-proxy)
|
||||
- [Use docker-registry-ui as standalone (use URL)](https://github.com/Joxit/docker-registry-ui/tree/main/examples/ui-as-standalone)
|
||||
- [Use docker-registry-ui with traefik](https://github.com/Joxit/docker-registry-ui/tree/main/examples/traefik)
|
||||
- [Use docker-registry-ui with docker registry and Amazon s3](https://github.com/Joxit/docker-registry-ui/tree/main/examples/issue-75) ([#75](https://github.com/Joxit/docker-registry-ui/issues/75))
|
||||
- [FIX revproxy to registry does not work when published under non-root url](https://github.com/Joxit/docker-registry-ui/tree/main/examples/issue-73) ([#73](https://github.com/Joxit/docker-registry-ui/issues/73))
|
||||
- [Use docker-registry-ui with HTTPS](https://github.com/Joxit/docker-registry-ui/tree/main/examples/issue-20) ([#20](https://github.com/Joxit/docker-registry-ui/issues/20))
|
||||
- [Unable to push image when docker-registry-ui is used as a proxy on non 80 port](https://github.com/Joxit/docker-registry-ui/tree/main/examples/issue-88) ([#88](https://github.com/Joxit/docker-registry-ui/issues/88))
|
||||
- [Add custom headers bases on environment variable and/or file when the ui is used as proxy](https://github.com/Joxit/docker-registry-ui/tree/main/examples/proxy-headers) ([#89](https://github.com/Joxit/docker-registry-ui/pull/89))
|
||||
- [UI showing same sha256 content digest for all tags + Delete is not working](https://github.com/Joxit/docker-registry-ui/tree/main/examples/issue-116) ([#116](https://github.com/Joxit/docker-registry-ui/issues/116))
|
||||
- [Electron-based Standalone Application](https://github.com/Joxit/docker-registry-ui/tree/main/examples/electron) ([#129](https://github.com/Joxit/docker-registry-ui/pull/129))
|
||||
- [Use docker-registry-ui as proxy with read-only right](https://github.com/Joxit/docker-registry-ui/tree/main/examples/read-only-auth) ([#47](https://github.com/Joxit/docker-registry-ui/issues/47))
|
||||
- [Use DEFAULT_REGISTRIES and READ_ONLY_REGISTRIES](https://github.com/Joxit/docker-registry-ui/tree/main/examples/pr-219) ([#219](https://github.com/Joxit/docker-registry-ui/issues/219))
|
||||
|
||||
20
_config.yml
20
_config.yml
@@ -1,7 +1,17 @@
|
||||
title: Docker Registry v2 User Interface
|
||||
url: https://joxit.dev/docker-registry-ui/
|
||||
google_analytics: UA-99119327-1
|
||||
theme: jekyll-theme-cayman
|
||||
title: Docker Registry User Interface
|
||||
description: The simplest and most complete UI for your private registry!
|
||||
url: https://joxit.dev/docker-registry-ui
|
||||
google_analytics: G-T158HYBVZ2
|
||||
remote_theme: joxit/joxit.github.io
|
||||
author: Jones Magloire
|
||||
twitter:
|
||||
username: Joxit
|
||||
username: Joxit
|
||||
instagram:
|
||||
username: jox.it
|
||||
defaults:
|
||||
- scope:
|
||||
path: ""
|
||||
values:
|
||||
image: /screenshot.png
|
||||
plugins:
|
||||
- jekyll-seo-tag
|
||||
@@ -1,26 +0,0 @@
|
||||
# Copyright (C) 2016-2018 Jones Magloire @Joxit
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
FROM arm32v7/nginx
|
||||
|
||||
LABEL maintainer="Jones MAGLOIRE @Joxit"
|
||||
|
||||
WORKDIR /usr/share/nginx/html/
|
||||
|
||||
COPY nginx/default.conf /etc/nginx/conf.d/default.conf
|
||||
COPY dist/ /usr/share/nginx/html/
|
||||
COPY dist/scripts/docker-registry-ui-static.js /usr/share/nginx/html/scripts/docker-registry-ui.js
|
||||
COPY bin/entrypoint /bin
|
||||
|
||||
ENTRYPOINT entrypoint
|
||||
@@ -18,4 +18,13 @@ LABEL maintainer="Jones MAGLOIRE @Joxit"
|
||||
|
||||
WORKDIR /usr/share/nginx/html/
|
||||
|
||||
ENV NGINX_PROXY_HEADER_Host '$http_host'
|
||||
ENV NGINX_LISTEN_PORT '80'
|
||||
ENV SHOW_CATALOG_NB_TAGS 'false'
|
||||
|
||||
COPY nginx/default.conf /etc/nginx/conf.d/default.conf
|
||||
COPY bin/90-docker-registry-ui.sh /docker-entrypoint.d/90-docker-registry-ui.sh
|
||||
COPY dist/ /usr/share/nginx/html/
|
||||
COPY favicon.ico /usr/share/nginx/html/
|
||||
|
||||
RUN chown -R nginx:nginx /etc/nginx/ /usr/share/nginx/html/ /var/cache/nginx
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
# Copyright (C) 2016-2018 Jones Magloire @Joxit
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
FROM arm64v8/nginx
|
||||
|
||||
LABEL maintainer="Jones MAGLOIRE @Joxit"
|
||||
|
||||
WORKDIR /usr/share/nginx/html/
|
||||
|
||||
COPY nginx/default.conf /etc/nginx/conf.d/default.conf
|
||||
COPY dist/ /usr/share/nginx/html/
|
||||
COPY dist/scripts/docker-registry-ui-static.js /usr/share/nginx/html/scripts/docker-registry-ui.js
|
||||
COPY bin/entrypoint /bin
|
||||
|
||||
ENTRYPOINT entrypoint
|
||||
@@ -18,4 +18,13 @@ LABEL maintainer="Jones MAGLOIRE @Joxit"
|
||||
|
||||
WORKDIR /usr/share/nginx/html/
|
||||
|
||||
ENV NGINX_PROXY_HEADER_Host '$http_host'
|
||||
ENV NGINX_LISTEN_PORT '80'
|
||||
ENV SHOW_CATALOG_NB_TAGS 'false'
|
||||
|
||||
COPY nginx/default.conf /etc/nginx/conf.d/default.conf
|
||||
COPY bin/90-docker-registry-ui.sh /docker-entrypoint.d/90-docker-registry-ui.sh
|
||||
COPY dist/ /usr/share/nginx/html/
|
||||
COPY favicon.ico /usr/share/nginx/html/
|
||||
|
||||
RUN chown -R nginx:nginx /etc/nginx/ /usr/share/nginx/html/ /var/cache/nginx
|
||||
|
||||
71
bin/90-docker-registry-ui.sh
Executable file
71
bin/90-docker-registry-ui.sh
Executable file
@@ -0,0 +1,71 @@
|
||||
#!/bin/sh
|
||||
|
||||
sed -i "s~\${REGISTRY_URL}~${REGISTRY_URL}~" index.html
|
||||
sed -i "s~\${REGISTRY_TITLE}~${REGISTRY_TITLE}~" index.html
|
||||
sed -i "s~\${PULL_URL}~${PULL_URL}~" index.html
|
||||
sed -i "s~\${SINGLE_REGISTRY}~${SINGLE_REGISTRY}~" index.html
|
||||
sed -i "s~\${CATALOG_ELEMENTS_LIMIT}~${CATALOG_ELEMENTS_LIMIT}~" index.html
|
||||
sed -i "s~\${SHOW_CONTENT_DIGEST}~${SHOW_CONTENT_DIGEST}~" index.html
|
||||
sed -i "s~\${DEFAULT_REGISTRIES}~${DEFAULT_REGISTRIES}~" index.html
|
||||
sed -i "s~\${READ_ONLY_REGISTRIES}~${READ_ONLY_REGISTRIES}~" index.html
|
||||
sed -i "s~\${SHOW_CATALOG_NB_TAGS}~${SHOW_CATALOG_NB_TAGS}~" index.html
|
||||
sed -i "s~\${HISTORY_CUSTOM_LABELS}~${HISTORY_CUSTOM_LABELS}~" index.html
|
||||
sed -i "s~\${USE_CONTROL_CACHE_HEADER}~${USE_CONTROL_CACHE_HEADER}~" index.html
|
||||
|
||||
if [ -z "${DELETE_IMAGES}" ] || [ "${DELETE_IMAGES}" = false ] ; then
|
||||
sed -i "s/\${DELETE_IMAGES}/false/" index.html
|
||||
else
|
||||
sed -i "s/\${DELETE_IMAGES}/true/" index.html
|
||||
fi
|
||||
|
||||
get_nginx_proxy_headers() {
|
||||
(
|
||||
env &&
|
||||
if [ -f "/etc/nginx/.env" ]; then
|
||||
cat /etc/nginx/.env
|
||||
# Force new line
|
||||
echo ""
|
||||
fi
|
||||
) | while read e; do
|
||||
if [ -n "$(echo $e | grep -o '^NGINX_PROXY_HEADER_')" ]; then
|
||||
key=$(echo ${e%%=*} | sed 's/^NGINX_PROXY_HEADER_//' | sed 's/_/-/g')
|
||||
value=${e#*=}
|
||||
echo -n "proxy_set_header ${key} \"${value}\"; "
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
get_nginx_proxy_pass_headers() {
|
||||
(
|
||||
env &&
|
||||
if [ -f "/etc/nginx/.env" ]; then
|
||||
cat /etc/nginx/.env
|
||||
# Force new line
|
||||
echo ""
|
||||
fi
|
||||
) | while read e; do
|
||||
if [ -n "$(echo $e | grep -o '^NGINX_PROXY_PASS_HEADER_')" ]; then
|
||||
key=$(echo ${e%%=*} | sed 's/^NGINX_PROXY_PASS_HEADER_//' | sed 's/_/-/g')
|
||||
echo -n "proxy_pass_header \"${key}\"; "
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
if [ -n "${NGINX_PROXY_PASS_URL}" ] ; then
|
||||
sed -i "s,\${NGINX_PROXY_PASS_URL},${NGINX_PROXY_PASS_URL}," /etc/nginx/conf.d/default.conf
|
||||
sed -i "s^\${NGINX_PROXY_HEADERS}^$(get_nginx_proxy_headers)^" /etc/nginx/conf.d/default.conf
|
||||
sed -i "s^\${NGINX_PROXY_PASS_HEADERS}^$(get_nginx_proxy_pass_headers)^" /etc/nginx/conf.d/default.conf
|
||||
sed -i "s,#!,," /etc/nginx/conf.d/default.conf
|
||||
fi
|
||||
|
||||
if [ "$(whoami)" != "root" ]; then
|
||||
if [ "$NGINX_LISTEN_PORT" = "80" ]; then
|
||||
NGINX_LISTEN_PORT="8080"
|
||||
fi
|
||||
sed -i "/user nginx;/d" /etc/nginx/nginx.conf
|
||||
sed -i "s,/var/run/nginx.pid,/tmp/nginx.pid," /etc/nginx/nginx.conf
|
||||
fi
|
||||
|
||||
if [ "$NGINX_LISTEN_PORT" != "80" ]; then
|
||||
sed -i "s,listen 80;,listen $NGINX_LISTEN_PORT;," /etc/nginx/conf.d/default.conf
|
||||
fi
|
||||
@@ -1,20 +0,0 @@
|
||||
#!/bin/sh
|
||||
$@
|
||||
sed -i "s,\${URL},${URL}," scripts/docker-registry-ui.js
|
||||
sed -i "s,\${REGISTRY_TITLE},${REGISTRY_TITLE}," scripts/docker-registry-ui.js
|
||||
sed -i "s,\${PULL_URL},${PULL_URL}," scripts/docker-registry-ui.js
|
||||
|
||||
if [ -z "${DELETE_IMAGES}" ] || [ "${DELETE_IMAGES}" = false ] ; then
|
||||
sed -i -r "s/(isImageRemoveActivated[:=])[^,;]*/\1false/" scripts/docker-registry-ui.js
|
||||
fi
|
||||
|
||||
if [ -n "${REGISTRY_URL}" ] ; then
|
||||
sed -i "s,\${REGISTRY_URL},${REGISTRY_URL}," /etc/nginx/conf.d/default.conf
|
||||
sed -i "s,#!,," /etc/nginx/conf.d/default.conf
|
||||
fi
|
||||
|
||||
if [ -z "$@" ]; then
|
||||
nginx -g "daemon off;"
|
||||
else
|
||||
$@
|
||||
fi
|
||||
21
bin/fill-registry
Executable file
21
bin/fill-registry
Executable file
@@ -0,0 +1,21 @@
|
||||
#!/bin/sh
|
||||
|
||||
for i in alpine chronograf:alpine consul debian jawg/mapnik3 nginx:alpine postgres:alpine redis:alpine telegraf:alpine joxit/docker-registry-ui joxit/kosmtik joxit/node joxit/rust-openssl joxit/tile-server-ui; do
|
||||
docker pull $i
|
||||
docker tag $i 127.0.0.1:5000/$i
|
||||
docker push 127.0.0.1:5000/$i
|
||||
done
|
||||
|
||||
for i in arm64v8 arm32v7 master latest debian main; do
|
||||
docker pull joxit/docker-registry-ui:$i
|
||||
docker tag joxit/docker-registry-ui:$i 127.0.0.1:5000/joxit/docker-registry-ui:$i
|
||||
docker push 127.0.0.1:5000/joxit/docker-registry-ui:$i
|
||||
done
|
||||
|
||||
for v in 1.1 1.2 1.3 1.4 1.5 2.0 ; do
|
||||
for type in "-debian" ""; do
|
||||
docker pull joxit/docker-registry-ui:$v$type
|
||||
docker tag joxit/docker-registry-ui:$v$type 127.0.0.1:5000/joxit/docker-registry-ui:$v$type
|
||||
docker push 127.0.0.1:5000/joxit/docker-registry-ui:$v$type
|
||||
done
|
||||
done
|
||||
@@ -1,26 +0,0 @@
|
||||
# Copyright (C) 2016-2018 Jones Magloire @Joxit
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
FROM nginx:latest
|
||||
|
||||
LABEL maintainer="Jones MAGLOIRE @Joxit"
|
||||
|
||||
WORKDIR /usr/share/nginx/html/
|
||||
|
||||
COPY nginx/default.conf /etc/nginx/conf.d/default.conf
|
||||
COPY dist/ /usr/share/nginx/html/
|
||||
COPY dist/scripts/docker-registry-ui-static.js /usr/share/nginx/html/scripts/docker-registry-ui.js
|
||||
COPY bin/entrypoint /bin
|
||||
|
||||
ENTRYPOINT entrypoint
|
||||
@@ -18,4 +18,13 @@ LABEL maintainer="Jones MAGLOIRE @Joxit"
|
||||
|
||||
WORKDIR /usr/share/nginx/html/
|
||||
|
||||
ENV NGINX_PROXY_HEADER_Host '$http_host'
|
||||
ENV NGINX_LISTEN_PORT '80'
|
||||
ENV SHOW_CATALOG_NB_TAGS 'false'
|
||||
|
||||
COPY nginx/default.conf /etc/nginx/conf.d/default.conf
|
||||
COPY bin/90-docker-registry-ui.sh /docker-entrypoint.d/90-docker-registry-ui.sh
|
||||
COPY dist/ /usr/share/nginx/html/
|
||||
COPY favicon.ico /usr/share/nginx/html/
|
||||
|
||||
RUN chown -R nginx:nginx /etc/nginx/ /usr/share/nginx/html/ /var/cache/nginx
|
||||
|
||||
@@ -19,43 +19,40 @@
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="../dist/vendor.css">
|
||||
<link rel="stylesheet" href="../dist/style.css">
|
||||
<link href="https://fonts.googleapis.com/css?family=Roboto:regular,bold,italic,thin,light,bolditalic,black,medium&lang=en" rel="stylesheet" type="text/css">
|
||||
<link rel="stylesheet" href="../dist/docker-registry-ui.css">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta property="og:locale" content="en_US" />
|
||||
<meta name="description" content="This is the live demo for my project Docker Registry v2 web User Interface. Sources : https://github.com/Joxit/docker-registry-ui" />
|
||||
<meta property="og:description" content="This is the live demo for my project Docker Registry v2 web User Interface. Sources : https://github.com/Joxit/docker-registry-ui" />
|
||||
<meta name="description"
|
||||
content="This is the live demo for Docker Registry User Interface. Try it now! Sources : https://github.com/Joxit/docker-registry-ui" />
|
||||
<meta property="og:description"
|
||||
content="This is the live demo for Docker Registry User Interface. Try it now! Sources : https://github.com/Joxit/docker-registry-ui" />
|
||||
<link rel="canonical" href="https://joxit.dev/docker-registry-ui/demo/" />
|
||||
<meta property="og:url" content="https://joxit.dev/docker-registry-ui/demo/" />
|
||||
<meta property="og:site_name" content="Demo | Docker Registry UI" />
|
||||
<meta property="og:site_name" content="Live Demo | Docker Registry User Interface" />
|
||||
<meta name="twitter:card" content="summary" />
|
||||
<meta name="twitter:site" content="@Joxit" />
|
||||
<meta name="twitter:creator" content="@Jones Magloire" />
|
||||
<title>Demo | Docker Registry UI</title>
|
||||
<title>Live Demo | Docker Registry User Interface</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<app></app>
|
||||
<docker-registry-ui registry-url="" name="Demo Docker Registry UI" pull-url="" show-content-digest="true"
|
||||
is-image-remove-activated="true" catalog-elements-limit="1000" single-registry="false" default-registries="https://joxit.dev/docker-registry-demo">
|
||||
<script>
|
||||
if (localStorage.getItem('registryServer')) {
|
||||
localStorage.setItem('registryServer',
|
||||
localStorage.getItem('registryServer').replace(
|
||||
'https://raw.githubusercontent.com/Joxit/docker-registry-ui/master/demo',
|
||||
'https://joxit.dev/docker-registry-demo'
|
||||
)
|
||||
)
|
||||
}
|
||||
</script>
|
||||
<script src="../dist/docker-registry-ui.js"></script>
|
||||
<script>
|
||||
if ((function() {
|
||||
try {
|
||||
const res = JSON.parse(localStorage.getItem('registryServer'));
|
||||
if (!(res instanceof Array) || res.length == 0) {
|
||||
return true;
|
||||
}
|
||||
} catch (e) { return true; }
|
||||
})()) {
|
||||
localStorage.setItem('registryServer', JSON.stringify(['https://raw.githubusercontent.com/Joxit/docker-registry-ui/master/demo']))
|
||||
}
|
||||
|
||||
</script>
|
||||
<script src="../dist/scripts/vendor.js"></script>
|
||||
<script src="../dist/scripts/docker-registry-ui.js"></script>
|
||||
<script>
|
||||
(function(i, s, o, g, r, a, m) {
|
||||
(function (i, s, o, g, r, a, m) {
|
||||
i['GoogleAnalyticsObject'] = r;
|
||||
i[r] = i[r] || function() {
|
||||
i[r] = i[r] || function () {
|
||||
(i[r].q = i[r].q || []).push(arguments)
|
||||
}, i[r].l = 1 * new Date();
|
||||
a = s.createElement(o),
|
||||
@@ -65,7 +62,7 @@
|
||||
m.parentNode.insertBefore(a, m)
|
||||
})(window, document, 'script', 'https://www.google-analytics.com/analytics.js', 'ga');
|
||||
|
||||
ga('create', 'UA-99119327-1', 'auto');
|
||||
ga('create', 'G-T158HYBVZ2', 'auto');
|
||||
ga('send', 'pageview');
|
||||
</script>
|
||||
</body>
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
{
|
||||
"repositories": ["alpine", "debian", "joxit/docker-registry-ui", "joxit/kosmtik", "joxit/node", "joxit/rust-openssl", "joxit/tile-server-ui", "nginx"]
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
{"architecture":"amd64","config":{"Hostname":"","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"],"Cmd":["/bin/sh"],"ArgsEscaped":true,"Image":"sha256:49573004c44f9413c7db63cbab336356e7a8843139fca5e68f92d84a56f0e6df","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":null},"container":"c44d11fa67899a984d66f5542092b474f11ca95cc9b03b1470546f16ec8ce74f","container_config":{"Hostname":"c44d11fa6789","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"],"Cmd":["/bin/sh","-c","#(nop) ","CMD [\"/bin/sh\"]"],"ArgsEscaped":true,"Image":"sha256:49573004c44f9413c7db63cbab336356e7a8843139fca5e68f92d84a56f0e6df","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":{}},"created":"2018-12-21T00:21:30.122610396Z","docker_version":"18.06.1-ce","history":[{"created":"2018-12-21T00:21:29.97055571Z","created_by":"/bin/sh -c #(nop) ADD file:2ff00caea4e83dfade726ca47e3c795a1e9acb8ac24e392785c474ecf9a621f2 in / "},{"created":"2018-12-21T00:21:30.122610396Z","created_by":"/bin/sh -c #(nop) CMD [\"/bin/sh\"]","empty_layer":true}],"os":"linux","rootfs":{"type":"layers","diff_ids":["sha256:7bff100f35cb359a368537bb07829b055fe8e0b1cb01085a3a628ae9c187c7b8"]}}
|
||||
@@ -1 +0,0 @@
|
||||
{"schemaVersion":2,"mediaType":"application/vnd.docker.distribution.manifest.v2+json","config":{"mediaType":"application/vnd.docker.container.image.v1+json","size":1511,"digest":"sha256:3f53bb00af943dfdf815650be70c0fa7b426e56a66f5e3362b47a129d57d5991"},"layers":[{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":2207025,"digest":"sha256:cd784148e3483c2c86c50a48e535302ab0288bebd587accf40b714fffd0646b3"}]}
|
||||
@@ -1 +0,0 @@
|
||||
{"name":"alpine","tags":["latest"]}
|
||||
@@ -1 +0,0 @@
|
||||
{"architecture":"amd64","config":{"Hostname":"","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"],"Cmd":["bash"],"ArgsEscaped":true,"Image":"sha256:438932f21637c6a0ba3eeb7e66caf4e92259f324ac99978c8ad9277ade8aa220","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":null},"container":"c57ac0acf33cb00abdd905d916191ae4156ab0ff8116d71da3cd08a19303ab72","container_config":{"Hostname":"c57ac0acf33c","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"],"Cmd":["/bin/sh","-c","#(nop) ","CMD [\"bash\"]"],"ArgsEscaped":true,"Image":"sha256:438932f21637c6a0ba3eeb7e66caf4e92259f324ac99978c8ad9277ade8aa220","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":{}},"created":"2018-12-28T23:29:38.226681736Z","docker_version":"18.06.1-ce","history":[{"created":"2018-12-28T23:29:37.981962131Z","created_by":"/bin/sh -c #(nop) ADD file:da71baf0d22cb2ede91c5e3ff959607e47459a9d7bda220a62a3da362b0e59ea in / "},{"created":"2018-12-28T23:29:38.226681736Z","created_by":"/bin/sh -c #(nop) CMD [\"bash\"]","empty_layer":true}],"os":"linux","rootfs":{"type":"layers","diff_ids":["sha256:c581f4ede92df7272da388a45126ddd2944a4eeb27d3b0d80ee71cd633761394"]}}
|
||||
@@ -1 +0,0 @@
|
||||
{"schemaVersion":2,"mediaType":"application/vnd.docker.distribution.manifest.v2+json","config":{"mediaType":"application/vnd.docker.container.image.v1+json","size":1503,"digest":"sha256:de8b49d4b0b316649307dcdda2ca0c6127f8ccdaa9c3fda6fdb21cb237cfafd8"},"layers":[{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":45323792,"digest":"sha256:cd8eada9c7bb496eb685fc6d2198c33db7cb05daf0fde42e4cf5bf0127cbdf38"}]}
|
||||
@@ -1 +0,0 @@
|
||||
{"name":"debian","tags":["latest"]}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
{"schemaVersion":2,"mediaType":"application/vnd.docker.distribution.manifest.v2+json","config":{"mediaType":"application/vnd.docker.container.image.v1+json","size":9149,"digest":"sha256:b819859c9b57b5b93dc1229ffe0e1e8aa9ec66470f04e97162a8009635f6e90c"},"layers":[{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":2065537,"digest":"sha256:ff3a5c916c92643ff77519ffa742d3ec61b7f591b6b7504599d95a4a41134e28"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":5793952,"digest":"sha256:b4f3ef22ce5b66e7231a887f75949353361d0af7b53ebcdc32eaaf77cbb2e2aa"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":487,"digest":"sha256:8a6541d11dc3512a4db5c2d5e0e5b7542775b7e14c088ce6fb993262715748ae"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":625,"digest":"sha256:7e869e2dcf68e1ed911813a96254fde3ff58cbf1e0641ffb68c36275f8c68c40"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":367435,"digest":"sha256:070e88cc35da784dd4a109fd1d142c662047a5bfeaa1ae506faf0ba9846488ff"}]}
|
||||
@@ -1 +0,0 @@
|
||||
{"schemaVersion":2,"mediaType":"application/vnd.docker.distribution.manifest.v2+json","config":{"mediaType":"application/vnd.docker.container.image.v1+json","size":7797,"digest":"sha256:754e7e39c291e2100cc06c9e82ae2623a60baf691b89a32f8ed655a183da1cb8"},"layers":[{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":22488979,"digest":"sha256:2a72cbf407d67c7a7a76dd48e432091678e297140dce050ad5eccad918a9f8d6"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":21993443,"digest":"sha256:eccc107d7abd0e70046b82b73d5e5d53ec33fd6a0bef8231c52be2f3486ca32f"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":203,"digest":"sha256:76aa3935d77c8c436652580479edcefd91e627507a356e957583dd12215a56e7"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":367436,"digest":"sha256:48ec57ac365e0f96a48f1735a24d3a5bcf413f95608afab68ca829557dba735b"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":1152,"digest":"sha256:dd56f3a8b1e5ee2fe325315f1d917ee68dbc1307d31de97fd43483200fd7228c"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":2658,"digest":"sha256:edf9db7a138d7bfad8daaab3fd1b8e6a9388a52296e994c15407726a724be28c"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":324,"digest":"sha256:3f836ed58dd9893c844659695dde107b6da293ae3d2597f45ae04b07d9557d14"}]}
|
||||
@@ -1 +0,0 @@
|
||||
{"schemaVersion":2,"mediaType":"application/vnd.docker.distribution.manifest.v2+json","config":{"mediaType":"application/vnd.docker.container.image.v1+json","size":8946,"digest":"sha256:ce073450cb3197130310d433019f0ec24fc016a407ae4158b288bfff6aa3946c"},"layers":[{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":2065537,"digest":"sha256:ff3a5c916c92643ff77519ffa742d3ec61b7f591b6b7504599d95a4a41134e28"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":5833353,"digest":"sha256:d81b148fab7c3ce295657d0f8b621824e7afc19a8edd4abbf20b9dbafb2f62c7"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":490,"digest":"sha256:f9fe12447daf15e667ba4c67d66c585ac07273748d5ccf78af1544e67324953b"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":625,"digest":"sha256:ad017fd52da2cac5b962bc191e9d40397b93e73027d21240477274d154784222"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":336683,"digest":"sha256:c451cab73ccbd177e68a2e3a9583fa52e5542f049602ed4a4645de5afa6dc51b"}]}
|
||||
@@ -1 +0,0 @@
|
||||
{"schemaVersion":2,"mediaType":"application/vnd.docker.distribution.manifest.v2+json","config":{"mediaType":"application/vnd.docker.container.image.v1+json","size":6480,"digest":"sha256:0132a9e0699727a863cdddaae3ffe1bfb312267f0df732ce06d623ca2f1afd4a"},"layers":[{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":22485906,"digest":"sha256:be8881be8156e4068e611fe956aba2b9593ebd953be14fb7feea6d0659aa3abe"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":22136082,"digest":"sha256:f2f27ed9664fca45cca0897d7a818800b7d32e1a9c0bdc4a1e604702235280b7"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":204,"digest":"sha256:54ff137eb1b2178cb9419bd77a59b6a4504633b35552853f98ff4043d3c2dbdc"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":337679,"digest":"sha256:e7492ce1c3ddb80ab146f812402e72f59870a985f58c941b2ee83c62ad991a28"}]}
|
||||
@@ -1 +0,0 @@
|
||||
{"schemaVersion":2,"mediaType":"application/vnd.docker.distribution.manifest.v2+json","config":{"mediaType":"application/vnd.docker.container.image.v1+json","size":7729,"digest":"sha256:ef410ecc797305dca1b53549b3a312c004383aa07f8940010186e80f73512cbe"},"layers":[{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":22485906,"digest":"sha256:be8881be8156e4068e611fe956aba2b9593ebd953be14fb7feea6d0659aa3abe"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":22136082,"digest":"sha256:f2f27ed9664fca45cca0897d7a818800b7d32e1a9c0bdc4a1e604702235280b7"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":204,"digest":"sha256:54ff137eb1b2178cb9419bd77a59b6a4504633b35552853f98ff4043d3c2dbdc"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":849,"digest":"sha256:85edb5c9337e21b3304835b12303939765a072a76c843b2bf6ba44d4aa5e94e1"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":337678,"digest":"sha256:931efc7de8127dac6dbeec134a0aafc60c6e5bc7f2ad65b4ede8a64bbabb0d5b"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":1559,"digest":"sha256:d8a17ffe5e89a81a91ff07fbf122f8b7a2f506e90290c9a2b9832978cbb44d60"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":3478,"digest":"sha256:5cbcf112f2890dfc7de50f2b88bd0034086df622f9897520a138b16de641da81"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":396,"digest":"sha256:b56928aad9e6208a2dcdbbdf888426b01f45951023fbf36e5a68935e69881e72"}]}
|
||||
@@ -1 +0,0 @@
|
||||
{"schemaVersion":2,"mediaType":"application/vnd.docker.distribution.manifest.v2+json","config":{"mediaType":"application/vnd.docker.container.image.v1+json","size":10108,"digest":"sha256:f2877265a11b58f17667b21decee7620b61e71ca49c84ebc1e83903488de10a1"},"layers":[{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":2065537,"digest":"sha256:ff3a5c916c92643ff77519ffa742d3ec61b7f591b6b7504599d95a4a41134e28"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":5833353,"digest":"sha256:d81b148fab7c3ce295657d0f8b621824e7afc19a8edd4abbf20b9dbafb2f62c7"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":490,"digest":"sha256:f9fe12447daf15e667ba4c67d66c585ac07273748d5ccf78af1544e67324953b"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":625,"digest":"sha256:ad017fd52da2cac5b962bc191e9d40397b93e73027d21240477274d154784222"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":837,"digest":"sha256:16ddc778553afbb993045d7715fd5a9b5aad5072d800e2697399c603c68c3cb4"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":336681,"digest":"sha256:2dfdd1d29d5ef4542da752163bba25fdf013f81c5d484b08048bf394f6c5f18f"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":1391,"digest":"sha256:8fc6f767674523231f11387c8f7922f8aba2fc8fa29dcbf81aefeee58481bfa8"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":2831,"digest":"sha256:0734f165b9fb13d0a84a9d8d1855ddf62ac48059ab36ba1057c164004afb4703"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":398,"digest":"sha256:061c54bddde125bfea18a9963885a5d4fe50117c906e51767da143132a3c460a"}]}
|
||||
@@ -1 +0,0 @@
|
||||
{"schemaVersion":2,"mediaType":"application/vnd.docker.distribution.manifest.v2+json","config":{"mediaType":"application/vnd.docker.container.image.v1+json","size":10105,"digest":"sha256:34754f5270032ae9cad70c6e58c53c5f07e7d7db4c407725d96d8743f98dfd7d"},"layers":[{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":2065537,"digest":"sha256:ff3a5c916c92643ff77519ffa742d3ec61b7f591b6b7504599d95a4a41134e28"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":5833353,"digest":"sha256:d81b148fab7c3ce295657d0f8b621824e7afc19a8edd4abbf20b9dbafb2f62c7"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":490,"digest":"sha256:f9fe12447daf15e667ba4c67d66c585ac07273748d5ccf78af1544e67324953b"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":625,"digest":"sha256:ad017fd52da2cac5b962bc191e9d40397b93e73027d21240477274d154784222"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":849,"digest":"sha256:facc1257cc264ce12d5795c28e6ac649a7dfc1934bd9588840eba2253862cace"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":337516,"digest":"sha256:ab8f1df833c2ca3c50cb6b451cc389996189711dfe1b92003a3d728b81801c84"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":1405,"digest":"sha256:e1c71178faffa529cd4c3184a838bef49b0aaaa37961192ae5106d0cac6ec1cb"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":3475,"digest":"sha256:25e24a94b69c21099696902824a2c9b5b2702142daf2ceff7b7503df497c6ce0"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":403,"digest":"sha256:13c745ae3f2db9ef4ab95f74227d9d17b7ad57d359936402cd1b15bd118cc091"}]}
|
||||
@@ -1 +0,0 @@
|
||||
{"schemaVersion":2,"mediaType":"application/vnd.docker.distribution.manifest.v2+json","config":{"mediaType":"application/vnd.docker.container.image.v1+json","size":10105,"digest":"sha256:34754f5270032ae9cad70c6e58c53c5f07e7d7db4c407725d96d8743f98dfd7d"},"layers":[{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":2065537,"digest":"sha256:ff3a5c916c92643ff77519ffa742d3ec61b7f591b6b7504599d95a4a41134e28"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":5833353,"digest":"sha256:d81b148fab7c3ce295657d0f8b621824e7afc19a8edd4abbf20b9dbafb2f62c7"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":490,"digest":"sha256:f9fe12447daf15e667ba4c67d66c585ac07273748d5ccf78af1544e67324953b"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":625,"digest":"sha256:ad017fd52da2cac5b962bc191e9d40397b93e73027d21240477274d154784222"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":849,"digest":"sha256:facc1257cc264ce12d5795c28e6ac649a7dfc1934bd9588840eba2253862cace"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":337516,"digest":"sha256:ab8f1df833c2ca3c50cb6b451cc389996189711dfe1b92003a3d728b81801c84"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":1405,"digest":"sha256:e1c71178faffa529cd4c3184a838bef49b0aaaa37961192ae5106d0cac6ec1cb"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":3475,"digest":"sha256:25e24a94b69c21099696902824a2c9b5b2702142daf2ceff7b7503df497c6ce0"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":403,"digest":"sha256:13c745ae3f2db9ef4ab95f74227d9d17b7ad57d359936402cd1b15bd118cc091"}]}
|
||||
@@ -1 +0,0 @@
|
||||
{"schemaVersion":2,"mediaType":"application/vnd.docker.distribution.manifest.v2+json","config":{"mediaType":"application/vnd.docker.container.image.v1+json","size":8860,"digest":"sha256:c3cca97469edb8874197c306de569fd0b73aef8269fbd6847f0b6bb6e7992fbf"},"layers":[{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":2206931,"digest":"sha256:4fe2ade4980c2dda4fc95858ebb981489baec8c1e4bd282ab1c3560be8ff9bde"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":5530797,"digest":"sha256:e11b023b07a0c222dd4ef40e7e270c629d028264dfe1f538f9f831d13a8991c0"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":492,"digest":"sha256:aaf7d5908de55e0233f57e802d18f47b9d869fb801c9125760cc61ae90fccc46"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":625,"digest":"sha256:8ae3a5ca453fd6da9b2a361117bd3d39eb01c46c85b368a2f2ef30f4ecdf984b"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":338157,"digest":"sha256:02155856a84cf21280e5ed8b806d1447b00105df3161a8d793fbcb7fe9f0360e"}]}
|
||||
@@ -1 +0,0 @@
|
||||
{"schemaVersion":2,"mediaType":"application/vnd.docker.distribution.manifest.v2+json","config":{"mediaType":"application/vnd.docker.container.image.v1+json","size":6478,"digest":"sha256:59752d8484e28e7cc78367e041dae9abf901e4a1463cecbe7c8da1d8b1b8bf1f"},"layers":[{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":22486277,"digest":"sha256:a5a6f2f73cd8abbdc55d0df0d8834f7262713e87d6c8800ea3851f103025e0f0"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":22204196,"digest":"sha256:67da5fbcb7a04397eda35dccb073d8569d28de13172fbd569fbb7a3e30b5886b"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":203,"digest":"sha256:e82455fa5628738170735528c8db36567b5423ec59802a1e2c084ed42b082527"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":338162,"digest":"sha256:2979df83f4504ccb29308f0f8fea2e56951e922a9b34a1169e4e76a22560d176"}]}
|
||||
@@ -1 +0,0 @@
|
||||
{"schemaVersion":2,"mediaType":"application/vnd.docker.distribution.manifest.v2+json","config":{"mediaType":"application/vnd.docker.container.image.v1+json","size":7467,"digest":"sha256:462e63a3ccc5313f27bd7645fa9724bd285f079fa7eddd85ba216b7533d15dde"},"layers":[{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":22486277,"digest":"sha256:a5a6f2f73cd8abbdc55d0df0d8834f7262713e87d6c8800ea3851f103025e0f0"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":22204196,"digest":"sha256:67da5fbcb7a04397eda35dccb073d8569d28de13172fbd569fbb7a3e30b5886b"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":203,"digest":"sha256:e82455fa5628738170735528c8db36567b5423ec59802a1e2c084ed42b082527"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":850,"digest":"sha256:a102fc4519113b2ad5ac7d964d20745a482654bb7a3c8a3b36fde6092106ff86"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":338163,"digest":"sha256:5c28bbe963b7cc7f9d97628af365f72ae51358f532c9ca42f684e931d15a7b4c"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":4365,"digest":"sha256:32bc94f83df4c411010dd99a05f45417c21fb7617a26d50cf57649d69e33f868"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":404,"digest":"sha256:55de73db13412a14ce428b178e2ff2bcb42999e72637af8fccfe9fd1b69410a0"}]}
|
||||
@@ -1 +0,0 @@
|
||||
{"schemaVersion":2,"mediaType":"application/vnd.docker.distribution.manifest.v2+json","config":{"mediaType":"application/vnd.docker.container.image.v1+json","size":9851,"digest":"sha256:945480c91d321706c01b9c7008416f0e6567e571748ff0322120587bb28a2011"},"layers":[{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":2206931,"digest":"sha256:4fe2ade4980c2dda4fc95858ebb981489baec8c1e4bd282ab1c3560be8ff9bde"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":5530797,"digest":"sha256:e11b023b07a0c222dd4ef40e7e270c629d028264dfe1f538f9f831d13a8991c0"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":492,"digest":"sha256:aaf7d5908de55e0233f57e802d18f47b9d869fb801c9125760cc61ae90fccc46"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":625,"digest":"sha256:8ae3a5ca453fd6da9b2a361117bd3d39eb01c46c85b368a2f2ef30f4ecdf984b"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":844,"digest":"sha256:37aead32428f258f5900860894cd830f000c23d399a80542c749424120686dc9"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":338152,"digest":"sha256:a119cc63d3799c5ae645ebe394f873398f9ad9d71210d5ab9a1c21f44f2bce10"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":4354,"digest":"sha256:eee0c92191cf651ee872239596d12b459887e7df2411effab2638781deb92369"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":406,"digest":"sha256:867bd0ae6cb9d27d0ab562e993bf20a37bb07c791ba563f8bae4a3cf29a45147"}]}
|
||||
@@ -1 +0,0 @@
|
||||
{"schemaVersion":2,"mediaType":"application/vnd.docker.distribution.manifest.v2+json","config":{"mediaType":"application/vnd.docker.container.image.v1+json","size":8861,"digest":"sha256:2f5177a4cf41c3f737b5b1bd6b4adcaf311d323dcbb742c662ba5c769083ed21"},"layers":[{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":2206931,"digest":"sha256:4fe2ade4980c2dda4fc95858ebb981489baec8c1e4bd282ab1c3560be8ff9bde"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":5535581,"digest":"sha256:2963b79251cbc43763339016369cd0d6b2dbe2a6f799e9936259cfa407bf93e4"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":492,"digest":"sha256:8ce2a7ad052e8e390c30ff41a6faa0ce5de42cb8b2082ef78f8695cbb43d7bf7"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":630,"digest":"sha256:8571e73c6abf7d274f5feb87bf7cc9d0b7a0d63ee4e89b7368ee46a69ac644df"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":338327,"digest":"sha256:7388f741e300450dfe68076f0fa57ac2e68601edf6369972cef9c8c4f1b0e3c6"}]}
|
||||
@@ -1 +0,0 @@
|
||||
{"schemaVersion":2,"mediaType":"application/vnd.docker.distribution.manifest.v2+json","config":{"mediaType":"application/vnd.docker.container.image.v1+json","size":6479,"digest":"sha256:4d7df6f655fbb4e47f0103a39daf2e54944d66c28e3199aa92a924c8d95ad963"},"layers":[{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":22486277,"digest":"sha256:a5a6f2f73cd8abbdc55d0df0d8834f7262713e87d6c8800ea3851f103025e0f0"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":22205174,"digest":"sha256:1ba02017c4b278fe664e669af5e2eff59f92259df6c2f15261f150ae66599dff"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":203,"digest":"sha256:33b176c904dea23b745303a0a69511750d009ac04fd9957520975a0546a67799"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":338334,"digest":"sha256:210740d9628021157f51c55d4510546827ec64d5ee4b5105f85f0b0b5168c110"}]}
|
||||
@@ -1 +0,0 @@
|
||||
{"schemaVersion":2,"mediaType":"application/vnd.docker.distribution.manifest.v2+json","config":{"mediaType":"application/vnd.docker.container.image.v1+json","size":7468,"digest":"sha256:84955175fe3ab1375d60676e1f5db6b0e0b87a28412587823c20ecc527e9b5a5"},"layers":[{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":22486277,"digest":"sha256:a5a6f2f73cd8abbdc55d0df0d8834f7262713e87d6c8800ea3851f103025e0f0"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":22205174,"digest":"sha256:1ba02017c4b278fe664e669af5e2eff59f92259df6c2f15261f150ae66599dff"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":203,"digest":"sha256:33b176c904dea23b745303a0a69511750d009ac04fd9957520975a0546a67799"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":848,"digest":"sha256:89b978a407e7a40b978a660beda40732992205c08783d6d82a36c9d853c32eb7"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":338334,"digest":"sha256:d22dba22a2a1cadba0d64dae0c20af3d526889be63cf21d9ac3370ff686da9ad"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":4496,"digest":"sha256:667e5eef933b5ef05fa18ecc2460fb54d3848b45afc5bc54cdfa9f8815926231"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":407,"digest":"sha256:3212b1bf2d6fd71145d96cd58f97f5c969990f0fb13b26c858c0ed394593ade8"}]}
|
||||
@@ -1 +0,0 @@
|
||||
{"schemaVersion":2,"mediaType":"application/vnd.docker.distribution.manifest.v2+json","config":{"mediaType":"application/vnd.docker.container.image.v1+json","size":9851,"digest":"sha256:7ce20c30831e04cafbb566ddad63b8131d46ed4ad89703e582892827dbf4e74b"},"layers":[{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":2206931,"digest":"sha256:4fe2ade4980c2dda4fc95858ebb981489baec8c1e4bd282ab1c3560be8ff9bde"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":5535581,"digest":"sha256:2963b79251cbc43763339016369cd0d6b2dbe2a6f799e9936259cfa407bf93e4"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":492,"digest":"sha256:8ce2a7ad052e8e390c30ff41a6faa0ce5de42cb8b2082ef78f8695cbb43d7bf7"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":630,"digest":"sha256:8571e73c6abf7d274f5feb87bf7cc9d0b7a0d63ee4e89b7368ee46a69ac644df"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":851,"digest":"sha256:ff6934e8e0afdd8ee4b488caead0c14481f04400b0360e35b3245696a2b5ed01"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":338325,"digest":"sha256:a65364be63290b59c6f8260562a37aad9d34e8d512ffba348288bbbda86b63a4"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":4490,"digest":"sha256:3b427d5d88172713b95a9df65f52147d64aa017a4d9025ce84cfd3ddf97a6942"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":406,"digest":"sha256:4310e646fa174dbb3d370f64f0e166c1b3b3d8cc1b5e377b1b899f69e2e01f09"}]}
|
||||
@@ -1 +0,0 @@
|
||||
{"schemaVersion":2,"mediaType":"application/vnd.docker.distribution.manifest.v2+json","config":{"mediaType":"application/vnd.docker.container.image.v1+json","size":8856,"digest":"sha256:eeff01f7246318a77165269b13a96f3f75c125c731c41345d53945ab93e52566"},"layers":[{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":2207025,"digest":"sha256:cd784148e3483c2c86c50a48e535302ab0288bebd587accf40b714fffd0646b3"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":5535735,"digest":"sha256:6e3058b2db8a6014d1395fbf478446e8af611c39df514978c66f23394871b006"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":494,"digest":"sha256:7ca4d29669c121345b3ecaddc9f6908c05b6de3c6ef9773f677fecb7d0f895d7"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":628,"digest":"sha256:a14cf6997716d72a070dca609539a16e09938e066f18bb9a69f5d0c2ac2a28ac"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":375645,"digest":"sha256:793d043bf13fca331b3ba849e4c11e6a98a2551a8f59e1493d18541c232d1144"}]}
|
||||
@@ -1 +0,0 @@
|
||||
{"schemaVersion":2,"mediaType":"application/vnd.docker.distribution.manifest.v2+json","config":{"mediaType":"application/vnd.docker.container.image.v1+json","size":6475,"digest":"sha256:2d6b75e8020ef2000d6a838fbd82a91baf63b43810d42ff34e75c0a837235b7a"},"layers":[{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":22492916,"digest":"sha256:177e7ef0df6987e0c5738a1fb5aba98b6b6e7a5fef992e481977dbb5ba3f91be"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":22229779,"digest":"sha256:ea57c53235dfe1ae1db219ca7cda6210c8f875367bcb892fdc6d86c047174f3d"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":204,"digest":"sha256:bbdb1fbd4a86c36dbc219ff18eba7a332d7a41a4101731874da06a708d4db2f9"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":375627,"digest":"sha256:9ce61e0bb14ec7df51569f5e55eb087112ea553e0a3b2fb1be80bc3e724f60fd"}]}
|
||||
@@ -1 +0,0 @@
|
||||
{"schemaVersion":2,"mediaType":"application/vnd.docker.distribution.manifest.v2+json","config":{"mediaType":"application/vnd.docker.container.image.v1+json","size":7464,"digest":"sha256:7fa0b3bfaac3de30a8459bb0686a50ca641ebcc941bf22cca83dd5f3bf472634"},"layers":[{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":22492916,"digest":"sha256:177e7ef0df6987e0c5738a1fb5aba98b6b6e7a5fef992e481977dbb5ba3f91be"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":22229779,"digest":"sha256:ea57c53235dfe1ae1db219ca7cda6210c8f875367bcb892fdc6d86c047174f3d"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":204,"digest":"sha256:bbdb1fbd4a86c36dbc219ff18eba7a332d7a41a4101731874da06a708d4db2f9"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":848,"digest":"sha256:45179b79be5c6fbf3f1176de20d772bd694d90ca8dd52471eb139fe02eb04194"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":375629,"digest":"sha256:a12ff02db17ad323cf329c843dd5e67d4a9f44e508a57a2c72ee28cc291132cb"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":6007,"digest":"sha256:7984baab26ca42eeb16e0525b7b826bec1a076affbd4b2dc9a163e6b9cb12f73"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":406,"digest":"sha256:28fa86d77aaa757604367a399848b8fb2b5f2522dbf93362f98b90a862bf6d47"}]}
|
||||
@@ -1 +0,0 @@
|
||||
{"schemaVersion":2,"mediaType":"application/vnd.docker.distribution.manifest.v2+json","config":{"mediaType":"application/vnd.docker.container.image.v1+json","size":9846,"digest":"sha256:4c9dddf8f39953b1860e83b94ef4c0d452d10a550c1e285feca965cc579d2535"},"layers":[{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":2207025,"digest":"sha256:cd784148e3483c2c86c50a48e535302ab0288bebd587accf40b714fffd0646b3"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":5535735,"digest":"sha256:6e3058b2db8a6014d1395fbf478446e8af611c39df514978c66f23394871b006"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":494,"digest":"sha256:7ca4d29669c121345b3ecaddc9f6908c05b6de3c6ef9773f677fecb7d0f895d7"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":628,"digest":"sha256:a14cf6997716d72a070dca609539a16e09938e066f18bb9a69f5d0c2ac2a28ac"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":847,"digest":"sha256:9b1b1f04343aa8ac9b80d2639e15059f4020416c7b903a8f23bf67020cf7e269"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":375642,"digest":"sha256:69adc4ca8736ed24567022546eb0860d83a0f870e0f1e602aa1df47f8b90aa74"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":6000,"digest":"sha256:79cfc386aadc6a2656903749ce209ab371ab023c3b8d7d4d6349b02f20787ef2"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":407,"digest":"sha256:e460318f7cf41f40ad0103a8495bf1cb8588717324ac1939cc901341432e2dcd"}]}
|
||||
@@ -1 +0,0 @@
|
||||
{"schemaVersion":2,"mediaType":"application/vnd.docker.distribution.manifest.v2+json","config":{"mediaType":"application/vnd.docker.container.image.v1+json","size":8851,"digest":"sha256:a3e584d825fe8eeb54d05c3c2cb184136558a4301cdc4799c1a96aa05566e92b"},"layers":[{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":2207025,"digest":"sha256:cd784148e3483c2c86c50a48e535302ab0288bebd587accf40b714fffd0646b3"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":5535735,"digest":"sha256:6e3058b2db8a6014d1395fbf478446e8af611c39df514978c66f23394871b006"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":494,"digest":"sha256:7ca4d29669c121345b3ecaddc9f6908c05b6de3c6ef9773f677fecb7d0f895d7"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":628,"digest":"sha256:a14cf6997716d72a070dca609539a16e09938e066f18bb9a69f5d0c2ac2a28ac"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":377015,"digest":"sha256:a3a156b14fd56dbf9ba045bf6cb8c31e31b318fefc8933ff5274ead99cb2b834"}]}
|
||||
@@ -1 +0,0 @@
|
||||
{"schemaVersion":2,"mediaType":"application/vnd.docker.distribution.manifest.v2+json","config":{"mediaType":"application/vnd.docker.container.image.v1+json","size":6476,"digest":"sha256:cf0be3e61be825c41365df2c3352164d3b040a1da28751366eab290c6bba317f"},"layers":[{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":22500707,"digest":"sha256:5e6ec7f28fb77f84f64b8c29fcb0a746260563f5858315e3e9fcc4aee2844840"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":22229795,"digest":"sha256:ab804f9bbcbe56bd453382373757c73b0d02efb6beadca0e45a4558911a87594"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":203,"digest":"sha256:052b395f16bcb36d7f7781a596a831139187760b6cbadf61b5b731bbc41d2690"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":377005,"digest":"sha256:865c1ca206935a9f8fb2bd9ccb2b519f203e6e20c2eb41646d523ba2a0d1f2f9"}]}
|
||||
@@ -1 +0,0 @@
|
||||
{"schemaVersion":2,"mediaType":"application/vnd.docker.distribution.manifest.v2+json","config":{"mediaType":"application/vnd.docker.container.image.v1+json","size":7465,"digest":"sha256:2a5c152cf2a21986771311045ca67caf98f14c3e913a27582f8db1dd840e02f1"},"layers":[{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":22500707,"digest":"sha256:5e6ec7f28fb77f84f64b8c29fcb0a746260563f5858315e3e9fcc4aee2844840"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":22229795,"digest":"sha256:ab804f9bbcbe56bd453382373757c73b0d02efb6beadca0e45a4558911a87594"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":203,"digest":"sha256:052b395f16bcb36d7f7781a596a831139187760b6cbadf61b5b731bbc41d2690"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":849,"digest":"sha256:cb43f84713f5e841dcd7f312b2f988ae02702dd0c990000afc678fab248101be"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":377006,"digest":"sha256:a9494c5d0b2dba4920c780143506a3027927083e5916ddd0c0847f8dd7b60812"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":6392,"digest":"sha256:70538cb8711ad9edb0527210b6121cb68516d525dabecee93a445c77b80d8cfc"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":407,"digest":"sha256:31a64bf1f1cf5d50ebbfebffc095a62f1c93c06383f4d9380ccfcd8de79a0bb6"}]}
|
||||
@@ -1 +0,0 @@
|
||||
{"schemaVersion":2,"mediaType":"application/vnd.docker.distribution.manifest.v2+json","config":{"mediaType":"application/vnd.docker.container.image.v1+json","size":8853,"digest":"sha256:2fa0503f7f85b8983aba5f3a9dcec6b81f8acd38ce90fa419ca0ea0c8cd1d8b5"},"layers":[{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":2206931,"digest":"sha256:4fe2ade4980c2dda4fc95858ebb981489baec8c1e4bd282ab1c3560be8ff9bde"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":5530797,"digest":"sha256:e11b023b07a0c222dd4ef40e7e270c629d028264dfe1f538f9f831d13a8991c0"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":492,"digest":"sha256:aaf7d5908de55e0233f57e802d18f47b9d869fb801c9125760cc61ae90fccc46"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":625,"digest":"sha256:8ae3a5ca453fd6da9b2a361117bd3d39eb01c46c85b368a2f2ef30f4ecdf984b"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":377030,"digest":"sha256:ec6cd7a681db3e146e84b6f55ebb9bb65b239bf136eb9e1fe2f34535d7403f65"}]}
|
||||
@@ -1 +0,0 @@
|
||||
{"schemaVersion":2,"mediaType":"application/vnd.docker.distribution.manifest.v2+json","config":{"mediaType":"application/vnd.docker.container.image.v1+json","size":6474,"digest":"sha256:4672df90c399a1bf61e08f122bff303fd3059febd8c4dfdfdd68a016037122bb"},"layers":[{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":19290286,"digest":"sha256:433444f4a04d4a68d83dfe1e90ccfe3d02ce163939e9b79dd87136d956b49408"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":20866281,"digest":"sha256:e49a2ddf3ab62320cdd67133efc4f6dc118cc2850342dd59b6d0696b27f36219"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":203,"digest":"sha256:08ac71c06960d1eaaadee6cefc2b407d73efecb8f0226389a6848fa0f0066fd7"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":377003,"digest":"sha256:bc5b4c34ddd8cf4ec5bf41bb7f2694e6318942514d845d215cab5606bfb91b99"}]}
|
||||
@@ -1 +0,0 @@
|
||||
{"schemaVersion":2,"mediaType":"application/vnd.docker.distribution.manifest.v2+json","config":{"mediaType":"application/vnd.docker.container.image.v1+json","size":7464,"digest":"sha256:de14ee479e35115c64364936038c81c1d808f2e205a9d0f42c326124e281442f"},"layers":[{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":19290286,"digest":"sha256:433444f4a04d4a68d83dfe1e90ccfe3d02ce163939e9b79dd87136d956b49408"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":20866281,"digest":"sha256:e49a2ddf3ab62320cdd67133efc4f6dc118cc2850342dd59b6d0696b27f36219"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":203,"digest":"sha256:08ac71c06960d1eaaadee6cefc2b407d73efecb8f0226389a6848fa0f0066fd7"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":849,"digest":"sha256:249b013a881e3bccbd19c94e697d13c1a2637d8142d71e515526cc83f6fc56f9"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":377004,"digest":"sha256:67a91d1b3f91d8473b77079f8967d72ff1fcbc96140c385d6759a04097546802"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":6396,"digest":"sha256:83276734f51d9516703b7c68e3a4e9ae5e6980baf98a444f2dadda587f21575e"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":404,"digest":"sha256:065858ce5f6e323493ef6023e6ceba4ecbf4c2d4a42b23d3a8a5f61a31435f58"}]}
|
||||
@@ -1 +0,0 @@
|
||||
{"schemaVersion":2,"mediaType":"application/vnd.docker.distribution.manifest.v2+json","config":{"mediaType":"application/vnd.docker.container.image.v1+json","size":6474,"digest":"sha256:9f812386d08a3a898429f4ff1b2e350c24a4fb46f4b038defb122c4739647bbc"},"layers":[{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":20350180,"digest":"sha256:711c3a2baeda87a6b9816cb812388d62d17396034e595a68d8ee5f938f9d77b3"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":21575316,"digest":"sha256:09af038856219494746875334915109e7d1ce0957e692851dd05f75ed79c1818"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":203,"digest":"sha256:3584b4893c02d9e62f192640c94bc29cd4ece947e5c6ba49c4e37f68a932b643"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":377005,"digest":"sha256:5ea25953dbeb169cd709bb22a91f4b7bc679c68eb46538952efa32561bf7c0a1"}]}
|
||||
@@ -1 +0,0 @@
|
||||
{"schemaVersion":2,"mediaType":"application/vnd.docker.distribution.manifest.v2+json","config":{"mediaType":"application/vnd.docker.container.image.v1+json","size":7464,"digest":"sha256:3598d6b8ab493a927c29106bfc54a61bef9b9dfc0ce3703f815678b7ede10133"},"layers":[{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":20350180,"digest":"sha256:711c3a2baeda87a6b9816cb812388d62d17396034e595a68d8ee5f938f9d77b3"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":21575316,"digest":"sha256:09af038856219494746875334915109e7d1ce0957e692851dd05f75ed79c1818"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":203,"digest":"sha256:3584b4893c02d9e62f192640c94bc29cd4ece947e5c6ba49c4e37f68a932b643"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":847,"digest":"sha256:97a13a3d30dfed6b13f3a95d304b07733cd2a78482ebfead6c5a19edc9f946da"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":377005,"digest":"sha256:9d9b865d96a7d6385f87b1a957e9c8057ffe75cedc10c1919a2a76d5c8c4dd5c"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":6392,"digest":"sha256:029a6d5a3fd0bf6e0e9f5bd7fa47fdc6cb82eaf25223865e0e5743b8eb5b4c0e"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":407,"digest":"sha256:3d2317202ec33cfbf1a72cf82f8396f645294a514a6d2a77c33ff9f056996f54"}]}
|
||||
@@ -1 +0,0 @@
|
||||
{"schemaVersion":2,"mediaType":"application/vnd.docker.distribution.manifest.v2+json","config":{"mediaType":"application/vnd.docker.container.image.v1+json","size":6476,"digest":"sha256:cf0be3e61be825c41365df2c3352164d3b040a1da28751366eab290c6bba317f"},"layers":[{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":22500707,"digest":"sha256:5e6ec7f28fb77f84f64b8c29fcb0a746260563f5858315e3e9fcc4aee2844840"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":22229795,"digest":"sha256:ab804f9bbcbe56bd453382373757c73b0d02efb6beadca0e45a4558911a87594"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":203,"digest":"sha256:052b395f16bcb36d7f7781a596a831139187760b6cbadf61b5b731bbc41d2690"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":377005,"digest":"sha256:865c1ca206935a9f8fb2bd9ccb2b519f203e6e20c2eb41646d523ba2a0d1f2f9"}]}
|
||||
@@ -1 +0,0 @@
|
||||
{"schemaVersion":2,"mediaType":"application/vnd.docker.distribution.manifest.v2+json","config":{"mediaType":"application/vnd.docker.container.image.v1+json","size":7465,"digest":"sha256:2a5c152cf2a21986771311045ca67caf98f14c3e913a27582f8db1dd840e02f1"},"layers":[{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":22500707,"digest":"sha256:5e6ec7f28fb77f84f64b8c29fcb0a746260563f5858315e3e9fcc4aee2844840"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":22229795,"digest":"sha256:ab804f9bbcbe56bd453382373757c73b0d02efb6beadca0e45a4558911a87594"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":203,"digest":"sha256:052b395f16bcb36d7f7781a596a831139187760b6cbadf61b5b731bbc41d2690"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":849,"digest":"sha256:cb43f84713f5e841dcd7f312b2f988ae02702dd0c990000afc678fab248101be"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":377006,"digest":"sha256:a9494c5d0b2dba4920c780143506a3027927083e5916ddd0c0847f8dd7b60812"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":6392,"digest":"sha256:70538cb8711ad9edb0527210b6121cb68516d525dabecee93a445c77b80d8cfc"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":407,"digest":"sha256:31a64bf1f1cf5d50ebbfebffc095a62f1c93c06383f4d9380ccfcd8de79a0bb6"}]}
|
||||
@@ -1 +0,0 @@
|
||||
{"schemaVersion":2,"mediaType":"application/vnd.docker.distribution.manifest.v2+json","config":{"mediaType":"application/vnd.docker.container.image.v1+json","size":8856,"digest":"sha256:d2ba0ddfa5d17c4777e4057fae98c085a5d5b2e1a74c0e2c3ae4fd55996a872c"},"layers":[{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":2207025,"digest":"sha256:cd784148e3483c2c86c50a48e535302ab0288bebd587accf40b714fffd0646b3"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":5535735,"digest":"sha256:6e3058b2db8a6014d1395fbf478446e8af611c39df514978c66f23394871b006"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":494,"digest":"sha256:7ca4d29669c121345b3ecaddc9f6908c05b6de3c6ef9773f677fecb7d0f895d7"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":628,"digest":"sha256:a14cf6997716d72a070dca609539a16e09938e066f18bb9a69f5d0c2ac2a28ac"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":377020,"digest":"sha256:52bf7307852b121160c90a435d9979989e7e12a36db08bbd423bca1f2f07c3c0"}]}
|
||||
@@ -1 +0,0 @@
|
||||
{"schemaVersion":2,"mediaType":"application/vnd.docker.distribution.manifest.v2+json","config":{"mediaType":"application/vnd.docker.container.image.v1+json","size":8854,"digest":"sha256:69325d6c4509c9fbf7279965b6ba6fe97c0c4b371ca82a73e0438fa8227afee6"},"layers":[{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":2207025,"digest":"sha256:cd784148e3483c2c86c50a48e535302ab0288bebd587accf40b714fffd0646b3"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":5535735,"digest":"sha256:6e3058b2db8a6014d1395fbf478446e8af611c39df514978c66f23394871b006"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":494,"digest":"sha256:7ca4d29669c121345b3ecaddc9f6908c05b6de3c6ef9773f677fecb7d0f895d7"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":628,"digest":"sha256:a14cf6997716d72a070dca609539a16e09938e066f18bb9a69f5d0c2ac2a28ac"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":377018,"digest":"sha256:831d7b86d96a23273da38e5357e1cc6f21228ca8346f7ef13ec00e13557a25c8"}]}
|
||||
@@ -1 +0,0 @@
|
||||
{"schemaVersion":2,"mediaType":"application/vnd.docker.distribution.manifest.v2+json","config":{"mediaType":"application/vnd.docker.container.image.v1+json","size":9845,"digest":"sha256:c9238341b29dcc3ca8924d61ce246e251c1e33583c60fe54727cc9362cc7e928"},"layers":[{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":2207025,"digest":"sha256:cd784148e3483c2c86c50a48e535302ab0288bebd587accf40b714fffd0646b3"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":5535735,"digest":"sha256:6e3058b2db8a6014d1395fbf478446e8af611c39df514978c66f23394871b006"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":494,"digest":"sha256:7ca4d29669c121345b3ecaddc9f6908c05b6de3c6ef9773f677fecb7d0f895d7"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":628,"digest":"sha256:a14cf6997716d72a070dca609539a16e09938e066f18bb9a69f5d0c2ac2a28ac"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":848,"digest":"sha256:c667303b7ebb40481726afdd94e883fd4827426fd7f5b68ad1a9cca860098d46"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":377016,"digest":"sha256:d8e57ff00837975f28cc6d5bed70ba62da382170c91abfb2b40865f5d7d779c2"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":6383,"digest":"sha256:b242155a0a71f5dee5535934f8abee2594c59c19aa8a6bced9fe5909b160971e"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":406,"digest":"sha256:4de0ee1235c7c460cf1a0037a5f19365b3114dacdc9028549d37a5be43d4ebd8"}]}
|
||||
@@ -1 +0,0 @@
|
||||
{"schemaVersion":2,"mediaType":"application/vnd.docker.distribution.manifest.v2+json","config":{"mediaType":"application/vnd.docker.container.image.v1+json","size":9847,"digest":"sha256:53b8ecb2f9809d94a5d3681731b417a6ce72e5f9e7df7a49f63e3ee7e029a9ab"},"layers":[{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":2207025,"digest":"sha256:cd784148e3483c2c86c50a48e535302ab0288bebd587accf40b714fffd0646b3"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":5535735,"digest":"sha256:6e3058b2db8a6014d1395fbf478446e8af611c39df514978c66f23394871b006"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":494,"digest":"sha256:7ca4d29669c121345b3ecaddc9f6908c05b6de3c6ef9773f677fecb7d0f895d7"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":628,"digest":"sha256:a14cf6997716d72a070dca609539a16e09938e066f18bb9a69f5d0c2ac2a28ac"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":848,"digest":"sha256:6b6951ba6764258b604ebd61171fe7f6621d70f3981a9c7348460cbe59307555"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":377013,"digest":"sha256:1a490b3551e2ee7e28b53208acbf3a81735f26de66b8da7735e392c51614a81f"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":6386,"digest":"sha256:22fb3fcdc6538ffbc6b5cd7ca30ca8c913db05144ac6fbb44955e54f379e55f3"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":407,"digest":"sha256:8ad6ae8c22ec97b5f5c6071846158197cba85e3c39645ba5e616dca3b2ecb287"}]}
|
||||
@@ -1 +0,0 @@
|
||||
{"name":"joxit/docker-registry-ui","tags":["1.0","debian-static","0.4-debian-static","0.3.0-static","0.2","0.4-debian","0.5-debian-static","0.6","1.0-debian","0.3","0.2-static","0.6-static","0.5-static","arm64v8-static","1.0-static","1.0-debian-static","arm64v8","latest","arm32v7-static","arm32v7","master","0.6-debian","0.5","master-static","0.3-debian","0.6-debian-static","debian","0.5-debian","0.3-static","0.3-debian-static","0.3.0","0.4-static","static","0.4"]}
|
||||
@@ -1 +0,0 @@
|
||||
{"architecture":"amd64","config":{"Hostname":"","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"ExposedPorts":{"6789/tcp":{}},"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","NPM_CONFIG_LOGLEVEL=warn","USER_ID=0","NODE_PATH=/usr/lib/node_modules/"],"Cmd":["kosmtik","serve"],"ArgsEscaped":true,"Image":"sha256:126998402a11a3e9df5c3449d62b2f7bc6177ee1ca2bcb0aa8315f50a8364dc3","Volumes":null,"WorkingDir":"/opt/project","Entrypoint":null,"OnBuild":[],"Labels":{"maintainer":"Jones Magloire @Joxit"}},"container":"eafee657ebbb8e0cbfb6cb7cc95e6c530bf37a3fe135084c050a44822db5922e","container_config":{"Hostname":"eafee657ebbb","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"ExposedPorts":{"6789/tcp":{}},"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","NPM_CONFIG_LOGLEVEL=warn","USER_ID=0","NODE_PATH=/usr/lib/node_modules/"],"Cmd":["/bin/sh","-c","#(nop) ","CMD [\"kosmtik\" \"serve\"]"],"ArgsEscaped":true,"Image":"sha256:126998402a11a3e9df5c3449d62b2f7bc6177ee1ca2bcb0aa8315f50a8364dc3","Volumes":null,"WorkingDir":"/opt/project","Entrypoint":null,"OnBuild":[],"Labels":{"maintainer":"Jones Magloire @Joxit"}},"created":"2018-04-22T07:10:46.610033985Z","docker_version":"17.06.1-ce","history":[{"created":"2018-03-13T22:27:37.022366567Z","created_by":"/bin/sh -c #(nop) ADD file:e3250bb9848f956bdb43b205f1237df0d81a25088c95dbdeb20a1e2baf1d884f in / "},{"created":"2018-03-13T22:27:37.3121465Z","created_by":"/bin/sh -c #(nop) CMD [\"bash\"]","empty_layer":true},{"created":"2018-04-22T06:59:43.015381485Z","created_by":"/bin/sh -c #(nop) LABEL maintainer=Jones Magloire @Joxit","empty_layer":true},{"created":"2018-04-22T06:59:43.488979295Z","created_by":"/bin/sh -c #(nop) ENV NPM_CONFIG_LOGLEVEL=warn","empty_layer":true},{"created":"2018-04-22T06:59:43.731038037Z","created_by":"/bin/sh -c #(nop) ENV USER_ID=0","empty_layer":true},{"created":"2018-04-22T06:59:44.146847045Z","created_by":"/bin/sh -c #(nop) ENV NODE_PATH=/usr/lib/node_modules/","empty_layer":true},{"created":"2018-04-22T06:59:44.516663481Z","created_by":"/bin/sh -c #(nop) WORKDIR /opt/kosmtik"},{"created":"2018-04-22T07:10:45.700110786Z","created_by":"/bin/sh -c apt-get update \u0026\u0026 apt-get install -y --no-install-recommends curl ca-certificates gpg \u0026\u0026 curl -sL https://deb.nodesource.com/setup_6.x | bash - \u0026\u0026 apt-get install -y nodejs \u0026\u0026 curl -sL https://github.com/kosmtik/kosmtik/archive/master.tar.gz | tar xz --strip-components=1 \u0026\u0026 npm install --production \u0026\u0026 node index.js plugins --install kosmtik-tiles-export \u0026\u0026 node index.js plugins --install kosmtik-fetch-remote \u0026\u0026 node index.js plugins --install kosmtik-overlay \u0026\u0026 node index.js plugins --install kosmtik-deploy \u0026\u0026 node index.js plugins --install kosmtik-overpass-layer \u0026\u0026 node index.js plugins --install kosmtik-map-compare \u0026\u0026 node index.js plugins --install kosmtik-mapnik-reference \u0026\u0026 node index.js plugins --install kosmtik-osm-data-overlay \u0026\u0026 node index.js plugins --install kosmtik-mbtiles-export \u0026\u0026 node index.js plugins --install kosmtik-overpass-layer \u0026\u0026 node index.js plugins --install kosmtik-place-search \u0026\u0026 node index.js plugins --install kosmtik-geojson-overlay \u0026\u0026 node index.js plugins --install kosmtik-open-in-josm \u0026\u0026 npm uninstall npm \u0026\u0026 npm cache clean \u0026\u0026 apt-get autoremove -y --purge curl gpg \u0026\u0026 rm -rf /var/lib/apt/lists/*"},{"created":"2018-04-22T07:10:45.934434683Z","created_by":"/bin/sh -c #(nop) COPY file:e8a1a6bcbd6331a04ca6c56b49e1dd61fd12a8794d0cacd4673a4714aefa7316 in /bin/kosmtik "},{"created":"2018-04-22T07:10:46.113467981Z","created_by":"/bin/sh -c #(nop) WORKDIR /opt/project"},{"created":"2018-04-22T07:10:46.419460747Z","created_by":"/bin/sh -c #(nop) EXPOSE 6789/tcp","empty_layer":true},{"created":"2018-04-22T07:10:46.610033985Z","created_by":"/bin/sh -c #(nop) CMD [\"kosmtik\" \"serve\"]","empty_layer":true}],"os":"linux","rootfs":{"type":"layers","diff_ids":["sha256:3358360aedad76edf49d0022818228d959d20a4cccc55d01c32f8b62e226e2c2","sha256:54556e545e47f38be2796425e0f5d0a2b65e4753c41ea7818c1af54e18cf7f6e","sha256:3c494a45e7e3a32463e77f1c9596e6ff1148531c2a963c21c72c54f183c4957c","sha256:80c9530552443771b56a60d6e987c0e0ae4088ef8ac4d8f213bd7658ad0ce2c5","sha256:a2a09416fc54613ac0f6a6a2f514e4c45bf50b20c5806ea61e968410cb219e84"]}}
|
||||
@@ -1 +0,0 @@
|
||||
{"schemaVersion":2,"mediaType":"application/vnd.docker.distribution.manifest.v2+json","config":{"mediaType":"application/vnd.docker.container.image.v1+json","size":4765,"digest":"sha256:d6d8588a8fe6397622ce275398f337d5a3b2584de9da166f2c6ed0b67083ca93"},"layers":[{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":22488979,"digest":"sha256:2a72cbf407d67c7a7a76dd48e432091678e297140dce050ad5eccad918a9f8d6"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":115,"digest":"sha256:01a12542a7912405cab1f8ef28b67763a9f09b537032ad3be24d81ae56dc2b05"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":89917756,"digest":"sha256:f37ddff9a29bcbcf6705771d6f74c587b91efac86fe4d82d2f840d3a48fac113"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":271,"digest":"sha256:3b802ba7d2a2b83b8f4b96dc26d7c6d0aae1543503c7c5db214040d99e57eaed"},{"mediaType":"application/vnd.docker.image.rootfs.diff.tar.gzip","size":115,"digest":"sha256:881c61607a3acb08897ab7b554a89aabcd83759ea2091b454b1f59a1841a3c21"}]}
|
||||
@@ -1 +0,0 @@
|
||||
{"name":"joxit/kosmtik","tags":["latest"]}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user