[Podman] Error: unable to pull image name provided is a short name and no search registries are defined in the registries config file.
podman을 사용하면, container 표준기술이기 때문에, docker처럼 docker service daemon에 의존성 없이 container관리가 가능하다는 소식을 듣고, 설치부터 container 실행까지 해보던 중, 이미지를 가져올 수 없다는 에러가 발생하여, 그에 대한 해결책을 정리한다.
우선 podman 설치는 ubuntu 기본 repo에서 제공하지 않으므로, 별도의 repo를 등록해야 하고, 14.04 같은 예전버전에서는 repo를 등록해도 패키지를 찾을 수 없어서, 18.04에서 설치를 해서 진행을 했다.
(참고 : podman 설치 : https://computingforgeeks.com/how-to-install-podman-on-ubuntu/)
podman이 가장 좋은 게, docker / docker-compose.yml을 거의 그대로 활용이 가능하다.
다만, docker-compose 명령어를 그대로 쓰는 건 아니고, podman-compose라는 모듈을 별도로 설치해야 하는데, 아직 exec / ps 키워드는 개발이 덜 된 듯 하다.
(참고 : podman-compose 설치 : https://github.com/containers/podman-compose)
docker-compose.yml을 podman-compose를 이용해서 up을 했는데, 이미지를 땡겨올 수 없다는 에러가 발생했다.
(Error: unable to pull redis: image name provided is a short name and no search registries are defined in the registries config file.)
podman이 docker의 키워드를 모두 이용할 수는 있지만, 기본적으로 바라보는 repository가 설정이 되어 있지 않아 발생하는 에러이며, /etc/container 경로에 registries.conf 파일을 생성하여, 아래 내용을 입력해줌으로써, podman이 docker.io repo를 참조할 수 있게끔 설정해주면 된다.
# This is a system-wide configuration file used to
# keep track of registries for various container backends.
# It adheres to TOML format and does not support recursive
# lists of registries.
# The default location for this configuration file is /etc/containers/registries.conf.
# The only valid categories are: 'registries.search', 'registries.insecure',
# and 'registries.block'.
[registries.search]
registries = ['docker.io']
# If you need to access insecure registries, add the registry's fully-qualified name.
# An insecure registry is one that does not have a valid SSL certificate or only does HTTP.
[registries.insecure]
registries = []
# If you need to block pull access from a registry, uncomment the section below
# and add the registries fully-qualified name.
#
# Docker only
[registries.block]
registries = []