[Docker] 파이썬에서 도커 명령하기

hugingstar·2023년 10월 10일
0

컨테이너를 원하는 시나리오에 맞춰서 핸들링 하기 위해서는 파이썬에서 os 패키지를 사용할 줄 알아야 한다. 개발 완료된 것을 도커허브에 한번에 등록하고, 불러와서 사용하기에 나름 편해서 많이 사용하면 좋다.

도커를 사용하면서, 아주 간단한 기능이지만 아래 두가지를 잘 다루면 아주 좋은 것 같다.

  1. 환경변수 다루기(읽기, 쓰기)

  2. 도커 명령어 (RUN, PULL, SEARCH, PUSH ...)

파이참 스크립트 안에서도 구현할 수 있다.

1. 환경변수

1-1. 환경변수 확인하기

  • 환경변수가 지정되어 있다면 os.environ을 사용해서 읽을 수 있다.
#환경변수 읽기
print(os.environ["MODE"]) 
    
#Timezone 읽기
print(os.environ["TZ"]) 

1-2. 환경변수 추가하기(쓰기 & 덮어쓰기)

  • 환경변수가 없으면 새롭게 쓸 수 도 있다.
  • 도커를 실행할 때 이 기법을 사용하면 정말 편하게 다룰 수 있을 것 같다.
  • 단, 숫자는 환경변수로 입력할 수 없으니까 '문자열'로 입력해야된다.
#환경변수 쓰기 & 덮어쓰기
os.environ['MODE'] = 'Training'
os.environ['MODE'] = 'Test'

# Timezone writing
os.environ['MODE'] = 'Asia/Seoul'

2. 도커 명령어

2-1. 이미지 당겨오기

  • 허브에 등록된 이미지를 로컬로 당겨오기
#이미지 당겨오기 (Hub to local)
print(os.system("docker pull ubuntu"))

2-2. 이미지 당겨온 것 확인하기

  • 당겨온 이미지 확인하기(in local)
#이미지 확인
print(os.system("docker images"))
  • (2-1), (2-2) 완료된 화면

2-3. 이미지 당겨온 것 확인하기

  • 이미지 컨테이너로 실행하기, 활성상태 확인하기
#이미지 컨테이너로 실행시키기
print(os.system("docker run -it --rm ubuntu"))
    
#활성화된 컨테이너 확인하기
print(os.system("docker ps -a"))

2-4. 도커허브 이미지 확인하기

  • 도커 허브에 등록된 이미지 검색 (이미지 명은 글자 개수 제한이 있다.)
#도커 허브 레파지토리에 등록된 이미지 검색
print(os.system("docker search ubuntu"))

2-5. 컨테이너 정지, 삭제

  • 컨테이너와 이미지를 일괄적으로 정지, 삭제하고 싶을 때 사용하는 명령어
  • 단, 막 사용하면 모든 것을 날려버릴 수 있으니까 조심해야 한다.
#컨테이너 일괄 정지
print(os.system("docker stop $ (docker ps -a -q)"))
    
#컨테이너 일괄 삭제
print(os.system("docker rm $ (docker ps -a -q)"))

2-6. 이미지 삭제

  • 이미지를 모두 삭제한다.(잘못하면 개발한거 다 날린다.)
#컨테이너 일괄 삭제
print(os.system("docker rmi $ (docker images -q)"))

4. 전체 코드

  • 클래스 안에서 아래와 같이 사용할 수 있다.
  • 컨테이너 용량이 커지느 만큼 속도 잘 안나옴.
    import os

    class UbuntuRunning:
        def __init__(self):
        	# 우분투 이미지 당겨오기
            print(os.system("docker pull ubuntu"))
            # 이미지 확인
            print(os.system("docker images"))
            # 이미지 컨테이너로 실행시키기
            print(os.system("docker run -it --rm ubuntu"))
            # 컨테이너 확인하기
            print(os.system("docker ps -a"))
            # 컨테이너 멈추기
            print(os.system("docker stop -a"))
            # 도커허브 이미지 확인
            print(os.system("docker search ubuntu")
            # 나머지는 위에서 추가해서 사용 가능
            
    if __name__ == '__main__':
        UbuntuRunning()

0개의 댓글