[DevOps] M1 Macbook์์ Oracle Database ์ปจํ ์ด๋ ๋์ฐ๊ธฐ 1
ํ์ฌ์์ Oracle์ ์ฌ์ฉํ์ฌ ํ๋ก์ ํธ๋ฅผ ์งํํ๊ฒ ๋๋ฉด์ ๋ก์ปฌ์์ Docker, Podman ๋ฑ์ ์ด์ฉํ์ฌ ํ์ํ ๋ฏธ๋ค์จ์ด๋ฅผ ๋์ฐ๊ณ , ์์ ์ ์งํํ๊ฒ ๋๋๋ฐ ์ฌ์ฉํ๋ ๊ฐ๋ฐ PC๊ฐ Macbook M1 Pro Max๋ฅผ ์ฌ์ฉํ๋ฉด์ ๋ช ๊ฐ์ง ๋ฌธ์ ์ ์ ๊ฒช๊ฒ ๋์์ต๋๋ค.
๋ฐ๋ก ์ปจํ ์ด๋๋ก ๋์ธ ๋ฏธ๋ค์จ์ด์ ์ํคํ ์ฒ์ธ๋ฐ, ๋งฅ๋ถ์ด Intel์ x86 ์ํคํ ์ฒ์์ Apple Silicon์ ARM ์ํคํ ์ฒ๋ก ๋ณ๊ฒฝ๋๋ฉด์ ์ด์ ๊น์ง ๊ตฌ์ถํ๋ x86 ๊ณ์ด์ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ค์ด ์ ๋๋ก ๋์ํ์ง ์๋ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค. ์ ์ง์ ์ผ๋ก ์ด๋ฌํ ๋ฌธ์ ๋ค์ด ํด๊ฒฐ๋๊ณ ์์์ง๋ง ์ ๋ Oracle ๊ณ์ด์ ์ด๋ฏธ์ง๋ ์ ํด๊ฒฐ ๋์ง ์์์ต๋๋ค.
Colima
์ด์ ๋ํด ๊ฒ์ํด๋ณด๋ฉด M1 ๋งฅ๋ถ์์ QEMU์ ๊ฐ์ ๊ฐ์ ๋จธ์ ์ ์ฌ์ฉํ์ฌ Oracle ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ x86 ๊ณ์ด ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์ฌ ์คํํ๋ ๊ฒ์ ๊ถ๊ณ ํ๊ณ ์์ต๋๋ค. Colima๋ Container runtimes on MacOS์ ์ฝ์๋ก lima๋ผ๋ ๊ฐ์๋จธ์ ์ ์ด์ฉํ์ฌ Mac OS ๋ฐํ์์ ์ปจํ ์ด๋๋ฅผ ์ต์ํ์ ์ค์ ์ผ๋ก๋ง ์คํํ ์ ์๋๋ก ํ๋ ์คํ ์์ค ์๋ฃจ์ ์ ๋๋ค.
Docker์์๋ ์ด๋ฏธ M1์ฉ Docker Desktop์ ์ ๊ณตํ๊ณ ์์ง๋ง ์ด๋ M1 ํ๋์จ์ด ๋ฆฌ์์ค๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ๋ฏ๋ก arm64 ์ํคํ ์ฒ ์ด๋ฏธ์ง๋ฅผ ์ด์ฉํด์ผ ํฉ๋๋ค. ํ์ง๋ง colima๋ฅผ ์ฌ์ฉํ๋ฉด lima ๋ผ๋ ๊ฐ์ ๋จธ์ ์ Intel ํ๋ก์ธ์๋ก ๋์ด ๋ค ํด๋น ๋จธ์ ์ amd64 Docker๋ฅผ ์ค์นํ๋ ๊ฒ์ด์ฃ . ๊ทธ๋ฆฌ๊ณ , colima๋ ์ด๋ฌํ lima์ ๊ฐ์ ๋จธ์ ๊ตฌ์ถ ๊ณผ์ ์ ๊ฐ์ํ๊ฒ ํ๊ณ , Docker engine์ ์๋์ผ๋ก ํด๋น ํ๊ฒฝ๊ณผ ์ฐ๊ฒฐํด์ค์ผ๋ก์จ ๊ฐ๋ฐ์๊ฐ ๋ก์ปฌ ํ๊ฒฝ ๊ตฌ์ถํ๋ ๋ฐ ๋ค์ด๊ฐ๋ ๋น์ฉ์ ์ค์ฌ์ค๋๋ค.
$ brew install colima
HomeBrew๋ฅผ ์ด์ฉํ์ฌ ๊ฐ๋จํ๊ฒ Colima๋ฅผ ์ค์นํ ์ ์์ผ๋จธ ์ค์น์ lima์ ๋์์ ์ค์น๊ฐ ์งํ๋ฉ๋๋ค.
$ brew install docker
ํ์ง๋ง colima๋ฅผ ์ค์นํ๋ค๊ณ ํ์ฌ Docker Engine์ด Mac OS์ ์ค์น๋๋ ๊ฒ์ ์๋๋ฏ๋ก ๋ณ๋์ Docker Desktop์ ์ค์นํ์ง ์์๋ค๋ฉด ์๋์ ๋ช ๋ น์ด๋ฅผ ์ด์ฉํ์ฌ Docker Engine๋ ๊ฐ์ด ์ค์นํด์ค์ผ ํฉ๋๋ค. (Docker Desktop์ด ์ค์น๋ ์ํ๋ผ๋ฉด ์ด ๊ณผ์ ์ ๋ฌด์ํ์ ๋ ๋ฉ๋๋ค)
$ colima start --arch x86_64
colima ์ค์น๊ฐ ๋ชจ๋ ๋๋ฌ๋ค๋ฉด ์ ๋ช ๋ น์ด๋ก ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ lima ๊ฐ์ ๋จธ์ ์ต์ ์ ๋ง์ถฐ colima ํ๊ฒฝ์ ์คํํฉ๋๋ค. ๊ธฐ๋ณธ ์ต์ ์ ์๋์ ๊ฐ์ต๋๋ค.
- included Docker
- Dual core, 2GiB RAM
์ปจํ ์ด๋ ํ๊ฒฝ์๋ Docker, Kubernetes, Podman ๋ฑ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์์ง๋ง ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ผ๋ก Docker๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ฏ๋ก ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ฌ์ฉํด๋ ๋ฌด๋ฐฉํฉ๋๋ค. ํ์ง๋ง ์ฌ๋ฌ ์ปจํ ์ด๋๋ฅผ ๋์ฐ๋ ๋ฐ ์์ด ํ๋์จ์ด ๋ฆฌ์์ค๋ฅผ ๋ง์ด ์ฌ์ฉํด์ผ ํ๋ ๊ฒฝ์ฐ ์๋์ ๋ช ๋ น์ด๋ฅผ ์ด์ฉํด์ ํ๋์จ์ด ๋ฆฌ์์ค๋ฅผ ๋๋ฆด ์ ์์ต๋๋ค.
$ colima start --cpu 4 --memory 12 --arch aarch64 --vm-type=vz --vz-rosetta
--cpu ์ต์ ์ผ๋ก ์ฝ์ด ๊ฐฏ์๋ฅผ ์กฐ์ ํ ์ ์๊ณ , --memory ์ต์ ์ ํตํด RAM ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ ์ ์์ต๋๋ค. memory args์ ๊ฐ์ MiB ๋จ์์ ๋๋ค.
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES SIZE
์คํ์ด ๋๋ฌ๋ค๋ฉด docker ps๋ฅผ ์ด์ฉํ์ฌ Docker Engine์ด ์ ๋์์ก๋์ง ํ์ธํฉ๋๋ค. Engine์ด ์ ๋์์ก๋ค๋ฉด ์์ ๊ฐ์ด ํ์ฌ Docker ์๋ฒ์์ ๋์์ ธ ์๋ ์ปจํ ์ด๋ ์ ๋ณด๋ค์ด ๋์ฌ ๊ฒ์ ๋๋ค.
$ docker ps
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
๋ง์ฝ Docker daemon์ Docker Desktop์ผ๋ก ๋ฐ๋ผ๋ณด๊ณ ์๋ ์ํ(/var/run/docker.sock)๋ก ๋์ด ์์ด ์ปจํ ์ด๋ ์ ๋ณด๊ฐ ๋์ค์ง ์๋๋ค๋ฉด ์๋์ ๋ช ๋ น์ด๋ฅผ ์ด์ฉํ์ฌ Docker engine์ ์ปจํ ์คํธ๋ฅผ colima๋ก ์ ํํฉ๋๋ค.
$ docker context use colima
docker context use ๋ช ๋ น์ด๋ฅผ ์ด์ฉํ์ฌ lima ๊ฐ์ ๋จธ์ ์ ๋์์ง Docker daemon์ ์ด์ฉํ๋๋ก ๋ณ๊ฒฝํฉ๋๋ค.
$ docker run -d -e ORACLE_PASSWORD=localpassword -p 1521:1521 gvenzl/oracle-xe
์ด๋ ๊ฒ ์คํํ๋ฉด M1 ๋งฅ๋ถ์์ linux/amd64 ์ํคํ ์ฒ์ ๊ธฐ์กด Oracle DB ์ปจํ ์ด๋๊ฐ ์ ์คํ๋ฉ๋๋ค.
Oracle Database 19c arm64
colima๋ lima๋ผ๋ ๊ฐ์๋จธ์ ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๊ธฐ์กด arm64 ๊ธฐ๋ฐ Docker daemon๊ณผ ๋ณ๊ฐ๋ก ๋ ๋ค๋ฅธ ๋ฐ๋ชฌ์ ์คํํ๋ ๋ฐฉ์์ ๋๋ค. ๋ฐ๋ผ์ ๋ฆฌ์์ค๋ฅผ ๋๋ฐฐ๋ก ์๋ชจํ๊ณ , ์ค์นํ๋ ์๊ฐ ๋น์ฉ๋ ๋ค์ด๊ฐ๊ฒ ๋์ด ๊ด๋ฆฌ ๋ณต์ก๋๊ฐ ์ฆ๊ฐํ๊ฒ ๋ฉ๋๋ค.
Oracle DB๋ ํ์ฌ 19c ๋ฒ์ ์ ํํ์ฌ ARM ํ๋ก์ธ์ ํ๊ฒฝ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํ์ง๋ง ์ค์น ํ์ผ์ ์ด์ฉํ๊ฒ ๋๋ฉด ์์ ์ ํธ์คํธ ํ๊ฒฝ์ ์ง์ ์ค์นํ๊ฒ ๋๋ฏ๋ก ์ฌ์ฉํ ๋ฏธ๋ค์จ์ด ํ๊ฒฝ์ ๊ฒฉ๋ฆฌ์์ผ ๊ด๋ฆฌํ๊ธฐ ์ด๋ ค์์ง๊ฒ ๋ฉ๋๋ค. ๊ทธ๋์ Oracle์์๋ ์์ฌ์ ์ปจํ ์ด๋ ๋ ์ง์คํธ๋ฆฌ์ ๋ฏธ๋ฆฌ ๋น๋๋ ์ด๋ฏธ์ง๋ฅผ ์ ๊ณตํ๊ณ ์์ต๋๋ค.
https://container-registry.oracle.com/
์ปจํ ์ด๋ ๋ ์ง์คํธ๋ฆฌ์์ ์ ๊ณตํ๋ ์ด๋ฏธ์ง ์ญ์ Oracle DB ๋ค์ด๋ก๋์ ๋ง์ฐฌ๊ฐ์ง๋ก Oracle ๊ณ์ ์ด ํ์ํฉ๋๋ค. ๋ง์ฝ ๊ณ์ ์ด ์๋ค๋ฉด ์๋ก์ด ๊ณ์ ์ ์์ฑํ ํ ๋ก๊ทธ์ธ์ ์งํํฉ์๋ค.
Database๋ฅผ ํด๋ฆญํ ํ enterprise ํญ๋ชฉ์ ๋ค์ด๊ฐ๋ฉด linux/arm64 ์ํคํ ์ฒ๋ก ๋ 19.19.0.0 ์ด๋ฏธ์ง๊ฐ ๋ณด์ ๋๋ค. ํด๋น ์ด๋ฏธ์ง๋ฅผ Docker desktop์์ ์ฌ์ฉํด๋ด ์๋ค.
$ docker pull container-registry.oracle.com/database/enterprise:19.19.0.0
Error response from daemon: Head "https://container-registry.oracle.com/v2/database/enterprise/manifests/19.19.0.0": unauthorized: authentication required
ํ์ง๋ง ๋ค์ด๋ก๋๋ฅผ ์๋ํ๋ฉด ์์ ๊ฐ์ด ์ธ์ฆ๋์ง ์์๋ค๋ฉฐ ๋ก๊ทธ์ธ์ ์๊ตฌํฉ๋๋ค. Oracle ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธํด๋ด ์๋ค.
$ docker login container-registry.oracle.com
Username:
Password:
Login Succeeded
docker login ๋ช ๋ น์ด ๋ค์ ๋ก๊ทธ์ธ ํ ๋ ํฌ์งํฐ๋ฆฌ ์ฃผ์๋ฅผ ์ ๋ ฅํ๋ฉด ๋ก๊ทธ์ธ ํ ์ ์์ต๋๋ค. ๋ก๊ทธ์ธ์ด ์๋ฃ๋๋ฉด ์์ ๊ฐ์ด Login Succeeded ๊ฐ ํ์๋ฉ๋๋ค.
๊ทธ๋ฐ ๋ค์ container-registry ์ฌ์ดํธ์์ Oracle ํ์ค ์ฌ์ฉ ์ฝ๊ด์ ๋์ํด์ผ ํฉ๋๋ค. ์ธ์ด๋ฅผ ํ๊ตญ์ด๋ก ์ ํํ๊ณ ๊ณ์์ ํด๋ฆญํฉ๋๋ค.
์ฝ๊ด์ ๋์ํ๋ฉด ์์ ๊ฐ์ด ๋์ํ ์๊ฐ๊ณผ ํจ๊ป ์ฒดํฌ ์์ด์ฝ์ด ๋ํ๋ฉ๋๋ค.
$ docker run -d -p 1521:1521 -p 5500:5500 -e ORACLE_PWD=localpassword container-registry.oracle.com/database/enterprise:19.19.0.0
19.19.0.0: Pulling from database/enterprise
6d2393141884: Pull complete
19f6393fd7e9: Pull complete
59ad435720fa: Pull complete
ae92c2ca76ad: Pull complete
3766fefc7885: Pull complete
ee903af7c492: Pull complete
e7254fb804c7: Pull complete
a5b9446d60fe: Pull complete
aca1761b85fa: Pull complete
b60ff5f80941: Pull complete
3e198359e20a: Pull complete
fd96adc08d82: Pull complete
41bc96afe60d: Pull complete
95ca88e18c80: Pull complete
95363ebcc944: Pull complete
79f79ccbc067: Pull complete
cc6aeba32082: Pull complete
1526ac486c4b: Pull complete
100007cde8c3: Pull complete
Digest: sha256:b63d511c91f7c8c5c703fdad1d969615d06e8ebec92781439a97a3d95a6c079b
Status: Downloaded newer image for container-registry.oracle.com/database/enterprise:19.19.0.0
container-registry.oracle.com/database/enterprise:19.19.0.0
์ด์ docker run ๋ช ๋ น์ด๋ก ์ปจํ ์ด๋๋ฅผ ์คํํ๋ฉด Oracle 19.19.0.0 ๋ฒ์ ์ด arm64 ์ด๋ฏธ์ง๋ก ๋ฐ์์ง ๊ฒ์ ๋๋ค. colima๊ฐ ์์ด๋ Oracle ์ปจํ ์ด๋ ๋ ์ง์คํธ๋ฆฌ์์ M1์์ ๋ฐ๋ก ์คํํ ์ ์๋ Oracle ์ปจํ ์ด๋๊ฐ ๋์์ง๊ฒ ๋ฉ๋๋ค.
$ docker inspect container-registry.oracle.com/database/enterprise:19.19.0.0 | grep Architecture
"Architecture": "arm64",
ํ์ธ์ ์ํด docker inspect๋ฅผ ์ด์ฉํ์ฌ ๋ฐ์ ์ด๋ฏธ์ง์ ์ํคํ ์ฒ๋ฅผ ํ์ธํด๋ณด๋ฉด arm64๋ก ๋์ด ์๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
๋ง์น๋ฉฐ..
ํ๋ก์ ํธ์์ Oracle ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ ๋ง์ง ์์ง๋ง ๊ฐ๋ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ์๊ธฐ๊ฒ ๋ฉ๋๋ค. ์์ ์ด ์ฌ์ฉํ๋ ์ธํ PC๋ผ๋ฉด ํฐ ๋ฌธ์ ๊ฐ ๋์ง ์๊ฒ ์ง๋ง ๊ฐ๋ฐํ๋ ๋ฐ Macbook์ ์์ฃผ ์ด์ฉํ๊ธฐ๋ ํ๊ณ , ์ต๊ทผ Macbook์ ARM ํ๋ก์ธ์๋ฅผ ์ฑํํ๊ณ ์์ด ์๋ฒ ๊ฐ๋ฐ ํ๋ ๋ฐ ์์ด ๋ก์ปฌ ํ๊ฒฝ์ ๊ตฌ์ถํ๋ ๋ฐ ์ด๋ฌํ ์ํคํ ์ฒ ๊ณ ๋ฏผ์ ํด์ผํ๋ ๊ฒฝ์ฐ๊ฐ ์๊ธฐ๊ฒ ๋ฉ๋๋ค.
Oracle์์๋ ๊ธฐ์ ๋ด๋ถ ๋คํธ์ํฌ ์ฌ์ ์ผ๋ก ์์ ๋ค์ ๋ ์ง์คํธ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์๊ฑฐ๋ ๋ก๊ทธ์ธ ํ ์ ์๋ ๊ฒฝ์ฐ 19c ์ค์น ํ์ผ๋ง ์๋ค๋ฉด ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ ์ ์๋ ๋น๋ ๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ค์ ๊ธ์์๋ ์ด ๋น๋ ๋๊ตฌ๋ฅผ ์ด์ฉํด์ M1 Macbook์ Oracle ์ปจํ ์ด๋๋ฅผ ๋์ฐ๋ ๋ฒ์ ๋ํด ๋ค๋ค๋ณด๊ฒ ์ต๋๋ค.
'DevOps' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[DevOps] ์ Docker๋ ์ปจํ ์ด๋ ๋น๋ ๋๊ตฌ ์ ํ์ง์์ ์ ์ ๋ฐฐ์ ๋ ๊น? (0) | 2024.03.24 |
---|