podman사용하기
-
docker없이 컨테이너 실행하기
- podman-docker 패키지를 통해 docker가 설치되어 있지 않아도 docker 명령어를 실행할 수 있습니다.
-
사실 커맨드가 매핑도이 있는것이고 실제로는 podman을 실행하게 됩니다.
$> yum install podman-docker -y 마지막 메타자료 만료확인 1:40:24 이전인: 2022년 02월 07일 (월) 오후 12시 21분 09초. 종속성이 해결되었습니다. ================================================================================= 꾸러미 구조 버전 레포지터리 크기 ================================================================================= 설치 중: podman-docker noarch 3.3.1-9.0.1.module+el8.5.0+20416+d687fed7 ol8_appstream 56 k 연결 요약 ================================================================================= 설치 1 꾸러미 총계 내려받기 크기: 56 k 설치된 크기 : 230 꾸러미 내려받기중: podman-docker-3.3.1-9.0.1.module+el8.5.0+20416+d 288 kB/s | 56 kB 00:00 --------------------------------------------------------------------------------- 합계 284 kB/s | 56 kB 00:00 연결 확인 실행 중 연결 확인에 성공했습니다. 연결 시험 실행 중 연결 시험에 성공했습니다. 연결 실행 중 준비 중 : 1/1 설치 중 : podman-docker-3.3.1-9.0.1.module+el8.5.0+20416+d687f 1/1 스크립트릿 실행 중: podman-docker-3.3.1-9.0.1.module+el8.5.0+20416+d687f 1/1 [/usr/lib/tmpfiles.d/pesign.conf:1] Line references path below legacy directory /var/run/, updating /var/run/pesign → /run/pesign; please update the tmpfiles.d/ drop-in file accordingly. 확인 중 : podman-docker-3.3.1-9.0.1.module+el8.5.0+20416+d687f 1/1 설치되었습니다: podman-docker-3.3.1-9.0.1.module+el8.5.0+20416+d687fed7.noarch 완료되었습니다!
# yum module install container-tools -y 마지막 메타자료 만료확인 0:09:24 이전인: 2022년 02월 07일 (월) 오후 03시 57분 13초. 종속성이 해결되었습니다. ================================================================================= 꾸러미 구조 버전 레포지터리 크기 ================================================================================= 그룹/모듈 꾸러미 설치: crun x86_64 1.0-1.module+el8.5.0+20416+d687fed7 ol8_appstream 193 k python3-podman noarch 3.2.0-2.module+el8.5.0+20416+d687fed7 ol8_appstream 148 k udica noarch 0.2.5-2.module+el8.5.0+20416+d687fed7 ol8_appstream 51 k 종속 꾸러미 설치 중: python3-pytoml noarch 0.1.14-5.git7dea353.el8 ol8_appstream 25 k python3-pyxdg noarch 0.25-16.el8 ol8_appstream 94 k 모듈 프로파일 설치: container-tools/common 연결 요약 ================================================================================= 설치 5 꾸러미 총계 내려받기 크기: 510 k 설치된 크기 : 1.6 M 꾸러미 내려받기중: (1/5): crun-1.0-1.module+el8.5.0+20416+d687fed7. 1.6 MB/s | 193 kB 00:00 (2/5): python3-podman-3.2.0-2.module+el8.5.0+204 65 kB/s | 148 kB 00:02 (3/5): python3-pytoml-0.1.14-5.git7dea353.el8.no 10 kB/s | 25 kB 00:02 (4/5): python3-pyxdg-0.25-16.el8.noarch.rpm 39 kB/s | 94 kB 00:02 (5/5): udica-0.2.5-2.module+el8.5.0+20416+d687fe 33 kB/s | 51 kB 00:01 --------------------------------------------------------------------------------- 합계 133 kB/s | 510 kB 00:03 연결 확인 실행 중 연결 확인에 성공했습니다. 연결 시험 실행 중 연결 시험에 성공했습니다. 연결 실행 중 준비 중 : 1/1 설치 중 : python3-pyxdg-0.25-16.el8.noarch 1/5 설치 중 : python3-pytoml-0.1.14-5.git7dea353.el8.noarch 2/5 설치 중 : python3-podman-3.2.0-2.module+el8.5.0+20416+d687fed7 3/5 설치 중 : udica-0.2.5-2.module+el8.5.0+20416+d687fed7.noarch 4/5 설치 중 : crun-1.0-1.module+el8.5.0+20416+d687fed7.x86_64 5/5 스크립트릿 실행 중: crun-1.0-1.module+el8.5.0+20416+d687fed7.x86_64 5/5 확인 중 : crun-1.0-1.module+el8.5.0+20416+d687fed7.x86_64 1/5 확인 중 : python3-podman-3.2.0-2.module+el8.5.0+20416+d687fed7 2/5 확인 중 : python3-pytoml-0.1.14-5.git7dea353.el8.noarch 3/5 확인 중 : python3-pyxdg-0.25-16.el8.noarch 4/5 확인 중 : udica-0.2.5-2.module+el8.5.0+20416+d687fed7.noarch 5/5 설치되었습니다: crun-1.0-1.module+el8.5.0+20416+d687fed7.x86_64 python3-podman-3.2.0-2.module+el8.5.0+20416+d687fed7.noarch python3-pytoml-0.1.14-5.git7dea353.el8.noarch python3-pyxdg-0.25-16.el8.noarch udica-0.2.5-2.module+el8.5.0+20416+d687fed7.noarch
완료되었습니다! - docker의 socket api가 지원되기 때문에 podman-docker 패키지를 설치하면 /var/run/docker.sock과 /var/run/podman/podman.sock의 링크를 설정하기 때문에 docker-py, docker-compose를 이용한 docker api도 그대로 사용할 수 있습니다.
- podman에서 지원하지 않는 docker 옵션은 네트워크, 노드, 플러그인, 이름변경, 시크릿, 서비스, 스택, docker swarm이 대상입니다.
-
Rooless설정
- 호스트 컨테이너 스토리지 경로는 사용자 정보에 따라 달라집니다. (root - /var/lib/containers/storage, non root - $HOME/.local/share/containers/storage)
- rootless 컨테이너는 1024미만의 포트에 액세스 할 수 없습니다. (tcp/80을 사용하는 apache의 경우 서비스에서는 tcp/80을 표시하시만 서버 외부에서 실제 접속은 불가능)
- 1024 이하 포트를 사용하려면 커널값 변경을 통해 임시로 사용할 수는 있으나, 프로덕션 환경에서는 사용하는것은 권장되지 않습니다. (테스트 목적)
$> echo 80 > /proc/sys/net/ipv4/ip_unprivileged_port_start
- 8.1부터 rootless Containers기능을 사용하면 일반사용자로 컨테이너 실행할 수 있습니다. (rootless는 기본기능)
$> podman pull docker.io/library/httpd Trying to pull docker.io/library/httpd:latest... Getting image source signatures Copying blob 5eb5b503b376 done Copying blob 10c4d45228bf done Copying blob a43a76ccc967 done Copying blob 942bd346e7f7 done Copying blob cdb155854ae6 done Copying config a8ea074f45 done Writing manifest to image destination Storing signatures a8ea074f4566addcd01f9745397f32be471df4a4abf200f0f10c885ed14b1d28 [user@test~]$ docker image ls Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg. REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/library/httpd latest a8ea074f4566 11 days ago 148 MB
-
레지스트리 구성
- registries.conf에 컨테이너를 내려받기 위한 레지스트리 목록이 저장되어 있습니다, 해당 파일에서 검색할 레지스트리를 설정 할 수 있습니다.
$> vi /etc/containers/registries.conf ... unqualified-search-registries = ["container-registry.oracle.com", "docker.io", "container.test.com"] ...
- test.com은 TLS 없이 pull 설정
$> vi /etc/containers/registries.conf ... [[registry]] location="container.test.com" insecure = true ...
- 특정 레지스트리 검색 차단
$> vi /etc/containers/registries.conf ... [[registry]] location="container.test.com" blocked = true ...
- registries.conf에 컨테이너를 내려받기 위한 레지스트리 목록이 저장되어 있습니다, 해당 파일에서 검색할 레지스트리를 설정 할 수 있습니다.
- 이미지 검사
- skopeo 명령어를 통해 이미지 정보를 확인할 수 있습니다.
- httpd container 정보 확인 방법
# skopeo inspect docker://docker.io/library/httpd:latest { "Name": "docker.io/library/httpd", "Digest": "sha256:5cc947a200524a822883dc6ce6456d852d7c5629ab177dfbf7e38c1b4a647705", "RepoTags": [ "2", "2-alpine", "2-alpine3.13", "2-alpine3.14", "2-alpine3.15", "2-bullseye", "2-buster", "2.2", "2.2-alpine", "2.2.29", "2.2.31", "2.2.31-alpine", "2.2.32", "2.2.32-alpine", "2.2.34", "2.2.34-alpine", "2.4", "2.4-alpine", "2.4-alpine3.13", "2.4-alpine3.14", "2.4-alpine3.15", "2.4-bullseye", "2.4-buster", "2.4.10", "2.4.12", "2.4.16", "2.4.17", "2.4.18", "2.4.20", "2.4.23", "2.4.23-alpine", "2.4.25", "2.4.25-alpine", "2.4.27", "2.4.27-alpine", "2.4.28", "2.4.28-alpine", "2.4.29", "2.4.29-alpine", "2.4.32", "2.4.32-alpine", "2.4.33", "2.4.33-alpine", "2.4.34", "2.4.34-alpine", "2.4.35", "2.4.35-alpine", "2.4.37", "2.4.37-alpine", "2.4.38", "2.4.38-alpine", "2.4.39", "2.4.39-alpine", "2.4.41", "2.4.41-alpine", "2.4.43", "2.4.43-alpine", "2.4.46", "2.4.46-alpine", "2.4.47", "2.4.47-alpine", "2.4.48", "2.4.48-alpine", "2.4.48-alpine3.13", "2.4.48-alpine3.14", "2.4.48-buster", "2.4.49", "2.4.49-alpine", "2.4.49-alpine3.14", "2.4.49-buster", "2.4.50", "2.4.50-alpine", "2.4.50-alpine3.14", "2.4.50-buster", "2.4.51", "2.4.51-alpine", "2.4.51-alpine3.14", "2.4.51-alpine3.15", "2.4.51-bullseye", "2.4.51-buster", "2.4.52", "2.4.52-alpine", "2.4.52-alpine3.15", "2.4.52-bullseye", "alpine", "alpine3.13", "alpine3.14", "alpine3.15", "bullseye", "buster", "latest" ], "Created": "2022-01-26T08:38:51.175633696Z", "DockerVersion": "20.10.7", "Labels": null, "Architecture": "amd64", "Os": "linux", "Layers": [ "sha256:5eb5b503b37671af16371272f9c5313a3e82f1d0756e14506704489ad9900803", "sha256:a43a76ccc96739928c7e884f2210dde01ae5b1fd8822f8cdd56e6ba64ec3125a", "sha256:942bd346e7f719d26e022dfc42eea7e1fa5cf9ad60ec80ed0ef79ded05288be6", "sha256:cdb155854ae6a9e25834459a7c9dfc7be157a2ebfca5adbdb036aeea43ce3128", "sha256:10c4d45228bf56285a1e2c828d60e34d8413ee80e1abd738ef190be843d9dc1e" ], "Env": [ "PATH=/usr/local/apache2/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "HTTPD_PREFIX=/usr/local/apache2", "HTTPD_VERSION=2.4.52", "HTTPD_SHA256=0127f7dc497e9983e9c51474bed75e45607f2f870a7675a86dc90af6d572f5c9", "HTTPD_PATCHES=" ]