먼저 인증 정보를 보내야 함
- public
- docker hub
- 불특정 다수가 접속 가능한 공간
- 회원가입을 통해 이미지 push 가능
- pull은 로그인이 없다면 IP 별로 하루에 100개 받을 수 있다.
- 로그인 정보가 있다면 도커 허브에 접속시 config.json에 있는 정보를 먼저 보내서 인증정보를 확인 받음 (로그인 정보 있을 경우 IP가 아닌 사용자별로 100개 받을 수 있음)
- docker login
- private
- 특정 사용자/그룹 사용자만 접속할 수 있다.
- docker login https://10.10.10.10
- local
- 나만 사용한다.
- 컨테이너 생성시 1차적으로 로컬 저장소를 검색한다.
[private-registry 공식 문서][https://docs.docker.com/registry/deploying/](https://docs.docker.com/registry/deploying/)
rapa@rapa:~/0819/board$ docker container run -d -p 5000:5000 --restart=always --name registry -v /home/rapa/registry:/var/lib/registry registry
f54dd62f569475196c9ae007f83a69c69dd87d48a9d169e44a7de3948f44d3ba
일반적으로 이미지의 이름은 아래와 같은 형식을 취해야한다.
localhost:5000 또는 211.183.3.114:5000으로 사용하면 된다.
rapa@rapa:~/0819/board$ docker tag centos:7 localhost:5000/mycentos:1.0
rapa@rapa:~/0819/board$ docker push localhost:5000/mycentos:1.0
The push refers to repository [localhost:5000/mycentos]
174f56854903: Pushed
1.0: digest: sha256:dead07b4d8ed7e29e98de0f4504d87e8880d4347859d839686a31da35a3b532f size: 529
rapa@rapa:~/0819/board$ ls /home/rapa/registry/docker/registry/v2/repositories/mycentos/
_layers _manifests _uploads
rapa@rapa:~/0819/board$ curl -XGET localhost:5000/v2/_catalog
{"repositories":["mycentos"]}
rapa@rapa:~/0819/board$ docker run -d -p 8080:8080 --name registry-web --link registry:private -e REGISTRY_URL=http://211.183.3.114:5000/v2 -e REGISTRY_NAME=211.183.3.114:5000 --restart=always hyper/docker-registry-web
64951382b09dcef1a6373979ee2fe02cf43366875d826d3d9a962bda8bf235bb
rapa@rapa:~/0819/board$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
xe 1.0 7553b2134b08 3 hours ago 1.95GB
...
localhost:5000/mycentos 1.0 eeb6ee3f44bd 11 months ago 204MB
google/cadvisor latest eb1210707573 3 years ago 69.6MB
hyper/docker-registry-web latest 0db5683824d8 5 years ago 599MB
rapa@rapa:~/0819/board$ docker image rm localhost:5000/mycentos:1.0
Untagged: localhost:5000/mycentos:1.0
Untagged: localhost:5000/mycentos@sha256:dead07b4d8ed7e29e98de0f4504d87e8880d4347859d839686a31da35a3b532f
rapa@rapa:~/0819/board$ docker pull localhost:5000/mycentos:1.0
1.0: Pulling from mycentos
Digest: sha256:dead07b4d8ed7e29e98de0f4504d87e8880d4347859d839686a31da35a3b532f
Status: Downloaded newer image for localhost:5000/mycentos:1.0
localhost:5000/mycentos:1.0
rapa@rapa:~/0819/board$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
xe 1.0 7553b2134b08 3 hours ago 1.95GB
...
localhost:5000/mycentos 1.0 eeb6ee3f44bd 11 months ago 204MB
google/cadvisor latest eb1210707573 3 years ago 69.6MB
hyper/docker-registry-web latest 0db5683824d8 5 years ago 599MB
옆사람 IP : 192.168.1.124, 192.168.1.102
각자 registry만들고 옆사람한테 넘겨줌
192.168.1.x:5000/myweb:sooyeon (tag는 본인이름)
이미지만들때 기존엔 tag로 localhost:5000/mycentos:1.으로 했는데, 192.168.1.xxx(옆사람IP)로 등록해야함. 그러고 push하면 됨
vmnet0으로 변경
rapa@rapa:~/0819/board$ sudo vi /etc/netplan/01-network-manager-all.yaml
[sudo] password for rapa:
# Let NetworkManager manage all devices on this system
network:
ethernets:
ens32:
addresses: [192.168.1.114/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 168.126.63.1]
dhcp4: no
version: 2
# renderer: NetworkManager
~
rapa@rapa:~/0819/board$ sudo netplan apply
insecure-registry : 보안상 좋지않음. 단, 편의를 위해서는 좋음
로컬에서 원격지에 있는 사설 저장소로 접속하기 위해서는 사설 저장소에 (인증정보)를 전달해야 한다. 인증정보는 config.json 파일에서 확인한다. 단, 없다면 해당 접근을 차단시킨다. insecure-registry는 인증정보가 없어도 접속하도록 허용하겠다는 뜻
docker처음 시작 시 적용하는 환경 구성 정보
sudo vi /etc/init.d/docker
DOCKER_OPTS=—insecure-registry
데몬이 시작될 때 읽어들이는 파일(없으면 새로 생성)
sudo vi /etc/docker/daemon.json
insecure-registries : [내가 접속하려는 IP(옆사람IP)]
사설 저장소 자체는 인증을 지원한다. (insecure쓰면 안하는 것)
인증 한다면
docker login을 해두어야 함. docker login https://옆사람주소:5000
login : user1
password : user1 결과는 conig.json에 등록됨
rapa@rapa:~/0819/board$ sudo vi /etc/init.d/docker
DOCKER_OPTS=--insecure-registry 192.168.1.124:5000 192.168.1.102:5000 # 허용할 상대 IP
rapa@rapa:~/0819/board$ sudo vi /etc/docker/daemon.json
{ "insecure-registries": ["192.168.1.124:5000", "192.168.1.102:5000"] }
rapa@rapa:~/0819/board$ sudo service docker restart
rapa@rapa:~/0819/board$ docker container run -d -p 5000:5000 --restart=always --name myweb -v /home/rapa/registry:/var/lib/registry registry
1b2478d343d1ab469a8f4773310c1c2ed5c26fa32aa0561713510a817c71ea32
rapa@rapa:~/0819/board$ docker tag centos:7 192.168.1.124:5000/myweb:sooyeon
rapa@rapa:~/0819/board$ docker push 192.168.1.124:5000/myweb:sooyeon
The push refers to repository [192.168.1.124:5000/myweb]
Get "https://192.168.1.124:5000/v2/": http: server gave HTTP response to HTTPS client
rapa@rapa:~/0819/board$ curl -XGET 192.168.1.124:5000/v2/_catalog
{"repositories":["mycentos","myweb"]}
Harbor를 이용하는 방법은 다음에