Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Docker용 Python 라이브러리 API

<시간/>

Python 라이브러리 API를 사용하여 컨테이너, 이미지, 클러스터, 스웜 등과 같은 도커 객체에 액세스, 관리 및 조작할 수 있습니다. docker 명령이 허용하는 거의 모든 작업을 수행할 수 있습니다. 이것은 django 또는 flask와 같은 Python 앱을 사용하고 애플리케이션에 사용하는 것과 동일한 Python 스크립트를 사용하여 도커 컨테이너를 유지하려는 경우에 매우 편리합니다.

docker용 python 라이브러리 API를 사용하려면 docker−py라는 패키지를 설치해야 합니다. 다음 pip 명령을 사용하여 그렇게 할 수 있습니다. python 2가 설치되어 있으면 pip3을 pip로 바꿉니다.

pip3 docker−py 설치

이제 docker용 python 클라이언트 라이브러리 API의 다양한 기능을 하나씩 살펴보겠습니다.

API를 사용하여 python 스크립트 내에서 docker 명령을 실행하려면 먼저 docker 데몬에 연결해야 합니다. 다음 명령을 사용하여 수행할 수 있습니다. -

#import clientfrom docker import client#데몬에 연결하기 위한 클라이언트 객체 생성 =client.Client(base_url='unix://var/run/docker.sock')

도커 데몬에 연결한 후 다음 명령을 사용하여 모든 컨테이너 목록을 가져올 수 있습니다. 권한 오류를 방지하기 위해 명령을 실행하기 전에 루트 사용자로 로그인했음을 유의하십시오.

myClient.containers()

ID, 관련 이미지 및 이미지 ID, 레이블, 포트, 상태 등과 함께 로컬 시스템에 있는 모든 컨테이너의 목록을 제공합니다.

새 컨테이너를 만들려면 클라이언트 개체에서 create_container 메서드를 사용할 수 있습니다.

myContainer=myClient.create_container(image='ubuntu:latest',command='/bin/bash')

위의 명령을 사용하여 우분투 이미지에서 컨테이너를 만들고 bash 또는 원하는 다른 명령을 여는 명령을 제공할 수 있습니다.

다음 명령을 사용하여 컨테이너의 ID를 인쇄하여 컨테이너가 생성되었는지 확인할 수 있습니다 -

print(myContainer['Id'])

특정 컨테이너를 검사하기 위해 클라이언트 객체에 inspect_container 메소드를 사용할 수 있습니다.

myClient.inspect_container('a74688e3cf61ac11fd19bcbca1003465b03b117537adfc826db52c6430c46ba5')

내부에서 검사하려는 컨테이너의 컨테이너 ID를 인수로 제공해야 합니다. 경로나 이름 또는 생성 날짜와 같은 특정 필드만 검사할 수도 있습니다.

myClient.inspect_container에게 ( 'a74688e3cf61ac11fd19bcbca1003465b03b117537adfc826db52c6430c46ba5') '이름']
 myClient.inspect_container ( 'a74688e3cf61ac11fd19bcbca1003465b03b117537adfc826db52c6430c46ba5') '만든'] myClient.inspect_container는 ( 'a74688e3cf61ac11fd19bcbca1003465b03b117537adfc826db52c6430c46ba5') '패스']  

컨테이너를 커밋하려면 컨테이너 개체에 커밋 메서드를 사용할 수 있습니다. 컨테이너에 태그를 제공할 수도 있습니다.

myClient.commit('a74688e3cf61ac11fd19bcbca1003465b03b117537adfc826db52c6430c46ba5', tag='container1')
위의 명령은 컨테이너의 ID를 반환합니다. 컨테이너를 다시 시작하려면 컨테이너가 여전히 존재하는지 확인해야 합니다. 이것을 피하기 위해 우리가 할 수 있는 일은 명령을 try-catch 블록 안에 래핑하는 것입니다.
try:myClient.restart('a74688e3cf61ac11fd19bcbca1003465b03b117537adfc826db52c6430c46ba5')예외 e:print(e)

모든 이미지 목록을 얻으려면 클라이언트 개체에서 images 메소드를 사용하면 됩니다.

이미지 =myClient.images()

모든 이미지 목록을 반환합니다. 첫 번째 이미지의 세부 정보를 인쇄하려면 −

를 사용하십시오.
인쇄(이미지[0])

이미지를 검사하려면 -

myClient.inspect_image('9140108b62dc87d9b278bb0d4fd6a3e44c2959646eb966b86531306faa81b09b')

이미지 ID를 인수로 제공해야 합니다.

이제 볼륨 작업에 유용한 몇 가지 명령을 볼 수 있습니다. 모든 볼륨의 목록을 가져오려면 클라이언트 개체에서 볼륨 메서드를 사용할 수 있습니다.

볼륨 =myClient.volumes()

모든 볼륨의 목록을 반환합니다. 첫 번째 볼륨의 세부 정보를 인쇄하려면 다음을 사용할 수 있습니다. -

인쇄(볼륨['볼륨'][0])

볼륨을 생성하려면 볼륨 이름, 드라이버 이름을 지정해야 하며 선택적으로 다른 옵션도 지정할 수 있습니다.

volume=myClient.create_volume(name='myVolume1', 드라이버='local', driver_opts={})

볼륨이 생성되었는지 확인하려면 인쇄해 보세요.

인쇄(볼륨)

볼륨을 검사하려면 클라이언트 객체에서 inspect_volume 메소드를 사용하세요.

myClient.inspect_volume('myVolume1')

볼륨이 탑재된 컨테이너를 생성하려면 다음 예를 사용할 수 있습니다. -

mounted_container =myClient.create_container( '우분투', 'ls', volume=['/var/lib/docker/volumes/myVolume1'], host_config=myClient.create_host_config(binds=[ '/var/lib/docker /볼륨/myVolume1:/usr/src/app/myVolume1', ]))

위의 명령은 우분투 이미지에서 컨테이너를 생성하고 진입점을 ls로 지정하고 로컬 머신의 /var/lib/docker/volumes/myVolume1에 있는 볼륨을 도커 컨테이너의 /usr/src/app/myVolume1에 마운트합니다.

결론적으로 이 기사에서는 파이썬 스크립트를 사용하여 도커 컨테이너, 이미지, 볼륨과 같은 도커 객체를 생성, 검사 및 관리하는 방법에 대해 논의했습니다. 이것은 django 또는 flask를 사용하는 웹 응용 프로그램 또는 tkinter를 사용하거나 다른 파이썬 스크립트를 사용하는 GUI 응용 프로그램과 같은 파이썬 도구를 사용하여 응용 프로그램을 빌드할 때 매우 유용합니다. 도커 컨테이너에서 애플리케이션을 관리하려는 경우 명령줄 인터페이스를 통해 개별적으로 명령을 실행하는 대신 Python 스크립트를 사용하여 도커 명령을 작성하는 것이 좋습니다.