인텔 제온 cpu 환경에서 ARM CPU 환경으로 도커 이전하기

인텔 제온 cpu 환경에서 ARM CPU 환경으로 도커 이전하기

ChatGPT가 있어서 이런건 참 어렵지 않게 술술 풀리는것 같다.
중간 중 몇가지 걸리는 부분이 있었지만 그다지 어렵지 않게 진행할수 있었다.

기존 인텔제온 cpu에서 도커로 운영중이던 사이트를 ARM CPU를 사용하는 하드커널 HC-4 장비에 이식하려고 했더니 단순히 도커 이미지를 백업 받고 다시 import 하는 것으로는 정상적으로 운영이 되지 않아 다시 재생성하는 과정이 필요했다. 해당 과정은 아래와 같다.

Intel 서버에서 ARM 서버로 도커 이미지 이전하기: HC-4에서 XE 사이트 복원하기

최근 사용하던 Intel Xeon 기반의 서버에서 ARM64 기반의 Hardkernel HC-4로 이전하면서, 기존 도커 이미지로 백업해둔 XE 기반 웹사이트를 새 장비에서 재구동하는 과정을 정리해 봅니다.
Intel ↔ ARM 아키텍처 차이로 인해 단순한 도커 load만으로는 작동하지 않기 때문에, 실제 데이터를 추출하고 ARM 아키텍처용 컨테이너로 재구성하는 방식으로 접근해야 합니다.

✅ 사용 환경 요약

  • 이전 서버: Intel Xeon (x86_64, Ubuntu 20.04)
  • 새 서버: HC-4 (ARM64, Ubuntu 24.04)
  • 이전 서비스: XE3 기반 웹사이트 (/var/www/html + MariaDB)
  • 백업 방식: docker save로 .tar 파일 보관

🧩 1. Intel 서버에서 Docker 이미지 백업

docker save -o xe-container.tar xe-container-backup

📦 2. ARM 서버(HC-4)로 이미지 복사 및 로드

scp xe-container.tar root@hc-4:/data/ofwater.co.kr/
docker load -i xe-container.tar

⚠️ 경고 메시지 발생:
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8)

🛠 3. 이미지로부터 컨테이너 생성 & 데이터 추출

docker create --name temp-xe xe-container-backup
docker cp temp-xe:/var/www/html /data/ofwater.co.kr/html
docker cp temp-xe:/var/lib/mysql /data/ofwater.co.kr/mysql
docker rm temp-xe

🧱 4. ARM 아키텍처용 Docker Compose 구성

# /data/ofwater.co.kr/docker-compose.yml
version: '3.8'
services:
  web:
    image: arm64v8/php:7.4-apache
    container_name: xe-web
    ports:
      - "8080:80"
    volumes:
      - ./html:/var/www/html
    restart: unless-stopped
  db:
    image: arm64v8/mariadb:10.5
    container_name: xe-db
    environment:
      MYSQL_ROOT_PASSWORD: rootpass123
    volumes:
      - ./mysql:/var/lib/mysql
    restart: unless-stopped

⚙️ 5. Ubuntu 24.04에서 docker compose 설치

python3-distutils가 제거된 Ubuntu 24.04에서는 최신 compose CLI 플러그인 설치 필요:

mkdir -p ~/.docker/cli-plugins
curl -SL https://github.com/docker/compose/releases/download/v2.24.5/docker-compose-linux-aarch64 \
  -o ~/.docker/cli-plugins/docker-compose
chmod +x ~/.docker/cli-plugins/docker-compose
docker compose up -d

🧪 6. PHP 확장(pdo_mysql) 설치

docker exec -it xe-web bash
docker-php-ext-install pdo pdo_mysql
apache2ctl restart

🧩 7. DB 호스트 수정 (Laravel or XE3 기준)

Laravel 또는 XE 환경에서는 다음처럼 수정:

DB_HOST=xe-db

🛡 8. 퍼미션 오류 해결

docker exec -it xe-web bash
chown -R www-data:www-data /var/www/html/storage
chown -R www-data:www-data /var/www/html/bootstrap/cache
chmod -R 775 /var/www/html/storage
chmod -R 775 /var/www/html/bootstrap/cache

🎉 9. 결과 확인

http://localhost:8080 또는 Nginx/Apache 프록시가 설정된 도메인으로 접속하여 XE 홈페이지 정상 작동 확인.

🧠 마무리 정리

문제해결책
도커 이미지 로드 후 실행 실패ARM 아키텍처에 맞는 이미지로 재구성
MySQL 드라이버 없음pdo_mysql 직접 설치
DB 접속 오류127.0.0.1 대신 xe-db로 설정
파일 시스템 권한 오류storage, bootstrap/cache 권한 부여

✍️ 마무리 한마디

이전과 같은 “도커 이미지 하나로 백업/복원 끝”이라는 방식은 서로 다른 아키텍처 간에서는 적용되지 않습니다. 특히 ARM 계열 장비로 이전할 때는 데이터 추출 + ARM 이미지로 재구성이라는 접근이 필요합니다.

이 글이 비슷한 상황에서 XE 또는 Laravel 기반 서비스를 이전하려는 분들께 도움이 되길 바랍니다. 🐳

Read more

ollama Cloud oss120B급  병렬 분석 효율 분석: 1개 vs 8개 워커 비교

ollama Cloud oss120B급 병렬 분석 효율 분석: 1개 vs 8개 워커 비교

대규모 학술 논문 아카이브 KOINEU.com의 V3 파이프라인 구축 과정에서 얻은 데이터 분석 속도 최적화 사례를 공유합니다. 25만 건의 방대한 논문을 분석하기 위해 Ollama Cloud의 oss120b 모델을 어떻게 효율적으로 활용했는지에 대한 기술 리포트입니다.. 1. 실험 개요 초거대 모델(120B)은 압도적인 분석 능력을 자랑하지만, 단일 요청 시 처리 시간이 길다는

By ilikeafrica
다이소 겨자잎, 루꼴라 씨앗 발아 3일차

다이소 겨자잎, 루꼴라 씨앗 발아 3일차

역시 씨앗은 한번 발아하면 참 놀랍도록 빠르다. 타임랩스를 찍어보고 싶었는데 이젠 그럴 만한 디바이스가 없다. 모조리 당근행 해버린 관계로 집에 남아있는게 별로 없다. ㅋㅋ 언제 떠날지 또 미지수인 관계로 그 날까지는 뭔가 즐길거리를 찾아야 한다. 겨자잎에 삼겹살 한번이라도 싸먹고 나가게 될까... 겨자잎 안먹어도 좋으니 언능 정리되고 배낭 싸고 싶다..

By ilikeafrica