docker-py를 사용하여python에서 용기를 조작하는 방법

10170 단어 DockerPython

A Python library for the Docker Engine API.

배경.


docker페이지를 보고 docker-py이런 창고를 발견했어요.
가까스로 건드려 사용법을 총결해 봤다.

docker-py 소개


Docker Engine API는 Python 라이브러리를 사용합니다.
ptyhon으로 쓴 프로그램에서 docker 명령을 사용할 수 있습니다.
오픈소스입니다. GiitHub에서 공개합니다.(Apache License 2.0)
docker/docker-py
언어는python으로 썼습니다.스타수 4000 정도.

컨디션

  • OS : macOS Mojave 10.14.2
  • Python : 3.7.3
  • 설치 단계


    pip를 사용하면 간단하게 설치할 수 있습니다
    $ pip install docker
    

    요컨대 실행하다


    당분간 실행하다.
    다음 원본 파일은 docker 수호 프로세스와 통신하기만 하면 아무것도 보이지 않습니다.
    여기에 오류가 발생했을 때, 설치 실패나 import의 경로가 순조롭지 못할 수도 있습니다.
    과거에 설치된 경우는 대부분 한 번 삭제하고 다시 설치한 다음에 해결하는 것이다.
    import docker
    
    # デフォルトソケットを用いて通信
    client = docker.from_env()
    
    여기 있다. 프롬.env에 Docker 서버의 URL을 기록할 수도 있습니다.
    client = docker.DockerClient(base_url='unix://var/run/docker.sock')
    
    또 이 단계에서는 도커에 대한 정보를 얻는 기능도 실현했다.
    모든 값은 사전 형식으로 되돌아옵니다.
    # データ使用情報を表示
    client.df()
    
    # システムの情報を表示します。 => docker info
    client.info())
    
    # dockerのバージョンを表示 => docker version
    client.version()
    
    # サーバが応答してるかどうか確認
    client.ping()
    
    위와 같이 사용하면 docker의 시작과 응용 프로그램의 docker 버전 정보를 간단하게 낮출 수 있습니다.(docker는 예전에 넣고 움직이지 않아요! 이런 건 줄어드는 것 같아요. 지령을 내려야 한다고 해요.)
    import sys
    import docker
    
    client = docker.from_env()
    
    # 応答確認
    if client.ping() == False :
        print ("Ping Error", file=sys.stderr)
    
    cv = client.version()
    print(cv["Components"][0]["Version"])
    

    운행 컨테이너


    위쪽은 도커의 운행 환경을 살펴보고 여기서부터 실제 컨테이너를 운행한다.
    도커 런처럼 모양도 간단하게 움직일 수 있어요.
    실행할 때 옵션을run ()의 세 번째 인자에 전달해서 처리할 수 있습니다.
    cpu_count의 CPU 분배와 entrypoint에서 용기의 입구점,network의 네트워크 등을 지정할 수 있습니다.
    import sys
    import docker
    
    client = docker.from_env()
    
    # run(image, command=None, **kwargs)
    print (client.containers.run("alpine", "cat /etc/alpine-release"))
    
    물론 용기 제작을 시작하지 않거나 용기 정보를 얻을 수도 있다.
    # コンテナを作成
    client.containers.create()
    
    # コンテナリストを取得
    client.containers.list()
    
    # コンテナオブジェクトを取得
    client.containers.get(id or name)
    
    # 停止したコンテナを削除
    client.containers.prune()
    
    # pullもできる
    image = client.images.pull("alpine")
    
    이 일대의 모든 서버의 오류는 'docker.errors.APIerror' 로 답장됩니다.

    네트워킹


    네트워크도pytohon을 통해 조작할 수 있다.
    docker network에 대한 작업이 있는 것 같습니다.
    Docker 컨테이너 네트워크 이해
    client.networks.create("network1", driver="bridge")
    
    # サブネット、ゲートウェイを使うことも
    ipam_pool = docker.types.IPAMPool(
        subnet='192.168.52.0/24',
        gateway='192.168.52.254'
    )
    
    ipam_config = docker.types.IPAMConfig(
        pool_configs=[ipam_pool]
    )
    
    client.networks.create(
        "network1",
        driver="bridge",
        ipam=ipam_config
    )
    

    소리


    볼륨 생성/삭제 가능
    volume = client.volumes.create(name='foobar', driver='local',
            driver_opts={'foo': 'bar', 'baz': 'false'},
            labels={"key": "value"})
    
    # 未使用ボリュームの削除
    volume.prune(filters)
    

    총결산


    만져보니까'python'과'docker'를 동시에 배울 수 있는 좋은 장르인 것 같아요!이런 느낌이야.
    여기에 소개된 기능 이외에도 많은 기능이 있다.docker 명령으로 할 수 있는 일은 할 수 있을 것 같습니다.
    공식 문서를 읽으면서 진행하면 다양한 콘텐츠를 활용할 수 있을 것 같다.
    (docker-py용 용기가 재미있어요)

    참조 링크

  • docker/docker-py
  • Docker SDK for Python
  • 파이썬을 배우는 동시에 SDKs for Docker Engine API를 터치해 보았습니다.
  • 좋은 웹페이지 즐겨찾기