티스토리 뷰
M1 Mac 환경에서 podman 사용한 내용을 정리해보고자 한다.
다음에 까먹으면 다시 보기 위해서…
사실 docker 사용법을 안다면 거의 똑같다고 봐도 될 것 같다.
그냥 설치 및 초기설정 몇가지 방법만 다르다.
- 그렇기에 다 설치완료가 되면 아예 podman을 docker로 alias 설정해두고 사용하는 경우가 많은듯하다.
podman 설치
brew 기반으로 설치했다.
$ brew install podman
$ brew install podman-compose # for docker-compose
$ brew install podman-desktop # for docker d
초기 설정
Mac에서는 podman client/server로 나뉘어 동작하는 것으로 보인다.
이에 machine을 초기화, 동작시켜줘야 한다.
$ podman machine init
$ podman machine start
$ podman info # 아래처럼 안나오면 podman 실행이 제대로 되지 않은 것
host:
arch: arm64
buildahVersion: 1.28.0
cgroupControllers:
- cpu
- io
- memory
- pids
...
Image search, pull
container image 검색을 지원한다.
$ podman search mysql
NAME DESCRIPTION
docker.io/library/mysql MySQL is a widely used, open-source relation...
docker.io/library/mariadb MariaDB Server is a high performing open sou...
docker.io/library/percona Percona Server is a fork of the MySQL relati...
docker.io/library/phpmyadmin phpMyAdmin - A web interface for MySQL and M...
docker.io/circleci/mysql MySQL is a widely used, open-source relation...
docker.io/bitnami/mysql Bitnami MySQL Docker Image
docker.io/bitnami/mysqld-exporter
docker.io/ubuntu/mysql MySQL open source fast, stable, multi-thread...
docker.io/cimg/mysql
...
검색된 것을 기반으로 image를 pull 받을 수 있다.
- docker.io/library/ 는 생략이 가능
$ podman pull docker.io/library/mysql
Trying to pull docker.io/library/mysql:latest...
Getting image source signatures
Copying blob sha256:6fb44db361f7e1027fb0010e8a3447c6e9337f6685ab4901f57030d01f730f74
Copying blob sha256:12a06ca91af857ea3cb02aedc5c643c5f06865868ae5c386c8ea664be60ead7e
Copying blob sha256:1fec1cb1944f64443d61a29e94cddba36d0cb8a09c80e0247375445bc62b842e
...
M1 기반이다보면 Arm 아키텍처이다보니 image를 pull 받을 때 다음과 같은 오류가 나오곤 한다.
이런 경우, platform을 지정해주면 된다.
$ podman pull docker.io/library/mysql:5.7
Trying to pull docker.io/library/mysql:5.7...
Error: choosing an image from manifest list docker://mysql:5.7: no image found in manifest list for architecture arm64, variant "v8", OS linux
$ podman pull docker.io/library/mysql:5.7 --platform=linux/amd64
Resolving "mysql" using unqualified-search registries (/etc/containers/registries.conf.d/999-podman-machine.conf)
Trying to pull docker.io/library/mysql:5.7...
Getting image source signatures
Copying blob sha256:2e747e5e37d77f3d8331753fc4c4eb0b0e5af8648ee5b2eec8fa274ebdddb475
...
실행, 종료, 로그, 제거
사실 이 부분은 docker cli 사용법과 동일하다.
# container 실행
$ podman run -d -p 3306:3306 docker.io/library/mysql:5.7
# container 실행/종료 목록 조회
$ podman ps -a
# container log 조회
$ podman logs {container id}
# container 종료
$ podman stop {container id}
# container 제거
$ podman rm {container id}
# container image 제거
$ podman rmi docker.io/library/httpd
podman-compose
docker compose를 대체하기 위해 podman에서도 나온 기능이다.
사실 사용법은 유사한데, 조금씩 지원되지 않는 부분(차이)도 있는 것 같다.
- 예를 들어, platform 필드는 지원하지 않는다. (Issue)
- 이 부분은 직접 platform에 맞는 container image를 pull 받은 후 실행하니 잘 된다.
프로젝트를 보니 제대로 케어하지 않는 프로젝트인 것 같기도 하다. (약간 시도적인 프로젝트 느낌)
- 조심스럽게 사용하거나, kubernetes로 가거나 …
# docker-compose.yml이 있다는 가정하에
$ podman-compose up -d
# 이것도 마찬가지로 docker-compose 문법과 유사하므로 생략
⬇️ 참고용 mysql 5.7 docker compose yaml
version: '3'
services:
mysql:
image: mysql:5.7
container_name: mysql
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: admin
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
volumes:
- /Users/user/Documents/lab/mysql/data:/var/lib/mysql --user 1000
podman desktop
podman cli로 실행하고 나면 다음과 같이 podman desktop에서 확인할 수 있다.
Create container, Pull/Build image 같이 CLI 단에서 동작하는 것을 UI를 통해 진행할 수도 있다.
그리고 Kubernetes, Pod 등 추가적인 기능들도 존재한다.
간단하게 모니터링 하는 용도로 적절한 듯하다.
여기까지지만 사용하면서 이슈가 있으면 계속 추가 할 예정이다.
'Development > Docker & Kubernetes (K8s)' 카테고리의 다른 글
🔒 Kubernetes Secret (시크릿) (1) | 2024.02.14 |
---|---|
OCI, CRI 그리고 Container Image에 관하여 (3) | 2024.01.28 |
Kubernetes Pod Restart에 대하여 (0) | 2022.04.05 |
Kubernetes replicas 수 변경 (CLI) (0) | 2022.04.05 |
[Kubernetes] Owner - Dependent (Garbage collector) (0) | 2022.02.16 |
- Total
- Today
- Yesterday
- 쿠버네티스
- jasync
- container
- boj
- java
- MySQL
- Istio
- HTTP
- WebFlux
- 비동기
- OpenTelemetry
- Kubernetes
- 백준
- Spring
- k8s
- Clean Architecture
- 로그
- docker
- Log
- Algorithm
- tag
- c++
- Spring boot
- 클린 아키텍처
- gradle
- 일상
- 알고리즘
- 하루
- Intellij
- python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |