M1 Docker with lima
lima๋
lima๋ ์๋ํ์ผ๊ณต์ ์ ํฌํธ ํฌ์๋ฉ(WSL2๊ณผ ์ ์ฌ)์ ์ง์ํ๋ linux vm๊ณผ ์ปจํ ์ด๋๋ฅผ ์ ๊ณตํ๋ค.
lima๋ ์ผ์ข ์ ๋น๊ณต์์ ์ธ "๋งฅ์ ์ํ ์ปจํ ์ด๋"๋ผ ๋ณด๋ฉด ๋๋ค.
โ ์๋ ํ์ผ ๊ณต์ โ ์๋ ํฌํธ ํฌ์๋ฉ โ ์ปจํ ์ด๋ ๊ธฐ๋ฅ ํ์ฌ
lima ์ค์น ๋ฐฉ๋ฒ
homebrew๋ฅผ ์ด์ฉํ ์ค์น
brew install lima
docker์ docker-compose๊ฐ ๊น๋ ค์์ง ์๋ค๋ฉด ๊ฐ์ด ์ค์นํ๋ค
brew install lima docker docker-compose
homebrew ์์ด ์ค์น๋ฅผ ํ๋ ค ํ๋ค๋ฉด... ์๋ ์ค์น ๋งค๋ด์ผ
lima๊ฐ ์ ๋๋ก ์ค์น ๋๋์ง ํ์ธ
limactl
\
lima์ docker ์ค์น ๋ฐฉ๋ฒ ๋ฐ ๋ช
๋ น์ด ์ข
๋ฅ
docker + lima config ํ์ผ
ํด๋น ํ๋กํ ์คํ์ ๋ค์๊ณผ ๊ฐ๋ค
OS: Ubuntu 21.10 (Impish Indri)
CPU: 4 cores
Memory: 4 GiB
Disk: 100 GiB
Mounts: ~ (read-only), /tmp/lima (writable)
SSH: 127.0.0.1:60022
docker๊ฐ ์ถ๊ฐ๋ docker.yaml ํ๊ฒฝ์ค์ ํ์ผ
# Example to use Docker instead of containerd & nerdctl
# $ limactl start ./docker.yaml
# $ limactl shell docker docker run -it -v $HOME:$HOME --rm alpine
# To run `docker` on the host (assumes docker-cli is installed):
# $ export DOCKER_HOST=$(limactl list docker --format 'unix://{{.Dir}}/sock/docker.sock')
# $ docker ...
# This example requires Lima v0.8.0 or later
images:
# Hint: run `limactl prune` to invalidate the "current" cache
- location: "https://cloud-images.ubuntu.com/impish/current/impish-server-cloudimg-amd64.img"
arch: "x86_64"
- location: "https://cloud-images.ubuntu.com/impish/current/impish-server-cloudimg-arm64.img"
arch: "aarch64"
mounts:
- location: "~"
- location: "/tmp/lima"
writable: true
# containerd is managed by Docker, not by Lima, so the values are set to false here.
containerd:
system: false
user: false
provision:
- mode: system
# This script defines the host.docker.internal hostname when hostResolver is disabled.
# It is also needed for lima 0.8.2 and earlier, which does not support hostResolver.hosts.
# Names defined in /etc/hosts inside the VM are not resolved inside containers when
# using the hostResolver; use hostResolver.hosts instead (requires lima 0.8.3 or later).
script: |
#!/bin/sh
sed -i 's/host.lima.internal.*/host.lima.internal host.docker.internal/' /etc/hosts
- mode: system
script: |
#!/bin/bash
set -eux -o pipefail
command -v docker >/dev/null 2>&1 && exit 0
export DEBIAN_FRONTEND=noninteractive
curl -fsSL https://get.docker.com | sh
# NOTE: you may remove the lines below, if you prefer to use rootful docker, not rootless
systemctl disable --now docker
apt-get install -y uidmap dbus-user-session
- mode: user
script: |
#!/bin/bash
set -eux -o pipefail
systemctl --user start dbus
dockerd-rootless-setuptool.sh install
docker context use rootless
probes:
- script: |
#!/bin/bash
set -eux -o pipefail
if ! timeout 30s bash -c "until command -v docker >/dev/null 2>&1; do sleep 3; done"; then
echo >&2 "docker is not installed yet"
exit 1
fi
if ! timeout 30s bash -c "until pgrep rootlesskit; do sleep 3; done"; then
echo >&2 "rootlesskit (used by rootless docker) is not running"
exit 1
fi
hint: See "/var/log/cloud-init-output.log". in the guest
hostResolver:
# hostResolver.hosts requires lima 0.8.3 or later. Names defined here will also
# resolve inside containers, and not just inside the VM itself.
hosts:
host.docker.internal: host.lima.internal
portForwards:
- guestSocket: "/run/user/{{.UID}}/docker.sock"
hostSocket: "{{.Dir}}/sock/docker.sock"
message: |
To run `docker` on the host (assumes docker-cli is installed), run the following commands:
------
docker context create lima --docker "host=unix://{{.Dir}}/sock/docker.sock"
docker context use lima
docker run hello-world
------
๋ค๋ฅธ ์์ ํ์ผ๋ค์ ์ฌ๊ธฐ์ ํ์ธํ ์ ์๋ค : lima/examples
docker.yaml์ ์ด์ฉํ ์ค์น
docker๋ฅผ ์ด์ฉํ๊ธฐ ์ํด docker.yaml ํ์ผ์ ์ด์ฉํ์ฌ lima๋ฅผ ์คํ์ํจ๋ค. ํด๋น yaml ํ์ผ์ด ์๋ ๊ณณ์ผ๋ก ์ด๋ํ ๋ค์์ ํ์ผ์ ์คํ์ํจ๋ค.
(์ฒจ๋ถํ์ผ์ docker.yaml ํ์ผ์ ๋ค์ด๋ฐ์ผ๋ฉด ๋๋ค.)
limactl start docker.yaml
์ค์น๊ฐ ์๋ฃ๋๊ธฐ๊น์ง 5๋ถ ์ ๋์ ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค.\
์คํ์ค์ธ ๋ฆฌ์คํธ ํ์ธํ๊ธฐ
limactl list
์ค์นํ docker vm ์ด ์ ๋ ์๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
NAME STATUS SSH ARCH CPUS MEMORY DISK DIR
docker Running 127.0.0.1:51363 aarch64 4 4GiB 100GiB /Users/taejun/.lima/docker
\
lima ์ ์ ๋ฐ docker ์คํ ๋ช
๋ น์ด
๋ค์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ์ฌ lima vm์ผ๋ก ์ ์ํ๋ค
limactl shell docker
(์ดํ์ ๋์ค๋ ๋ช ๋ น์ด๋ค์ ํด๋น lima vm ์ ์ ์ํ์ฌ ์งํํ๋ ๋จ๊ณ๋ค์ด๋ค)
์ ์ํ ์๋์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ์ฌ docker ๊ฐ ์ ์คํ๋๋์ง ํ์ธํ๋ค.
docker
๊ฐ๋จํ docker ๋ช
๋ น์ด
docker-compose up [OPTIONS]
์๋น์ค๋ฅผ ์ํ ์ปจํ ์ด๋๋ฅผ ๋น๋, (์ฌ)์์ฑ, ์์ ๋ฐ ์ฐ๊ฒฐ docker-compose.yml ํ์ผ์ ์์น์์ ์คํ ๊ฐ๋ฅ
docker images [OPTIONS] [REPOSITORY[:TAG]]
์ด๋ฏธ์ง ์กฐํ
docker volume ls [OPTIONS]
๋ณผ๋ฅจ ์กฐํ
docker-compose down
์ปจํ
์ด๋ ์ค์ง, up
์์ ์์ฑํ ์ปจํ
์ด๋, ๋คํธ์ํฌ, ๋ณผ๋ฅจ ๋ฐ ์ด๋ฏธ์ง ์ ๊ฑฐ
docker rm [OPTIONS] CONTAINER [CONTAINER...]
ํ๋ ์ด์์ ์ปจํ ์ด๋ ์ ๊ฑฐ
docker rmi [OPTIONS] IMAGE [IMAGE...]
ํธ์คํธ ๋ ธ๋์์ ํ๋ ์ด์์ ์ด๋ฏธ์ง๋ฅผ ์ ๊ฑฐ(๋ฐ ํ๊ทธ ํด์ )
docker volume prune [OPTIONS]
์ฌ์ฉํ์ง ์๋ ๋ชจ๋ ๋ก์ปฌ ๋ณผ๋ฅจ ์ ๊ฑฐ
docker exec -it [์ปจํ
์ด๋๋ช
or ์ปจํ
์ด๋ID] bash
์คํ ์ค์ธ ์ปจํ ์ด๋์ ์ ์
\
lima์์ docker-compose ์ฌ์ฉํ๊ธฐ
docker-compose.yml ๋?
์ฐ๊ฒฐ๋ ๋ค์์ ์ปจํ ์ด๋๋ฅผ ํ๋๋ก ํตํฉํ์ฌ ๊ด๋ฆฌํ๋ ๋๊ตฌ
docker-compose ์์๋ ์ปจํ ์ด๋ ์คํ์ ์ฌ์ฉ๋๋ ์ต์ ๊ณผ ์ปจํ ์ด๋ ๊ฐ ์์กด์ฑ์ ๋ชจ๋ docker-compose.yml ํ์ผ์ ์ ์ด๋๊ณ , docker-compose ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ปจํ ์ด๋๋ฅผ ์คํ ๋ฐ ๊ด๋ฆฌํ๋ค.
docker-compose์ ๋ํ ์์ธํ ๋ด์ฉ์ด ๊ถ๊ธํ๋ค๋ฉด : Docker Compose์ ๋ฒ์ ๋ณ ํน์ง \
lima์์ docker-compose ์ค์นํ๊ธฐ
docker-compose๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ lima vmํ๊ฒฝ์ ์ค์นํ์ฌ์ผ ํ๋ค. ๋ค์์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ค.
sudo apt install docker-compose
์ค์น ํ ์๋์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ์ฌ docker-compose๊ฐ ์ ๋๋ก ์ค์น๋์๋์ง ํ์ธํ๋ค.
docker-compose
์ ๋๋ก ์ค์น๋์์ผ๋ฉด ์๋์ ๊ฐ์ ํ๋ฉด์ด ๋ฌ๋ค.
\
docker-compose.yml ํญ๋ชฉ
docker-composeํ์ผ์ ๋ค์๊ณผ ๊ฐ์ ํญ๋ชฉ๋ค๋ก ๊ตฌ์ฑ๋์ด์๋ค.
version:
version: '3'
3๋ง ์ฐ๊ฒ ๋๋ฉด ๊ฐ์ฅ ์ต์ ๋ฒ์ ์ผ๋ก ์ธ์. ๊ตฌ์ฒด์ ์ผ๋ก ๋ฒ์ ์ ๋ช ์ํ ์ ์๋ค.
services:
์๋น์ค๋ค์ ๋ํ ์ ๋ณด ๋ช ์
container_name:
container_name: "local-mongodb"
์ปจํ ์ด๋๋ช ๋ช ์
image:
image: mongo
๊ฐ์ ธ์ฌ ์ด๋ฏธ์ง ๋ช ์
restart:
restart: always
์ปจํ ์ด๋ ์ข ๋ฃ -> ์ฌ์คํ
environment:
environment: MONGO_INITDB_DATABASE: local-db MONGO_INITDB_ROOT_USERNAME: root MONGO_INITDB_ROOT_PASSWORD: password
์ปจํ ์ด๋์ ํ๊ฒฝ๋ณ์ ๋ช ์
ports:
ports: - "27017:27017"
ํฌํธ ๋งคํ ์ ๋ณด ๋ช ์. (ํธ์คํธ:์ปจํ ์ด๋)
volumes:
volumes: - "local-mongodb:/var/lib/mongo"
๋ณผ๋ฅจ ๋งคํ (ํธ์คํธ:์ปจํ ์ด๋)
\
docker-comopse๋ก mongodb, mysql, redis ํ๊ฒฝ ์ธํ
ํ๊ธฐ
๋ณธ ์์์์๋ mongodb, mysql, redis ๋ฅผ ํฌํจํ๋ ์ปจํ ์ด๋๋ฅผ docker-comopse๋ฅผ ์ฌ์ฉํ์ฌ ์ค์นํ๋ค.
docker-compose up์ผ๋ก ์ปจํ
์ด๋ ๋์ฐ๊ธฐ
docker-compose ํ์ผ์ด ์๋ ์์น๋ก ์ด๋ํ์ฌ ํด๋น ํ์ผ์ ์คํ์ํจ๋ค. (์ฒจ๋ถํ์ผ์ docker-compose.yml ํ์ผ์ ๋ค์ด๋ฐ์ผ๋ฉด ๋๋ค.)
docker-compose up -d
(-d ์ต์ : ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋์๊ฐ์ ์๋๋ก ํ๋ค.)
ํด๋น ๋ช ๋ น์ด๋ ํ์ผ์ด๋ฆ์ด docker-compose.yml์ธ ๊ฒฝ์ฐ์ ์ฌ์ฉ๊ฐ๋ฅํ๊ณ , ํ์ผ ์ด๋ฆ์ด ๋ค๋ฅธ ๊ฒฝ์ฐ๋ผ๋ฉด ๋ค์์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
docker-compose -f docker-compose-test.yml up
docker-compose -f {ํ์ผ์ด๋ฆ} up
(-f ์ต์ : ๊ธฐ๋ณธ์ผ๋ก ์ ๊ณตํ๋ docker-compose.yml์ด ์๋ ๋ณ๋์ ํ์ผ๋ช ์ ์คํํ ๋ ์ฌ์ฉ)
์ ๋๋ก ์ปจํ
์ด๋๊ฐ ๋์์ก๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ํ๋ฉด์ ๋ณผ ์ ์๋ค.
docker image ํ์ธํ๊ธฐ
๋ค์์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ์ฌ docker image๋ฅผ ํ์ธํ ์ ์๋ค.
docker images -a
(-a ์ต์ : ์คํ์ค์ด์ง ์๋๋ผ๋ ์ ์ฒด ๋ฆฌ์คํธ๋ฅผ ๋ณด์ฌ์ค)
๋ฐฉ๊ธ์ docker-compose up์ ํ๋ฉด์ ๋ค์ด๋ฐ์ mongo, redis, mysql ์ด๋ฏธ์ง๊ฐ ์๋๊ฒ์ ํ์ธํ ์ ์๋ค.\
docker process ํ์ธํ๊ธฐ
๋ค์์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ์ฌ docker์ ๋ ์๋ process๋ฅผ ํ์ธํ ์ ์๋ค.
docker ps -a
(-a ์ต์ : ์คํ์ค์ด์ง ์๋๋ผ๋ ์ ์ฒด ๋ฆฌ์คํธ๋ฅผ ๋ณด์ฌ์ค)
๋ฐฉ๊ธ์ docker-compose up์ผ๋ก ์คํ์ํจ mongo, redis, mysql ์ด๋ฏธ์ง๊ฐ ์๋๊ฒ์ ํ์ธํ ์ ์๋ค.\
docker-compose down์ผ๋ก ์ปจํ
์ด๋ ๋ด๋ฆฌ๊ธฐ
๋ค์์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ฉด ํด๋น ํ์ผ๋ก ๋์ด ์ปจํ ์ด๋๋ฅผ ๋ด๋ฆด ์ ์๋ค.
docker-compose down
mongodb์ docker-compose.yml
version: '3'
services:
local-mongodb:
container_name: "local-mongodb"
image: mongo
restart: always
environment:
MONGO_INITDB_DATABASE: local-db
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: password
ports:
- "27017:27017"
volumes:
- "local-mongodb:/var/lib/mongo"
volumes:
local-mongodb:
๊ฐ๋จํ MongoDB ๋ช
๋ น์ด
mongo admin -u [์ ์ ๋ช
] -p [๋น๋ฐ๋ฒํธ]
mongo admin -u root -p password
mongodb ์ ์
use [๋ฐ์ดํฐ๋ฒ ์ด์ค๋ช
]
use mydb
๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑ & ์ฌ์ฉ
show dbs
๋ฐ์ดํฐ๋ฒ ์ด์ค ์กฐํ
db
ํ์ฌ ์ฌ์ฉ์ค์ธ DB ์กฐํ
db.createCollection("[์ปฌ๋ ์
๋ช
]")
db.createCollection("person")
collection ์์ฑ
show collections
collection ์กฐํ
db.[์ปฌ๋ ์
๋ช
].insert([JSON format])
db.person.insert({"name" : "hyoung", "email" : "[joonhyuck-hyoung@nhn-commerce.com](mailto:joonhyuck-hyoung@nhn-commerce.com)"})
document(๋ฐ์ดํฐ) ์์ฑ
db.[์ปฌ๋ ์
๋ช
].find()
db.person.find()
document ์กฐํ
db.[์ปฌ๋ ์
๋ช
].remove([JSON format])
db.person.remove({"name":"hyoung"})
document ์ญ์
db.[์ปฌ๋ ์
๋ช
].drop()
db.person.drop()
collection ์ญ์
\
mysql์ docker-compose.yml
local-mysql:
image: mysql/mysql-server:8.0.23
container_name: local-mysql
hostname: local-mysql
restart: always
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: accounts
MYSQL_USER: user
MYSQL_PASSWORD: password
MYSQL_DATABASE: authorization
volumes:
- "local-mysql:/var/lib/mysql"
\
lima์์ docker๋ก ๋์ด mysql ์ ์ํ๊ธฐ
docker mysql container ์ ์: $ docker exec -it local-mysql bash
mysql ์ ์: $ mysql -h localhost -P 13306 -u root -p authorization
redis์ docker-compose.yml
local-redis:
container_name: local-redis
hostname: local-redis
image: redis
restart: always
ports:
- "6379:6379"
volumes:
- "local-redis:/var/lib/"
lima์์ docker๋ก ๋์ด redis ์ ์ํ๊ธฐ
docker redis container ์ ์: $ docker exec -it local-redis redis-cli
\
\
docker volume - mount
๋์ปค ์ปจํ ์ด๋์์ ์์ฑ๋๊ฑฐ๋ ์์ ๋ ํ์ผ์ ์ปจํ ์ด๋๊ฐ ํ๊ธฐ๋๋ฉด ํธ์คํธ๋ ํจ๊ป ์ญ์ ๋๋ค.
ํธ์คํธ์ชฝ ํ์ผ ์์คํ ์ ๋ฐ์ดํฐ๋ฅผ ๋ง์ดํธํ๋ฉด ์ปจํ ์ด๋์์ ์ญ์ ํด๋ ํธ์คํธ ํ์ผ ์์คํ ์ ๋จ์์๊ฒ ๋๋ค.
volume ์ข ๋ฅ
Bind Mount ํธ์คํธ ํ๊ฒฝ์ ํน์ ๊ฒฝ๋ก๋ฅผ ์ปจํ ์ด๋ ๋ด๋ถ ๋ณผ๋ฅจ ๊ฒฝ๋ก์ ์ฐ๊ฒฐํ์ฌ ๋ง์ดํธํ๋ค. ์ด ๋ฐฉ๋ฒ์ ๋ณด์์ ์ํฅ์ ๋ฏธ์น ์ ์์
Volume (๊ฐ์ฅ ์ผ๋ฐ์ ) ๋์ปค ๋ณผ๋ฅจ์ ๋์ปค ์ปจํ ์ด๋์์ ๋์ปค ๋ด๋ถ์ ๋์ปค ์์ง์ด ๊ด๋ฆฌํ๋ ๋ณผ๋ฅจ์ ์์ฑ ์์ฑ๋ ๋ณผ๋ฅจ์ ํธ์คํธ ๋๋ ํฐ๋ฆฌ์ /var/lib/docker/volumes ๊ฒฝ๋ก์ ์ ์ฅ๋๋ฉฐ, ๋์ปค๋ฅผ ์ฌ์ฉํ์ฌ ๊ด๋ฆฌ๊ฐ ์ฉ์ด
tmpfs Mount ํธ์คํธ์ ํ์ผ ์์คํ ์ด ์๋, ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๋ ๋ฐฉ์์ ์ฌ์ฉ
\
Volume mount ํ
์คํธ
์ฌ์ ์ค๋น mysql image ๊ฐ ์กด์ฌํ๋ docker-compose.yml ํ์ผ
version: '3'
services:
local-mysql:
image: mysql/mysql-server:8.0.23
container_name: local-mysql
hostname: local-mysql
restart: always
ports:
- "13306:3306"
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_USER: user
MYSQL_PASSWORD: password
MYSQL_DATABASE: mydb
volumes:
- "local-mysql:/var/lib/mysql"
volumes:
local-mysql:
\
1.MySQL
mysql image ๊ฐ ์กด์ฌํ๋ docker-compose.yml ์ ํตํด ์ปจํ ์ด๋ ๋น๋
docker-compose up -d --f
์คํ์ค์ธ mysql ์ปจํ ์ด๋์ ์ ์
docker exec -it [์ปจํ ์ด๋๋ช or ์ปจํ ์ด๋ID] bash
mysql ์ ๊ทผ
mysql -u [์ ์ ๋ช ] -p [๋น๋ฐ๋ฒํธ]
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ
use [๋ฐ์ดํฐ๋ฒ ์ด์ค๋ช ];
ํ ์คํธ๋ฅผ ์ํ ํ ์ด๋ธ (member_table) ์์ฑ
CREATE TABLE member_table (
seq INT NOT NULL AUTO_INCREMENT,
mb_id VARCHAR(20),
mb_pw VARCHAR(20),
address VARCHAR(50),
mb_tell VARCHAR(50),
PRIMARY KEY(seq)
)
6. ๋๋ฏธ๋ฐ์ดํฐ ์ถ๊ฐ
INSERT INTO member_table(mb_id, mb_pw, address, mb_tell) VALUES("test", "test", "test", "test");
7. ๋ฐ์ดํฐ ํ์ธ
SELECT * FROM member_table;
+-----+-------+-------+---------+---------+
| seq | mb_id | mb_pw | address | mb_tell |
+-----+-------+-------+---------+---------+
| 1 | test | test | test | test |
| 2 | test | test | test | test |
| 3 | test | test | test | test |
| 4 | test | test | test | test |
| 5 | test | test | test | test |
| 6 | test | test | test | test |
| 7 | test | test | test | test |
| 8 | test | test | test | test |
| 9 | test | test | test | test |
| 10 | test | test | test | test |
| 11 | test | test | test | test |
| 12 | test | test | test | test |
+-----+-------+-------+---------+---------+
12 rows in set (0.00 sec)
8. mysql ์ ๊ทผ ์ข
๋ฃ
exit
2. volume mount ํ์ธ
docker volume ์์ฑ ํ์ธ
docker volume ls
DRIVER VOLUME NAME
local docker_local-mysql
2. lima ํ๊ฒฝ ๋ด์ ๋ฌผ๋ฆฌ์ ์ ์ฅ์ฅ์ ํ์ธ
cd ~/.local/share/docker/volumes/
cd _data
์ ๊ทผ์ด ๊ฑฐ๋ถ๋๋ฉด sudo -s
3. ํ
์คํธ์ฉ์ผ๋ก ์์ฑํ ํ
์ด๋ธ (member_table) ํ์ธ
root@lima-default:/home/taejun.linux/.local/share/docker/volumes/docker_local-mysql/_data/mydb# ls
member_table.ibd
\
mount ๊ณผ์ ํ์ธ ๋ฐฉ๋ฒ
docker-compose down
=>docker-compose up
์ดํ์๋ lima ์์ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ๋์ง ์ฌ๋ถ ํ์ธdocker rm -f [์ปจํ ์ด๋๋ช ]
์ ํตํด ์ปจํ ์ด๋๋ฅผ ์ง์๋ lima ์์ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ๋์ง ์ฌ๋ถ ํ์ธ
๋ถ๋ก
์๋ฌธ์
mongodb์ ๋ฐ์ดํฐ๋ mysql์ ๋ค๋ฅด๊ฒ ์ง์ ๋ volume์ด ์๋ ํด์๊ฐ์ผ๋ก ์ด๋ฃจ์ด์ง ํด๋์ ์ ์ฅ๋๋ค.
taejun@lima-default:~/.local/share/docker/volumes$ cd cea1548f8644bcb41ac708a0b3d204f2616f20a35159f25b42aed9645b6d6197/_data/
taejun@lima-default:~/.local/share/docker/volumes/cea1548f8644bcb41ac708a0b3d204f2616f20a35159f25b42aed9645b6d6197/_data$ ls
WiredTiger collection-0-4752117110476890269.wt index-3-4752117110476890269.wt mongod.lock
WiredTiger.lock collection-2-4752117110476890269.wt index-5-4752117110476890269.wt sizeStorer.wt
WiredTiger.turtle collection-4-4752117110476890269.wt index-6-4752117110476890269.wt storage.bson
WiredTiger.wt collection-7-4752117110476890269.wt index-8-4752117110476890269.wt
WiredTigerHS.wt diagnostic.data index-9-4752117110476890269.wt
_mdb_catalog.wt index-1-4752117110476890269.wt journal
\
๊ธฐ์กด ํ๋ก์ ํธ์ docker-compose ํ์ผ์ ์ฌ์ฉํ ๊ฒฝ์ฐ ๊ฒช์ ์ ์๋ ์ด๋ ค์
๊ธฐ์กด์ docker image๋ค์ arm64/v8 ๊ธฐ๋ฐ์ผ๋ก ์ด๋ฏธ์ง๊ฐ ์์ฑ๋์ด์๋ค. ๊ทธ๋ ๊ธฐ์ ๊ธฐ์กด ์ด๋ฏธ์ง๋ฅผ ์ด์ฉํ์ฌ ์ปจํ ์ด๋๋ฅผ ์์ฑํ๊ฒ ๋ ๊ฒฝ์ฐ m1 ํ๋ซํผ ํ๊ฒฝ์ธ linux/x86_64 ๋ฅผ ์ง์ํ์ง ์๊ธฐ ๋๋ฌธ์ docker-comopse up์ ํ ๊ฒฝ์ฐ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ํด๋น ์๋ฌ๋ฅผ ํด๊ฒฐํ ์ ์์๋ค.
docker-compose file ์ ๋ค์์ ๋ด์ฉ์ ์ถ๊ฐํ๋ค.
platform: linux/x86_64
์ด ๋ฐฉ๋ฒ์ ํด๋น ์ด๋ฏธ์ง๊ฐ ์ด๋ฏธ buildx์ต์ ์ผ๋ก ๋น๋๋์ด ๋์ปค ํ๋ธ์ ์กด์ฌํ๋ ๊ฒฝ์ฐ์๋ง ํตํ๋ค.
2. ํด๋น ์ด๋ฏธ์ง๋ฅผ docker buildx๋ฅผ ์ด์ฉํ์ฌ m1 ํ๋ซํผ๋ ์ง์ํ ์ ์๋๋ก ์ฌ๋น๋ ํ์ฌ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ linux/x86_64 ๋ ์ง์ํ๋ ๋ฉํฐํ๋ซํผ ๋น๋์ ๊ด๋ จ๋ ๋ด์ฉ์ ๋ค์์ ๋งํฌ์์ ํ์ธํ ์ ์๋ค.
Docker buildx build(at M1 Macbook)
์ด์ ํด๊ฒฐ์ด ์๋๋ ๊ฒฝ์ฐ์๋ ๊ตฌ๊ธ๋ง์ผ๋ก...
์ถ๊ฐ ์งํํ ๋ด์ฉ
ํ์ฌ redis, mongo, mysql์ m1ํ๊ฒฝ์์ lima๋ฅผ ์ด์ฉํ์ฌ docker-compose ํ์ผ์ ์ด์ฉํ์ฌ ์ปจํ ์ด๋๋ฅผ ๋์ ์ง๋ง, kafka + zookeepr์ ๊ฒฝ์ฐ์๋ docker-compose ํ์ผ์ ์ด์ฉํ ์ปจํ ์ด๋๋ฅผ ๋์ฐ๋ ๊ฒ์ ์ด๋ ค์์ ๊ฒช๊ณ ์๋ค.
ํด๋น ๋ถ๋ถ์ ์ถ๊ฐ์ ์ผ๋ก ์ฑ๊ณตํ๋ ๋ฐ๋ก ๋ณธ ๋ด์ฉ์ ์ถ๊ฐํ ์์ ์ด๋ค.
docker-compose๋ฅผ ์ด์ฉํ์ฌ ์ปจํ ์ด๋๋ฅผ ๋์ฐ๊ฒ ๋๋ฉด ๋ค์๊ณผ ๊ฐ์ ์๋ฌ๊ฐ ๋๋ฉด์ ํ๋ก์ธ์ค๊ฐ ๋ ์์ง ๋ชปํ๊ณ ์๊พธ ์ฃฝ๋ ํ์์ ๊ฒช๊ณ ์๋ค.
standard_init_linux.go:228: exec user process caused: exec format error
์ถ์ฒ : Cho Yoohwa, Kang Sunghyuk, Hyoung Joonhyuck
Last updated