Rootless Docker 환경에서의 QueryPie 설치 가이드
개요
이 가이드는 보안을 강화한 Rootless Docker 환경에서 QueryPie 10.2.6 버전을 설치하고 구성하는 방법을 제공합니다. Rootless Docker를 사용하면 root 권한 없이 컨테이너를 실행할 수 있어 보안이 강화됩니다.
설치 환경
ALB, NLB (PPv2 사용)
Amazon Linux 2023
QueryPie v10.2.6
⚠️주의사항
ALB, NLB (PPv2 사용) 사용하지 않을 시 Aduit Log 의 Client IP 에 docker ip 가 찍히게 됨.
사전 요구사항
최초 설치 시 sudo 권한
설치 단계 요약 5번까지 필요
인터넷 연결
dl.querypie.com / harbor.chequer.io
443 port
QueryPie 설치 파일 및 이미지 다운로드
QueryPie 라이센스 파일 (license.crt)
설치 단계 요약
QueryPie 사용자 계정 생성
QueryPie 로그 관리 설정 (LogRotate)
Docker-Compose 설치
Rootless Docker 설치
Docker 자동 시작 설정
QueryPie 설치 디렉토리 준비
QueryPie 설치 파일 다운로드 및 설정
harbor 로그인 및 QueryPie 마이그레이션
라이센스 적용 및 QueryPie 실행
1. QueryPie 사용자 계정 생성
QueryPie를 실행할 전용 사용자 계정을 생성합니다.
sudo useradd querypie
sudo passwd querypie
# 안전한 비밀번호를 설정하세요2. QueryPie 로그 관리 설정 (LogRotate)
로그 파일이 과도하게 커지는 것을 방지하기 위해 LogRotate 설정을 추가합니다.
# user id 확인
[querypie@ip-172-31-50-123 ~]$ id querypie
uid=1001(querypie) gid=1001(querypie) groups=1001(querypie)
# 일시적으로 root 사용자로 전환하여 logrotate 설정
sudo tee /etc/logrotate.d/querypie > /dev/null << 'EOF'
/home/querypie/querypie/log/**/*.log {
compress
dateext
copytruncate
daily
missingok
notifempty
size 10M
rotate 10
postrotate
/bin/bash -c 'find /home/querypie/querypie/log -name "*.gz" -exec chown 1001:1001 {} \;'
endscript
}
/home/querypie/.local/share/docker/containers/**/*.log {
compress
dateext
copytruncate
daily
missingok
notifempty
size 1024M
rotate 10
postrotate
/bin/bash -c 'find /home/querypie/.local/share/docker/containers -name "*.gz" -exec chown 1001:1001 {} \;'
endscript
}
EOF3. Docker-Compose 설치
Docker-Compose를 설치합니다.
# Docker Compose 다운로드 및 설치
curl https://dl.querypie.com/releases/bin/docker-compose-$(uname -s)-$(uname -m) -o docker-compose
sudo install -m 755 docker-compose /usr/local/bin4. Rootless Docker 설치
패키지 설치 및 QueryPie 사용자로 로그인하여 Rootless Docker를 설치합니다.
# iptables 설치
sudo dnf install -y iptables
# 커널 모듈 로드
sudo modprobe nf_tables
# QueryPie 사용자로 전환
sudo su - querypie
# Rootless Docker 설치
curl -fsSL https://get.docker.com/rootless | sh
# 환경 변수 설정을 ~/.bashrc에 추가
echo 'export XDG_RUNTIME_DIR=/run/user/$(id -u)' >> ~/.bashrc
echo 'export DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus"' >> ~/.bashrc
echo 'export DOCKER_HOST=unix://$XDG_RUNTIME_DIR/docker.sock' >> ~/.bashrc
# 환경 변수 로드
source ~/.bashrc5. Docker 자동 시작 설정
QueryPie 사용자의 로그인 세션이 종료되어도 Docker 서비스가 계속 실행되도록 설정합니다.
# Root 권한으로 실행
sudo loginctl enable-linger querypie
# 다시 querypie 사용자로 전환
sudo su - querypie
# Docker 시스템 서비스 설정 디렉토리 생성
mkdir -p ~/.config/systemd/user/
# Docker 서비스 파일 생성
cat > ~/.config/systemd/user/docker.service << 'EOF'
[Unit]
Description=Docker Application Container Engine (Rootless)
Documentation=https://docs.docker.com/engine/security/rootless/
[Service]
Environment=PATH=/home/querypie/bin:/usr/bin:/usr/sbin/:$PATH
ExecStart=/home/querypie/bin/dockerd-rootless.sh
ExecReload=/bin/kill -s HUP \$MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
Type=simple
[Install]
WantedBy=default.target
EOF
# 서비스 등록 및 시작
systemctl --user daemon-reload
systemctl --user start docker
systemctl --user enable docker
# 서비스 상태 확인
systemctl --user status docker6. QueryPie 설치 디렉토리 준비
QueryPie 설치와 로그 저장을 위한 디렉토리를 생성합니다.
mkdir -p ~/querypie/log/data
mkdir -p ~/querypie/10.2.67. QueryPie 설치 파일 다운로드 및 설정
QueryPie 설치 파일을 다운로드하고 환경 설정을 구성합니다.
# 설치 디렉토리로 이동
cd ~/querypie/10.2.6
# 설치 패키지 다운로드 및 압축 해제
curl https://dl.querypie.com/releases/compose/10.2.x/package.tar.gz -o package.tar.gz
tar zxvf package.tar.gz
# compose-env 파일 편집
# 에디터(vi 또는 nano)로 compose-env 파일을 열고 다음 섹션을 수정합니다.
# 아래는 변경해야 할 부분만 보여줍니다.
QUERYPIE_WEB_URL=http://YOUR_SERVER_IP:8080
CABINET_DATA_DIR=../log/data
# docker-compose.yml 파일 수정 - 포트 설정
# 에디터(vi 또는 nano)로 docker-compose.yml 파일을 열고 다음 섹션을 수정합니다.
# 아래는 변경해야 할 부분만 보여줍니다.
mysql:
#network_mode: host
+ ports:
+ - 3306:3306
redis:
#network_mode: host
+ ports:
+ - 6379:6379
app:
dns:
- 8.8.8.8
- 168.126.63.1
volumes:
+ - type: bind
+ source: ../log
+ target: /var/log/querypie
ports:
+ - 8080:80
+ - 8443:4438. harbor 로그인 및 QueryPie 마이그레이션
QueryPie 이미지를 다운로드하기 위해 Docker 레지스트리에 로그인하고 서비스를 실행합니다.
# Docker 레지스트리 로그인
# 인증 정보는 파트너사에게 별도로 제공됩니다.
docker login harbor.chequer.io
# Username과 Password를 입력하세요
# 데이터베이스 컨테이너 실행
docker-compose --env-file compose-env --profile database up -d
# tools 컨테이너 실행
docker-compose --env-file compose-env --profile tools up -d
# 데이터베이스 마이그레이션 실행
docker exec -it querypie-tools-1 /app/script/migrate.sh runall9. 라이센스 적용 및 QueryPie 실행
QueryPie를 정상적으로 사용하기 위해 라이센스를 적용합니다.
# 라이센스 파일을 업로드합니다.
# license.crt 파일을 현재 디렉토리에 미리 준비해야 합니다.
curl -XPOST 127.0.0.1:8050/license/upload -F file=@license.crt
# 성공적으로 업로드되면 "[License] Upload: Success" 메시지가 표시됩니다.
# QueryPie 애플리케이션 실행
docker-compose --env-file compose-env --profile querypie up -d
# 로그 확인
docker logs -f querypie-app-1
성공적으로 설치가 완료되면 다음과 같은 로그 메시지가 표시됩니다:
READYZ | ########################################################################
READYZ | # #
READYZ | # ██████╗ ██╗ ██╗███████╗██████╗ ██╗ ██╗██████╗ ██╗███████╗ #
READYZ | # ██╔═══██╗██║ ██║██╔════╝██╔══██╗╚██╗ ██╔╝██╔══██╗██║██╔════╝ #
READYZ | # ██║ ██║██║ ██║█████╗ ██████╔╝ ╚████╔╝ ██████╔╝██║█████╗ #
READYZ | # ██║▄▄ ██║██║ ██║██╔══╝ ██╔══██╗ ╚██╔╝ ██╔═══╝ ██║██╔══╝ #
READYZ | # ╚██████╔╝╚██████╔╝███████╗██║ ██║ ██║ ██║ ██║███████╗ #
READYZ | # ╚══▀▀═╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝╚══════╝ #
READYZ | # #
READYZ | ########################################################################
READYZ | .--------------------------------------------------------.
READYZ | | 🚀 QueryPie Server has been successfully started! 🚀 |
READYZ | | Timestamp in UTC: Mon Mar 24 15:12:26 UTC 2025 |
READYZ | | Timestamp in KST: Tue Mar 25 00:12:26 KST 2025 |
READYZ | '--------------------------------------------------------'웹 접속 확인
브라우저를 열고 아래 URL로 접속하여 QueryPie 에 접근할 수 있습니다:
http://[서버_IP]:8080