728x90
podman
[Container] Podman 설치 및 사용법 (chhanz.github.io)
podman은 docker 와 동일하게 단일 노드에서 pod, 컨테이너 이미지 및 컨테이너를 관리한다. Pod 라고 하는 컨테이너 및 컨테이너 그룹을 관리할 수 있는 libpod 라이브러리를 기반으로 한다.
위와 같은 구조적인 차이로 인해 예전에 Docker 에서는 systemd 를 이용하여 docker daemon을 재시작 하거나 중지를 하면 운영중인 컨테이너에 영향을 주었습니다.
하지만 Podman 은 Docker 와 달리 서로 간섭이 없는 컨테이너를 생성 할 수 있습니다.
일종의 PID 가 다른 프로세서라고 생각하면 됩니다.
설치
yum -y install podman
특이한 점은 systemd 설정 할 필요가 없습니다.
systemctl list-units | grep -i pod
위와 같이 Docker 와 다르게 systemd 로 서비스를 시작할 필요가 없습니다.
기본 사용법
컨테이너 생성
podman run -ti -d --name web httpd
컨테이너 구동 확인
podman ps -a
컨테이너 중지
podman stop web
컨테이너 시작
podman start web
컨테이너 이미지 확인
podman images
컨테이너 이미지 Pull
podman pull centos
컨테이너 삭제
podman rm relaxed_hypatia
컨테이너 Port Mapping
podman run -ti -d -p 80:80 --name web httpd
systemd generate 제공
Podman 은 각 컨테이너 별로 systemd 의 서비스 파일을 생성하여 관리를 할 수 있습니다.
- 일반 컨테이너 생성
podman run -d --name redis_server -p 6379:6379 redis
- systemd 서비스 파일 생성
[Unit]
Description=Redis container
[Service]
Restart=always
ExecStart=/usr/bin/podman start -a redis_server
ExecStop=/usr/bin/podman stop -t 2 redis_server
[Install]
WantedBy=local.target
위와 같이 /etc/systemd/system/redis_server.service 파일을 생성하거나,
podman generate systemd redis_server > /etc/systemd/system/redis_server.service
위와 같이 generate 옵션을 통해 서비스 파일을 생성하고 Start 구문 및 Stop 구문, 기타 옵션을 컨테이너 실행 상황에 맞게 수정합니다.
- systemd 를 이용하여 컨테이너 관리
systemctl start redis-container.service
systemctl stop redis-container.service
systemctl status redis-container.service
kubernetes yaml generate 제공
- 1) Yaml 파일 생성
[root@fastvm-centos-7-7-41 ~]# podman generate kube web
# Generation of Kubernetes YAML is still under development!
#
# Save the output of this file and use kubectl create -f to import
# it into Kubernetes.
#
# Created with podman-1.4.4
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: "2020-03-01T12:53:22Z"
labels:
app: web
name: web
spec:
containers:
- command:
- httpd-foreground
env:
- name: PATH
value: /usr/local/apache2/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
- name: TERM
value: xterm
- name: HOSTNAME
- name: container
value: podman
- name: HTTPD_PATCHES
- name: HTTPD_PREFIX
value: /usr/local/apache2
- name: HTTPD_VERSION
value: 2.4.41
- name: HTTPD_SHA256
value: 133d48298fe5315ae9366a0ec66282fa4040efa5d566174481077ade7d18ea40
image: docker.io/library/httpd:latest
name: web
ports:
- containerPort: 80
hostPort: 80
protocol: TCP
resources: {}
securityContext:
allowPrivilegeEscalation: true
capabilities: {}
privileged: false
readOnlyRootFilesystem: false
stdin: true
tty: true
workingDir: /usr/local/apache2
status: {}
- 2) Kubernetes 에 배포
kubectl create -f podman-gen-web.yml
- 3) Pod 상세 내용 확인
kubectl describe pod web
728x90
'Development(Web, Server, Cloud) > 22) LINUX - Cloud' 카테고리의 다른 글
Google Cloud Study Jam 신청과 학습방법 알아보기 (0) | 2022.09.20 |
---|---|
4. KRE 선정 - 장단점 비교(Ecosystem 선정 Cloud native 선정) (0) | 2022.08.03 |
ss 1일차 (0) | 2022.07.21 |
클라우드 76일차 (0) | 2022.05.17 |
클라우드 75일차 (0) | 2022.05.16 |