
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 기반 서비스를 이전하려는 분들께 도움이 되길 바랍니다. 🐳
답글 남기기