외부망 통신이 가능한 환경에서는 docker hub를 비롯한 외부 hub를 통해 image pull.
하지만 폐쇄망 환경에서는 내부에 별도의 image registry를 구성해야(ex. harbor..) image pull이 가능.
폐쇄망 환경에서의 운영을 위해 podman을 통한 local image registry를 구성.
사전 준비 목록
- registry 이미지
- podman 설치용 rpm 파일
외부망이 되는 환경에서 작업을 진행합니다.
## 원하는 버전이 있을경우 뒤에 tag를 수정하여 진행
$ podman pull registry
$ podman save -o registry.tar docker.io/library/registry:latest
다음 포스트를 참고하여 podman 설치에 필요한 패키지와 디펜던시들을 외부망이 되는 환경에서 사전에 다운 받아 폐쇄망 환경으로 옮깁니다.
폐쇄망 환경에서 옮겨진 파일을 가지고 진행합니다.
## podman이라는 directory에 다운받은 rpm을 넣어둔다.
$ rpm -ivh --nodeps --force ./podman/*.rpm
사전에 준비한 registry.tar 파일을 사용해 local registry를 구축합니다.
## registry 이미지 load
$ podman load -i registry.tar
# ex)
# podman run -it -d --name {registry-name} -p {image registry ip:port}:5000 --privileged -v {image 저장할 경로}:/var/lib/registry registry
## registry 컨테이너 실행
$ podman run -it -d --name registry -p 192.168.178.53:5000:5000 --privileged -v /registry:/var/lib/registry registry
## registry 구동 확인
$ podman ps
local registry를 구축한 노드에서 수행합니다.
$ vi /etc/containers/registries.conf
# registries.conf 파일에서 다음 부분을 추가
ex)
[[registry]]
location = "{image registry ip:port}"
insecure = true
...
[[registry]]
location = "192.168.178.53:5000"
insecure = true
...
노드 재기동 이후에도 registry가 자동으로 올라가게 설정합니다.
$ podman generate systemd --name registry > /etc/systemd/system/registry.service
$ systemctl enable registry.service
local registry에 이미지를 push하기 위해서는 image tag를 선행해야 합니다.
## 예시
# podman tag docker.io/library/registry:latest {image registry ip:port}/docker.io/library/registry:latest
$ podman tag docker.io/library/registry:latest 192.168.178.53:5000/docker.io/library/registry:latest
$ podman push 192.168.178.53:5000/docker.io/library/registry:latest