2022년 4월중 통화 및 유동성!
2022년 6월 15일 수요일
2022년 4월 통화 및 유동성 동향
2022년 4월 25일 월요일
Apple M1 pro , QEMU에서 amd64 / arm64 Linux 실행 비교
## Prerequisites
시작하기 전에 qemu 및 utm을 설치하십시오. 후자는 필요하지 않지만 편리하게 사용할 수 있습니다. Homebrew를 설치했다고 가정합니다.
> $ brew install qemu utm
## VM 설정
utm을 시작하고 "새 VM 만들기"를 원하는 이름으로 지정합니다.
드라이브로 이동하여 최소 10GB 크기의 드라이브를 만드십시오. 그런 다음 디스크를 가져와서 선택한 배포판에서 부팅 가능한 ISO를 추가합니다.
## System 설정
아키텍처: x86_64
시스템: 표준 PC(Q35....)(q35)
메모리: 2048MB 이상(2048MB 사용)
고급 설정:
CPU: qemu64 대 Skylake-Client 대 …
CPU 코어: 4개 이상(저는 8개 사용)
Force Multicore: ✅ (이는 상당한 성능 향상을 제공합니다)
## OS 설치
ISO 이미지에서 부팅한 후 디스크에 OS를 설치합니다. 완료되면 시스템을 중지하고 드라이브에서 ISO를 제거하고 새 VM을 부팅합니다. 가지고 놀 준비가 되었습니다.
## 벤치마크
맥북 M1 pro , 32GB 램, qemu + utm
Guest system: Ubuntu 20.04 (최소 설치)
> sysbench cpu --threads=2
## Summary
> sysbench cpu --threads=2 run
- native (macOS): ~24 Mio events per second
- Skylake-Client (default): ~500 events per second 👎
- qemu64-v1: ~1500 events per second
- qemu64: ~1500 events per second 👍
- qemu64 + ssse3,sse4.1,sse4.2: ~1450 events per second
- Penryn: ~1500 events per second
- Penryn + ssse3,sse4.1,sse4.2: ~1400 events per second
- Haswell: ~500 events per second 👎
- EPYC: ~1400 events per second
- kvm64: ~1500 events per second
- phenom: ~1400 events per second
- Nehalem: ~1400 events per second
- Dhyana: ~500 events per second 👎
- Opteron_G5: — does not work
- cortex-a72 (default): ~16200 events per second
docker run -it --rm --platform=linux/amd64 ubuntu: ~550 events per seconddocker run -it --rm ubuntu: (arm64) ~550 events per second ‼️lima(arm64): ~20200 events per second 🤘lima(x86_64): ~260 events per secondlima container(arm64 container in arm64 VM): ~21000 events per second 🤘lima container(x86_64 container in arm64 VM): ~570 events per second
2022년 4월 13일 수요일
Lima + docker server 구성
Lima + docker server 구성
Lima를 사용해서 Ubuntu 가상머신을 만듭니다. 그 위에 docker server를 구성합니다.
설치
brew install limaLima VM을 만들기
Lima 설정을 default.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=unix://$HOME/docker.sock
# $ docker ...
cpus: 1
memory: "8GiB"
disk: "80GiB"
arch: x86_64
# This example requires Lima v0.7.3 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: "~"
writable: true
- location: "~/work"
writable: true
ssh:
localPort: 60006
# Load ~/.ssh/*.pub in addition to $LIMA_HOME/_config/user.pub , for allowing DOCKER_HOST=ssh:// .
# This option is enabled by default.
# If you have an insecure key under ~/.ssh, do not use this option.
loadDotSSHPubKeys: 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
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
portForwards:
- guestSocket: "/run/user/{{.UID}}/docker.sock"
hostSocket: "{{.Home}}/docker.sock"중요한 설정 2가지
- mounts에서 location 부분이 docker volume으로 마운트되는 폴더를 지정하는 곳이고, 읽고/쓰기 설정을 바꿀 수 있습니다.
portForwards가 docker.sock 으로 호스트 머신에서 노출되는 부분입니다.- Mac 호스트에서 Lima VM에 docker.sock으로 직접 연결되지요.
Lima 가상머신 만들기
limactl start ./default.yamldocker 동작을 확인
lima docker versionmacOS에 docker cli를 설치
mac에 docker 명령어를 사용하기 위해서 docker cli를 설치합니다.
# docker cli
# for Intel Mac
curl -OL https://download.docker.com/mac/static/stable/x86_64/docker-20.10.14.tgz
# for M1 Mac
curl -OL https://download.docker.com/mac/static/stable/aarch64/docker-20.10.14.tgz
mkdir -p $HOME/bin
tar xzvf docker-20.10.11.tgz
mv docker/docker $HOME/bin/.
chmod 755 $HOME/bin/docker
Lima VM의 docker와 Mac의 docker cli를 연결
~/.zprofile 에 소켓을 설정합니다.
export DOCKER_HOST=unix://$HOME/docker.socksource $HOME/.zprofilemac에서 가상머신에 docker를 사용할 수 있습니다. docker version
Docker Server가 동작하는지 확인할 수 있습니다.
lima uname -m2022년 4월 7일 목요일
macOS (M1) 환경에서 Docker 를 대치할 만한 것들
macOS 특히 M1을 사용했을 때 Docker for Mac이 왜 이리도 느릴까 싶습니다.
x86에서도 Docker for Mac이 느렸지만, M1과 결합하면 더욱 느립니다.
개발 환경의 대세는 M1 air와 M1 Pro/Max/Ultra라고 생각합니다. 하지만 악화됩니다. M1 Pro로 애플리케이션의 벤치마크를 해보면 잡으면 4년 전 Intel Macbook Pro(i7) 보다 느리기에 Docker for Mac을 지웠습니다.
하지만 docker가 없으면 일을 하기 어렵기 때문에 다른 방법을 찾았습니다.
|도구 이름 |구조 |메리트|단점|Watch|Star|Issues|
| 도구 | 특징 | 좋은점 | 안좋은점 | Watch | Star | Issues |
|---|---|---|---|---|---|---|
| Podman | 데몬을 필요로 하지 않고 컨테이너를 안전하게 실행할 수 있다. | 설치가 쉽다. | 일부 docker 명령(예: 네트워크)을 지원하지 않는다. | 178 | 11.2k | 190 |
| Minikube | Hyperkit나VirtualBox에서동작한다. | Kubernetes를 사용할 수 있다. | Kubernetes는 Docker를 더 이상 사용하지 않으므로 향후 어떻게 할지 모름 | 468 | 22.5k | 607 |
| Multipass | 기본적으로 HyperKit, QEMU/KVM 등의 하이퍼바이저를 통해 실행한다. | 이기종 환경을 지원한다. (Linux/Mac/Windows) | 77 | 3.8k | 327 | |
| Lima | Docker CLI + Docker REST API를 사용하여 Lima(VM)에서 Docker Engine을 사용 | Docker for Mac과 가장 비슷한 사용자 환경을 제공 | 설정하는데 참조 자료가 아직은 적다. | 48 | 5.1k | 62 |