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. 코드 설명
- target_folder 변수에 .tar 파일이 있는 폴더 경로를 설정합니다.
- os.listdir(target_folder)를 사용하여 해당 폴더 내의 .tar 파일을 찾습니다.
- subprocess.run(["docker", "load", "-i", tar_path], check=True) 명령어를 실행하여 .tar 파일을 Docker에 로드합니다.
- 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.01.19 |
---|---|
[Python] Python을 활용한 서로 다른 데이터베이스 쿼리 결과 비교 및 엑셀 매핑 (0) | 2025.01.12 |
[Python] Excel 파일 간 문장 유사도 비교하기 (0) | 2025.01.12 |
[Python] 엑셀 파일 간 데이터 비교 (여러 시트일 때) (0) | 2025.01.12 |
[Python] 패키지 설치 SSL Error 해결 (0) | 2025.01.05 |