Docker Compose로 호스트 실행 파일 실행하는 방법 🐳

DevOps
Docker Compose로 호스트 실행 파일 실행하는 방법 🐳
Author

gabriel yang

Published

August 23, 2025


Docker Compose로 호스트 실행 파일 실행하는 방법 🐳

컨테이너는 기본적으로 격리된 환경에서 실행되지만, 때로는 호스트(운영체제)의 특정 파일이나 프로그램을 컨테이너 내부에서 사용해야 할 필요가 있습니다. 이때 **볼륨 마운트(Volume Mount)**를 사용하여 호스트의 실행 파일을 컨테이너에 공유하고 실행할 수 있습니다.

이번 글에서는 Docker Compose를 사용해 컨테이너에서 호스트의 실행 파일을 실행하는 방법을 알아보겠습니다.

1. 볼륨 마운트의 기본 원리

볼륨 마운트는 호스트의 특정 디렉터리나 파일을 컨테이너의 특정 경로에 연결하는 기능입니다. 이를 통해 컨테이너는 격리된 환경을 유지하면서도 호스트의 파일에 직접 접근할 수 있게 됩니다.

docker-compose에서 이 설정을 하려면 volumes 키를 사용합니다.

volumes:
  - /호스트/경로:/컨테이너/경로

2. Docker Compose로 호스트 실행 파일 실행하기

예를 들어, 호스트에 /home/user/scripts/my_script.sh라는 셸 스크립트가 있고, 이 스크립트를 Docker Compose로 실행하는 컨테이너에서 사용하고 싶다고 가정해 봅시다.

단계 1: 실행할 스크립트 작성

먼저 호스트에 간단한 셸 스크립트를 생성합니다.

# /home/user/scripts/my_script.sh
#!/bin/bash
echo "Hello from a script on the host!"
echo "Current directory: $(pwd)"
echo "Executing in container: $(hostname)"

스크립트에 실행 권한을 부여하는 것을 잊지 마세요.

chmod +x /home/user/scripts/my_script.sh

단계 2: docker-compose.yml 파일 작성

다음과 같이 docker-compose.yml 파일을 작성합니다.

version: '3.8'

services:
  script-runner:
    image: ubuntu:latest
    container_name: script-runner-container
    volumes:
      - /home/user/scripts/my_script.sh:/usr/local/bin/my_script.sh:ro
    command: /usr/local/bin/my_script.sh
  • volumes: my_script.sh 파일을 컨테이너의 /usr/local/bin/ 경로에 **읽기 전용(:ro)**으로 마운트합니다. 읽기 전용으로 설정하면 컨테이너가 호스트의 원본 파일을 수정하거나 삭제하는 것을 방지하여 보안을 강화할 수 있습니다.
  • command: 컨테이너가 시작될 때 자동으로 실행할 명령어를 정의합니다. 여기서는 마운트된 스크립트 파일을 실행하도록 설정했습니다.

단계 3: 컨테이너 실행

docker-compose.yml 파일이 있는 디렉터리에서 다음 명령어를 실행합니다.

docker-compose up

명령어를 실행하면, script-runner 컨테이너가 생성되고, 호스트에 있던 스크립트가 컨테이너 내부에서 실행되는 것을 확인할 수 있습니다.

script-runner-container  | Hello from a script on the host!
script-runner-container  | Current directory: /
script-runner-container  | Executing in container: <container_id>

3. 유의사항 및 권장 사항

  • 권한 문제: 마운트된 파일이 컨테이너에서 실행 권한이 없는 경우, permission denied 오류가 발생할 수 있습니다. 호스트에서 chmod +x로 실행 권한을 부여하거나, Dockerfile에 권한을 설정하는 단계를 추가해야 합니다.
  • 의존성: 실행 파일이 호스트에 설치된 특정 라이브러리나 다른 프로그램에 의존한다면, 해당 의존성을 컨테이너 이미지에 포함시켜야 합니다.
  • 보안: 호스트의 중요한 파일을 마운트할 때는 읽기 전용(:ro) 옵션을 사용하여 보안 위험을 최소화하는 것이 좋습니다.

Docker Compose를 사용하면 이처럼 복잡한 설정을 .yml 파일 하나로 관리하여, 컨테이너 환경을 더 효율적이고 유연하게 구성할 수 있습니다.

카테고리 다른 글

Date Title Author
Aug 24, 2025 도커 소켓 마운트: 컨테이너에서 도커를 제어하는 방법 gabriel yang
Aug 2, 2025 docker-compose PostgreSQL DB 백업 및 복원 gabriel yang
Aug 1, 2025 GCP VM 인스턴스에 도메인 연결하기 gabriel yang
Jul 26, 2025 GCP VM 인스턴스에서 DB 및 서비스 이전 가이드 gabriel yang
Jul 19, 2025 윈도우에 ngrok 설치하고 사용하기 gabriel yang
Jun 5, 2025 FastAPI에서 문서 접속을 환경설정으로 제한하는 방법 gabriel yang
May 5, 2025 포트를 점유하고 있는 서비스 제거하기 gabriel yang
Mar 20, 2025 우분투(Ubuntu)에서 ngrok 설치 및 사용 방법 gabriel yang
Feb 4, 2025 Windows 11에서 WSL 설치 및 Docker 연결하기 gabriel yang
Oct 7, 2024 Docker Compose로 Jenkins 설치 및 사용하기 gabriel yang
Aug 23, 2024 우분투(Ubuntu)에서 특정 폴더를 아파치 서버로 설정하기 gabriel yang
Jul 24, 2024 GitHub Actions 시작하기 gabriel yang
Dec 31, 2023 우분투와 윈도우 파일 공유하기 (samba) gabriel yang
Dec 5, 2023 crontab을 이용해서 Let’s Encrypt SSL 인증서 자동갱신 gabriel yang
Nov 27, 2023 우분투 docker, docker-compse 설치 gabriel yang
Nov 26, 2023 AWS 호스팅 EC2 와 Lightsail의 차이 gabriel yang
Nov 20, 2023 wsl 이미지 저장 위치 변경 및 백업 gabriel yang
Nov 20, 2023 airflow postgresoperator 사용하기 gabriel yang
Nov 18, 2023 docker-compose로 airflow 설치하기 gabriel yang
Nov 15, 2023 wsl2에 docker 설치하기 gabriel yang
Nov 15, 2023 mkfifo를 이용한 IPC gabriel yang
Oct 9, 2023 Github Pull Request 템플릿 적용하기 gabriel yang
No matching items