Flower in my ops/CI\CD
<Docker> local(private) registry 구축
꽃선생
2020. 11. 25. 12:30
Private Registry
더보기
[vagrant docker]$ docker pull registry:latest
latest: Pulling from library/registry
cbdbe7a5bc2a: Pull complete
47112e65547d: Pull complete
46bcb632e506: Pull complete
c1cc712bcecd: Pull complete
3db6272dcbfa: Pull complete
Digest: sha256:8be26f81ffea54106bae012c6f349df70f4d5e7e2ec01b143c46e2c03b9e551d
Status: Downloaded newer image for registry:latest
docker.io/library/registry:latest
[vagrant docker]$ docker images registry
REPOSITORY TAG IMAGE ID CREATED SIZE
registry latest 2d4f4b5309b1 5 months ago 26.2MB
[vagrant docker]$ docker run --name flower-registry \
> -d --restart=always \
> -p 5000:5000 \
> -v /app/docker/registry:/var/lib/registry/docker/registry/v2 \
> registry:latest
2e6c6c78d3cacdf1fda8e37d5cf3f3f6f33a69dd9cbf391a7c44a1a1bd4bcbbd
[vagrant docker]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2e6c6c78d3ca registry:latest "/entrypoint.sh /etc…" 3 seconds ago Up 2 seconds 0.0.0.0:5000->5000/tcp flower-registry
[vagrant docker]$ curl {IP}:5000/v2/_catalog
{"repositories":[]}
[vagrant docker]$ curl {IP}:5000/v2/_catalog?n=10
{"repositories":[]}
Pull / Push
더보기
[vagrant docker]# docker pull centos
Using default tag: latest
latest: Pulling from library/centos
3c72a8ed6814: Pull complete
Digest: sha256:76d24f3ba3317fa945743bb3746fbaf3a0b752f10b10376960de01da70685fbd
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest
[vagrant docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 0d120b6ccaa8 3 months ago 215MB
registry latest 2d4f4b5309b1 5 months ago 26.2MB
[vagrant docker]# docker tag centos {IP}:5000/centos
[vagrant docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
{IP}:5000/centos latest 0d120b6ccaa8 3 months ago 215MB
centos latest 0d120b6ccaa8 3 months ago 215MB
registry latest 2d4f4b5309b1 5 months ago 26.2MB
[vagrant docker]# vi Dockerfile
[vagrant docker]# docker build -t {IP}:5000/test-centos:1.0 .
Sending build context to Docker daemon 4.096kB
Step 1/3 : FROM centos
---> 0d120b6ccaa8
Step 2/3 : MAINTAINER username <email@gmail.com>
---> Running in 50dca7a06e82
Removing intermediate container 50dca7a06e82
---> aa0e4684d221
Step 3/3 : CMD echo 'Test docker pull and push'
---> Running in aec4066f3aac
Removing intermediate container aec4066f3aac
---> 0fa752d7395a
Successfully built 0fa752d7395a
Successfully tagged {IP}:5000/test-centos:1.0
[vagrant docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
{IP}:5000/test-centos 1.0 0fa752d7395a 4 seconds ago 215MB
{IP}:5000/centos latest 0d120b6ccaa8 3 months ago 215MB
centos latest 0d120b6ccaa8 3 months ago 215MB
registry latest 2d4f4b5309b1 5 months ago 26.2MB
[vagrant docker]# docker push {IP}:5000/centos
The push refers to repository [{IP}:5000/centos]
Get https://{IP}:5000/v2/: http: server gave HTTP response to HTTPS client
[vagrant docker]# docker push {IP}:5000/test-centos:1.0
The push refers to repository [{IP}:5000/test-centos]
Get https://{IP}:5000/v2/: http: server gave HTTP response to HTTPS client
[root@ftnet05 app]# sudo vi /etc/docker/daemon.json
###---------------
{
"insecure-registries":
["{IP}:5000", "registry-web"]
}
###---------------
[vagrant app]# docker push {IP}:5000/centos
The push refers to repository [{IP}:5000/centos]
cc9d18e90faa: Pushed
0c2689e3f920: Pushed
47dde53750b4: Pushed
latest: digest: sha256:1d7b639619bdca2d008eca2d5293e3c43ff84cbee597ff76de3b7a7de3e84956 size: 943
[vagrant app]# curl http://localhost:5000/v2/_catalog
{"repositories":["centos"]}
- /etc/docker/daemon.json에 registry 등록 후 push
Registry WEB
더보기
[vagrant app]$ vi /app/reg_web/config.yml
###---------------
registry:
url: http://{REGISTRY_IP or REGISTRY_NAME}:5000/v2
name: {REGISTRY_IP or REGISTRY_NAME}:5000
readonly: false
auth:
enabled: false
###---------------
[vagrant app]$ docker run -it -d \
> -p 8080:8080 \
> --name registry-web \
> --link flower-registry \
> -v /app/reg_web/config.yml:/config/config.yml:ro \
> hyper/docker-registry-web
61f9ae1c3fb1ad7605e85db62b6c52e010d5ab5164733a4b0d2e4e3303fa265c
[vagrant app]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
61f9ae1c3fb1 hyper/docker-registry-web "start.sh" 8 minutes ago Up 8 minutes 8080:8080 registry-web
2b497b761d0f registry:latest "/entrypoint.sh /etc…" 21 minutes ago Up 21 minutes 5000:5000 flower-registry
[vagrant app]$ curl {IP}:5000/v2/_catalog
{"repositories":["ubuntu"]}
[vagrant app]$ curl http://{IP}:8080/
<!DOCTYPE html>
<!--[if lt IE 7 ]> <html lang="en" class="no-js ie6"> <![endif]-->
<!--[if IE 7 ]> <html lang="en" class="no-js ie7"> <![endif]-->
<!--[if IE 8 ]> <html lang="en" class="no-js ie8"> <![endif]-->
<!--[if IE 9 ]> <html lang="en" class="no-js ie9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html lang="en" class="no-js"><!--<![endif]-->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Web Registry - Repositories</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="shortcut icon" href="/assets/favicon-9ef27019cc7a636e29ecc851528f716e.ico" type="image/x-icon">
<link rel="apple-touch-icon" href="/assets/apple-touch-icon-c915103363017d14cea9c2a46ea12166.png">
<link rel="apple-touch-icon" sizes="114x114" href="/assets/apple-touch-icon-retina-21d524e96ee946f16c9b8fb4ea0c3f6e.png">
<link rel="stylesheet" href="/assets/application-bcba69f87dc8e1d6f0ee0e95bcd032dc.css"/>
<script src="/assets/application-d840da5a269b3cd86c1420eeb56b3e88.js" type="text/javascript" ></script>
</head>
<body>
<!-- navbar -->
<nav class="navbar navbar-default" role="navigation">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse"
data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span
class="icon-bar"></span><span class="icon-bar"></span>
</button> <a href="/" class="navbar-brand">Web Registry</a>
</div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right">
</ul>
</div>
</div>
</nav>
<div class="container">
<div class="row">
<ul class="breadcrumb">
<li class="active">Home</li>
</ul>
<div class="page-header">
<h2>Repositories</h2>
</div>
<div class="col-md-8">
<dl>
<dt>Registry</dt>
<dd>localhost:5000</dd>
</dl>
<table class="table table-bordered">
<tr><th>Repository</th><th>Tags</th></tr>
<tr>
<td>
<a href="/repo/tags/ubuntu">ubuntu</a>
</td>
<td>
1
</td>
</tr>
</table>
</div>
</div>
</div>
</body>
</html>
- 브릿지(default) 모드에서는 --link {REGISTRY_CONTAINER}
- 호스트 모드에서는 --net host 그리고 방화벽 확인