podman으로 mariadb 이미지 설정
1) 마리아db 이미지 run
[admin@localhost ~]$ podman run -d --name db01 docker.io/mariadb/server # db01이란 이름을 가지는 컨테이너 생성 [admin@localhost ~]$ podman ps -a # 생성된 컨테이너 확인 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3344a34f9a12 registry.access.redhat.com/ubi8/python-38:latest sleep infinity 6 minutes ago Up 6 minutes python36 10d2386ab43d docker.io/mariadb/server:latest mysqld 45 seconds ago Exited (1) 45 seconds ago db01 |
2) 실행되지 않는 db01의 로그 확인
[admin@localhost ~]$ podman logs db01 # db01의 로그를 확인 error: database is uninitialized and password option is not specified You need to specify one of MARIADB_ROOT_PASSWORD, MARIADB_ALLOW_EMPTY_PASSWORD and MARIADB_RANDOM_ROOT_PASSWORD # 강조된 값이 없어 실행이 안되는 것을 확인 |
3) db01 제거 후 오류 수정해서 재생성
[admin@localhost ~]$ podman run -d --name db01 -e MARIADB_USER=wp_admin -e MARIADB_PASSWORD=dkagh1. -e MARIADB_DATABASE=wp_db -e MARIADB_ROOT_PASSWORD=dkagh1. docker.io/mariadb/server # -e 옵션을 사용하여 환경 변수 값을 주고 생성 b5052c5aef61e9c63cc4337b0cd2fdf87bbb5b43eda92ac7ce5a8fe2757e785f [admin@localhost ~]$ podman ps # 실행 중인 db01을 확인 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3344a34f9a12 registry.access.redhat.com/ubi8/python-38:latest sleep infinity 8 minutes ago Up 8 minutes python36 b5052c5aef61 docker.io/mariadb/server:latest mysqld 6 seconds ago Up 6 seconds db01 |
4) db_data 디렉토리 생성
[admin@localhost ~]$ podman exec -it db01 head -30 /etc/passwd mysql:x:999:999::/home/mysql:/bin/sh # mysql의 password 정보를 확인 [admin@localhost ~]$ mkdir db_data # db_data # 이름을 가지는 디렉토리 생성 [admin@localhost ~]$ podman unshare chown 999:999 ~/db_data # 디렉토리 소유자 권한을 999:999로 바꾼다 [admin@localhost ~]$ ll total 4 -rw-r--r--. 1 admin admin 0 Apr 25 12:49 angry drwxr-xr-x. 2 admin admin 6 Jun 8 17:41 apps drwxr-xr-x. 5 100998 100998 4096 Jun 8 17:54 db_data |
5) 볼륨을 지정해서 db01 재생성
[admin@localhost ~]$ podman run -d --name db01 -e MARIADB_USER=wp_admin -e MARIADB_PASSWORD=dkagh1. -e MARIADB_DATABASE=wp_db -e MARIADB_ROOT_PASSWORD=dkagh1. -v /home/admin/db_data:/var/lib/mysql:Z docker.io/mariadb/server # -e로 환경변수를 추가하고 -v로 db_data로 마운트한다. :Z로 자동으로 context를 바꿔준다. 94d78c4710d44cf054907bf43a196642ae6a66c406ad22b9e22752a50949039b [admin@localhost ~]$ podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 94d78c4710d4 docker.io/mariadb/server:latest mysqld 3 seconds ago Up 3 seconds db01 |
6) 포트 지정해서 db01 재생성
[admin@localhost ~]$ podman run -d --name db01 -e MARIADB_USER=wp_admin -e MARIADB_PASSWORD=dkagh1. -e MARIADB_DATABASE=wp_db -e MARIADB_ROOT_PASSWORD=dkagh1. -v /home/admin/db_data:/var/lib/mysql:Z -p 13306:3306 docker.io/mariadb/server # -e옵션과 -v, :Z로 환경변수를 지정하고 -p옵션으로 포트를 지정해 준다. 외부에서 13306포트를 통해 들어오면 컨테이너의 3306포트로 이동한다. 74e81fc314c7e6e2f0c7d1b7087e14b08d53b2a27d6c880707d0168aeac87992 [admin@localhost ~]$ podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 74e81fc314c7 docker.io/mariadb/server:latest mysqld 4 seconds ago Up 5 seconds 0.0.0.0:13306->3306/tcp db01 [admin@localhost ~]$ podman port db01 # db01의 포트를 확인한다. 3306/tcp -> 0.0.0.0:13306 |
7) 설정한 포트번호 방화벽 설정
[admin@localhost ~]$ sudo firewall-cmd --add-port=13306/tcp --permanent [admin@localhost ~]$ sudo firewall-cmd --reload [admin@localhost ~]$ sudo firewall-cmd --list-all -------------------------------------------------------------- ports: 13306/tcp # 13306포트를 영구적으로 추가한다. |
8) 컨테이너 네트워크 생성
[admin@localhost ~]$ podman network create --gateway 10.87.0.1 --subnet 10.87.0.0/16 db_net # 컨테이너의 네트워크의 게이트웨이와 서브넷을 지정하여 생성한다. db_net [admin@localhost ~]$ podman network inspect db_net # 네트워크 정보를 확인한다. -------------------------------------------------------------- "subnets": [ { "subnet": "10.87.0.0/16", "gateway": "10.87.0.1" } ], -------------------------------------------------------------- |
9) 생성한 네트워크를 지정해서 컨테이너 생성
[admin@localhost ~]$ podman run -d --name db01 -e MARIADB_USER=wp_admin -e MARIADB_PASSWORD=dkagh1. -e MARIADB_DATABASE=wp_db -e MARIADB_ROOT_PASSWORD=dkagh1. -v /home/admin/db_data:/var/lib/mysql:Z -p 13306:3306 --network db_net docker.io/mariadb/server 03d541ce6605e5d9c4589331e8dcf81b6d753f97747a7b443f7bd16ca922f4e6 |
10) mariadb를 사용해 client01 생성
[admin@localhost ~]$ podman run -d --name client01 --network db_net docker.io/bitnami/mariadb sleep infinity #네트워크 db_net을 가지는 client01 컨테이너를 생성 a7f31ad68a88ca6cc7e7bef3714fe8bc0e182882c0aa6c525b251ddbe1998790 [admin@localhost ~]$ podman ps # 실행중인 client01을 확인 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 03d541ce6605 docker.io/mariadb/server:latest mysqld 44 seconds ago Up 44 seconds 0.0.0.0:13306->3306/tcp db01 a7f31ad68a88 docker.io/bitnami/mariadb:latest sleep infinity 2 seconds ago Up 2 seconds client01 |
11) 컨테이너 내부와 ping으로 통신
[admin@localhost ~]$ podman exec -it db01 apt update # 설치 리스트 업데이트 [admin@localhost ~]$ podman exec -it db01 apt upgrade # 상위 버전 설치 # ping 패키지를 받기위해 업그레이드를 실행 [admin@localhost ~]$ podman exec -it db01 apt install -y iputils-ping [admin@localhost ~]$ podman exec -it db01 ping -c3 client01 PING client01.dns.podman (10.87.0.7) 56(84) bytes of data. 64 bytes from 10.87.0.7 (10.87.0.7): icmp_seq=1 ttl=64 time=0.071 ms 64 bytes from 10.87.0.7 (10.87.0.7): icmp_seq=2 ttl=64 time=0.085 ms 64 bytes from 10.87.0.7 (10.87.0.7): icmp_seq=3 ttl=64 time=0.090 ms # 컨테이너 내부와 통신이 가능 --- client01.dns.podman ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2060ms rtt min/avg/max/mdev = 0.071/0.082/0.090/0.008 ms |
12) 컨테이너 네트워크 생성 후 컨테이너 연결
[admin@localhost ~]$ podman network create backend # backend 이름을 가지는 네트워크 생성 [admin@localhost ~]$ podman network connect backend db01 [admin@localhost ~]$ podman network connect backend client01 # backend 네트워크를 통해 db01과 client01 연결 |
13) 연결된 네트워크 IP 확인하기
[admin@localhost ~]$ podman network inspect backend -------------------------------------------------------------- "subnets": [ { "subnet": "10.89.0.0/24", # 자동 생성된 89번 대역 "gateway": "10.89.0.1" } ], -------------------------------------------------------------- [admin@localhost ~]$ podman inspect db01 -------------------------------------------------------------- "Networks": { "backend": { "EndpointID": "", "Gateway": "10.89.0.1", "IPAddress": "10.89.0.5", "IPPrefixLen": 24, "IPv6Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "MacAddress": "de:69:9f:ea:73:46", "NetworkID": "backend", "DriverOpts": null, "IPAMConfig": null, "Links": null, "Aliases": [ "03d541ce6605" ] }, -------------------------------------------------------------- [admin@localhost ~]$ podman inspect client01 -------------------------------------------------------------- "Networks": { "backend": { "EndpointID": "", "Gateway": "10.89.0.1", "IPAddress": "10.89.0.6", "IPPrefixLen": 24, "IPv6Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "MacAddress": "ea:01:c7:d0:53:99", "NetworkID": "backend", "DriverOpts": null, "IPAMConfig": null, "Links": null, "Aliases": [ "a7f31ad68a88" ] }, -------------------------------------------------------------- |
14) 연결된 네트워크 내부 통신 확인
[admin@localhost ~]$ podman exec -it db01 ping -c3 10.89.0.6 PING 10.89.0.6 (10.89.0.6) 56(84) bytes of data. 64 bytes from 10.89.0.6: icmp_seq=1 ttl=64 time=0.099 ms 64 bytes from 10.89.0.6: icmp_seq=2 ttl=64 time=0.088 ms 64 bytes from 10.89.0.6: icmp_seq=3 ttl=64 time=0.119 ms --- 10.89.0.6 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2024ms rtt min/avg/max/mdev = 0.088/0.102/0.119/0.012 ms # 자동으로 주어진 대역으로도 통신 가능 |
'리눅스-podman > 실습' 카테고리의 다른 글
podman 실습 - 컨테이너 유닛 생성 (0) | 2023.09.01 |
---|---|
podman 실습 - 레지스트리 등록과 이미지 사용 (0) | 2023.09.01 |
podman (1) | 2023.09.01 |