728x90
레지스트리 서버
주로 컴퓨터 운영 체제에서 시스템 구성 정보와 구성 설정을 저장하고 관리하는 부분
<역할>
1. 시스템 구성 및 설정 저장: 운영 체제, 응용 프로그램 및 하드웨어와 관련된 다양한 시스템 구성 정보 및 설정을 저장
2. 소프트웨어 구성 및 라이선스 관리: 설치된 소프트웨어의 구성 및 라이선스 정보를 저장하며, 이를 통해 운영 체제와 응용 프로그램이 정상적으로 작동하고 소프트웨어의 라이선스 정책을 준수
3. 하드웨어 및 장치 관리: 하드웨어 및 장치 드라이버와 관련된 정보를 저장하며, 이를 통해 시스템이 하드웨어와 장치와 효율적으로 상호 작용
4. 보안 및 권한 제어: 시스템과 소프트웨어의 보안 관련 정보와 권한 설정을 저장해 시스템의 안전성을 유지하고 불법적인 액세스를 방지
<레지스트리 서버(Host3) 구축>
- 레지스트리 서버: Host 3
- 클라이언트 서버: Host1 / Host2
- 모두 도커 서비스가 깔려있다는 전제 하에서 진행
<레지스트리 서버(Host3) 설정>
1. 레지스트리 이미지 가져오기
ubuntu@host2:~$ docker pull registry
Using default tag: latest
latest: Pulling from library/registry
c926b61bad3b: Pull complete
5501dced60f8: Pull complete
e875fe5e6b9c: Pull complete
21f4bf2f86f9: Pull complete
98513cca25bb: Pull complete
Digest: sha256:0a182cb82c93939407967d6d71d6caf11dcef0e5689c6afe2d60518e3b34ab86
Status: Downloaded newer image for registry:latest
docker.io/library/registry:latest
ubuntu@host2:~$ docker image ls >> 이미지 확인
REPOSITORY TAG IMAGE ID CREATED SIZE
**registry latest 909c3ff012b7 5 weeks ago 25.4MB**
2. 레지스트리 컨테이너 생성 및 가동 확인
ubuntu@host2:~$ docker container run -d -v /home/ubuntu/registry_data:/var/lib/registry -p 5000:5000 --restart=always --name=local-registry registry:latest
12240ee4fa70175924b82779eab1e3bde569b16ba254c2a4ff218217b6820239
ubuntu@host2:~$ docker container ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
12240ee4fa70 registry:latest "/entrypoint.sh /etc…" 23 seconds ago Up 22 seconds 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp local-registry
- 포트 확인 명령어 (컨테이너 생성 시, 포트 설정을 잘 했나 확인하기 위함)
ubuntu@host2:~$ sudo netstat -nlp
ubuntu@host2:~$ sudo netstat -nlp | grep 5000
tcp 0 0 0.0.0.0:5000 0.0.0.0:* LISTEN 2825/docker-proxy
tcp6 0 0 :::5000 :::* LISTEN 2832/docker-proxy
ubuntu@host2:~$ curl -X GET <http://192.168.56.103:5000/v2/_catalog>
{"repositories":[]}
>> 해당 서버에 올라 간 이미지가 없어 아무것도 뜨지 않음
3. 서버 설정
- /etc/init.d/docker
- /etc/docker/daemon.json
1. /etc/init.d/docker 설정
ubuntu@host2:~$ sudo vi /etc/init.d/docker
<vi 편집 내용>
2. /etc/docker/daemon.json
ubuntu@host2:~$ sudo vi /etc/docker/daemon.json
>> 원래 존재하지 않던 파일이라 자동생성되면서 빈 파일이 나옴
<vi 편집 내용>
ubuntu@host2:~$ sudo systemctl restart docker.service
>> 도커 시스템 재가동
<클라이언트 서버 설정>
- 레지스트리 서버 (HOST3)에서 했던 설정 두 가지 작업 동일 반복
1. vi /etc/init.d/docker
ubuntu@host2:~$ sudo vi /etc/init.d/docker
<vi 편집 내용>
2. /etc/docker/daemon.json
ubuntu@host2:~$ sudo vi /etc/docker/daemon.json
>> 원래 존재하지 않던 파일이라 자동생성되면서 빈 파일이 나옴
<vi 편집 내용>
ubuntu@host2:~$ sudo systemctl restart docker.service
<클라이언트에서 레지스트리로 이미지 올리기>
- tag > push 과정
1. 이미지 태그 (tag)
ubuntu@host1:~$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
myweb 1.0 6b60617e4b69 23 hours ago 12MB
**choisieun/myweb 1.0 6b60617e4b69 23 hours ago 12MB
>> 올릴 이미지 리스트 확인**
ubuntu@host1:~$ docker image tag choisieun/myweb:1.0 192.168.56.103:5000/myweb:1.0
>> 이미지 태그
ubuntu@host1:~$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
**192.168.56.103:5000/myweb 1.0 6b60617e4b69 23 hours ago 12MB
>> 태그할 이미지 생성된 거 확인**
choisieun/myweb 1.0 6b60617e4b69 23 hours ago 12MB
myweb 1.0 6b60617e4b69 23 hours ago 12MB
2. 이미지 올리기 (push)
ubuntu@host1:~$ docker image push 192.168.56.103:5000/myweb:1.0
The push refers to repository [192.168.56.103:5000/myweb]
Get "<https://192.168.56.103:5000/v2/>": http: server gave HTTP response to HTTPS client
<결과 확인>
ubuntu@host1:~$ curl -XGET <http://192.168.56.103:5000/v2/_catalog>
{"repositories":["myweb"]}
ubuntu@host1:~$ curl -XGET <http://192.168.56.103:5000/v2/myweb/tags/list>
**{"name":"myweb","tags":["1.0"]}**
ubuntu@host2:~$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
registry latest 909c3ff012b7 5 weeks ago 25.4MB
>> 리스트에는 있으나 docker image ls하면 보이지 않음
ubuntu@host2:~$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
12240ee4fa70 registry:latest "/entrypoint.sh /etc…" 45 minutes ago Up 35 minutes 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp local-registry
>> 확인 가능
<다른 클라이언트가 레지스트리를 통해 서비스 이용>
1. 이미지 내려받기 (pull)
ubuntu@host2:~$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
>> 현재 host2 서버에는 아무 이미지도 존재하지 않음을 확인
**ubuntu@host2:~$ docker image pull 192.168.56.103:5000/myweb:1.0**
1.1: Pulling from myweb
c926b61bad3b: Pull complete
fed54a1dc458: Pull complete
d4735778d47c: Pull complete
8695c106552e: Pull complete
dffa16519b51: Pull complete
9e50a0e580b1: Pull complete
5ddd532e9cec: Pull complete
e2b9e37d0e1d: Pull complete
625588b38c1b: Pull complete
Digest: sha256:ae502a5919a61614e9909680a478c321d442be944456380f552f2ff51915932b
Status: Downloaded newer image for 192.168.56.103:5000/myweb:1.0
192.168.56.103:5000/myweb:1.0
<결과 확인>
ubuntu@host2:~$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
**192.168.56.103:5000/myweb 1.0 6b60617e4b69 24 hours ago 12MB**
2. 컨테이너 생성
ubuntu@host2:~$ docker container run -d -p 8001:80 --name mywebserver 192.168.56.103:5000/myweb:1.0
6548e75b35c57e9b30565978017bc396bd97d17be601cf3313e63c99727888f7
ubuntu@host2:~$ docker container ps >> 컨테이너 상태 확인
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6548e75b35c5 192.168.56.103:5000/myweb:1.0 "/docker-entrypoint.…" 8 seconds ago Up 7 seconds 0.0.0.0:8001->80/tcp, :::8001->80/tcp mywebserver
3. 결과 확인 (브라우저에 접속)
- 192.168.56.102:8001
'클라우드 + DevOps > Docker' 카테고리의 다른 글
Docker 컨테이너 구축 실습으로 docker 명령어 알아보기 (3): Portainer, 리눅스 알파인 (0) | 2024.02.08 |
---|---|
Docker 컨테이너 구축 실습으로 docker 명령어 알아보기 (2): MySQL, MariaDB (0) | 2024.02.07 |
Docker 컨테이너 구축 실습으로 docker 명령어 알아보기 (1): Rocky, NginX (1) | 2024.02.06 |
가상머신 Virtual Box에서 Docker 접속하기 (0) | 2024.02.02 |
Docker 실습 :: MYSQL과 WORDPROCESS 연동해 관리 (docker compose) (0) | 2024.01.20 |