[Python] Docker image load

2025. 2. 23. 23:40·개발 (Development)/Python

Python을 사용하여 특정 폴더 내의 .tar 파일들을 찾아 각각 docker load -i [file.tar] 명령어를 실행하는 방법을 정리합니다.

1. 코드 구현

다음은 Python 코드로 특정 폴더에서 .tar 파일을 찾아 Docker에 로드하는 방법입니다.

import os
import subprocess

# 대상 폴더 설정 (현재 디렉토리 기준)
target_folder = "./images"

# 폴더 내의 모든 .tar 파일 찾기
tar_files = [f for f in os.listdir(target_folder) if f.endswith(".tar")]

# 각 .tar 파일을 docker load 실행
for tar_file in tar_files:
    tar_path = os.path.join(target_folder, tar_file)
    print(f"Loading Docker image: {tar_path}")

    try:
        subprocess.run(["docker", "load", "-i", tar_path], check=True)
        print(f"Successfully loaded: {tar_file}")
    except subprocess.CalledProcessError as e:
        print(f"Error loading {tar_file}: {e}")

2. 코드 설명

  1. target_folder 변수에 .tar 파일이 있는 폴더 경로를 설정합니다.
  2. os.listdir(target_folder)를 사용하여 해당 폴더 내의 .tar 파일을 찾습니다.
  3. subprocess.run(["docker", "load", "-i", tar_path], check=True) 명령어를 실행하여 .tar 파일을 Docker에 로드합니다.
  4. check=True를 설정하면 실패 시 예외(CalledProcessError)가 발생하여 오류를 감지할 수 있습니다.

3. 실행 예시

폴더 내 파일 목록

./images/
 ├── image1.tar
 ├── image2.tar
 ├── image3.tar

실행 결과

Loading Docker image: ./images/image1.tar
Successfully loaded: image1.tar
Loading Docker image: ./images/image2.tar
Successfully loaded: image2.tar
Loading Docker image: ./images/image3.tar
Successfully loaded: image3.tar

4. 추가 옵션

파일이 없는 경우 예외 처리 추가

if not tar_files:
    print("No .tar files found in the folder.")
    exit()

Docker 설치 여부 확인

try:
    subprocess.run(["docker", "--version"], check=True, capture_output=True, text=True)
except FileNotFoundError:
    print("Docker is not installed or not in PATH.")
    exit()

병렬 실행 (속도 향상)

파일이 많을 경우 multiprocessing을 사용하여 병렬 로드할 수 있습니다.

from multiprocessing import Pool

def load_docker_image(tar_path):
    subprocess.run(["docker", "load", "-i", tar_path], check=True)

with Pool(processes=4) as pool:  # 동시에 4개씩 로드
    pool.map(load_docker_image, [os.path.join(target_folder, f) for f in tar_files])

5. 정리

  • Python을 사용하여 특정 폴더의 .tar 파일을 자동으로 Docker에 로드할 수 있습니다.
  • subprocess.run(["docker", "load", "-i", tar_path], check=True)를 실행하여 각 파일을 처리합니다.
  • 오류 감지 및 예외 처리를 통해 안정성을 향상할 수 있습니다.
  • 파일이 많다면 multiprocessing을 활용하여 병렬 실행할 수 있습니다.

이제 .tar 이미지 파일이 있는 폴더에서 자동으로 Docker 이미지를 로드할 수 있습니다.

반응형

'개발 (Development) > Python' 카테고리의 다른 글

[Python] Pandas DataFrame에서 값이 저장되지 않는 이유와 해결 방법  (0) 2025.05.18
[Python] Pandas DataFrame에서 for문을 이용해 특정 컬럼 값 변경하기  (0) 2025.05.18
[Python] pandas를 이용한 DataFrame 차집합 구하기  (0) 2025.01.19
[Python] Python을 활용한 서로 다른 데이터베이스 쿼리 결과 비교 및 엑셀 매핑  (0) 2025.01.12
[Python] Excel 파일 간 문장 유사도 비교하기  (0) 2025.01.12
'개발 (Development)/Python' 카테고리의 다른 글
  • [Python] Pandas DataFrame에서 값이 저장되지 않는 이유와 해결 방법
  • [Python] Pandas DataFrame에서 for문을 이용해 특정 컬럼 값 변경하기
  • [Python] pandas를 이용한 DataFrame 차집합 구하기
  • [Python] Python을 활용한 서로 다른 데이터베이스 쿼리 결과 비교 및 엑셀 매핑
LoopThinker
LoopThinker
모르는 것을 알아가고, 아는 것을 더 깊게 파고드는 공간
  • LoopThinker
    CodeMemoir
    LoopThinker
  • 전체
    오늘
    어제
    • 분류 전체보기 (216)
      • 개발 (Development) (151)
        • Algorithm (1)
        • Angular (1)
        • AWS (4)
        • DeepSeek (2)
        • Docker (7)
        • Git (3)
        • Java (30)
        • JavaScript (4)
        • Kafka (5)
        • Kubernetes (4)
        • Linux (6)
        • PostgreSQL (37)
        • Python (26)
        • React (3)
        • TypeScript (3)
        • Vue.js (5)
        • General (10)
      • 데이터 분석 (Data Analysis) (1)
      • 알고리즘 문제 풀이 (Problem Solving.. (27)
      • 자격증 (Certifications) (24)
        • ADsP (14)
        • 정보처리기사 (4)
        • Linux Master (5)
        • SQLD (1)
      • 기술 동향 (Tech Trends) (10)
      • 기타 (Others) (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    docker
    JSON
    typescript
    python
    자바
    백준알고리즘
    Kubernetes
    데이터분석
    백준온라인저지
    deepseek
    백준자바
    오답노트
    JPA
    AWS
    springboot
    java
    리눅스 마스터 2급 2차
    pandas
    ADsP
    javascript
    Kafka
    MyBatis
    리눅스 마스터 2급
    timescaledb
    Linux master
    백준
    DevOps
    Vue.js
    Linux
    PostgreSQL
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
LoopThinker
[Python] Docker image load
상단으로

티스토리툴바