>운영 및 유지보수 >Docker >도커 API가 무엇인가요?

도커 API가 무엇인가요?

青灯夜游
青灯夜游원래의
2021-12-30 12:07:553616검색

Docker API는 소프트웨어 시스템의 다양한 구성 요소 연결에 대한 계약인 docker의 응용 프로그램 인터페이스를 나타냅니다. Docker에는 주로 세 가지 외부 API가 있습니다. 1. Docker Registry API, 3. Docker 원격 API.

도커 API가 무엇인가요?

이 튜토리얼의 운영 환경: linux5.9.8 시스템, docker-1.13.1 버전, Dell G3 컴퓨터.

1. API란 무엇입니까

1. API란 구체적으로 무엇인가요?

위키피디아에서는 API라는 단어에 대해 다음과 같이 설명합니다. 애플리케이션 프로그래밍 인터페이스(영어: 애플리케이션 프로그래밍 인터페이스, 약어로 API)는 애플리케이션 프로그래밍 인터페이스라고도 알려져 있으며, 소프트웨어 시스템의 다양한 구성 요소를 연결하기 위한 규칙입니다. 이 설명을 읽은 후에도 여전히 약간 혼란스러우실 것 같지만, 아래에서는 일반인의 용어로 API가 무엇인지 소개하겠습니다.

우리 모두는 휴대폰을 가지고 있습니다. 휴대폰의 전원이 부족하면 충전할 수 있는 고정 충전기와 충전 케이블을 꼭 찾을 것입니다. 애플은 애플을 사용하고, 안드로이드는 안드로이드를 사용하세요. 하지만 Apple 휴대폰을 충전하는 데 Android 케이블을 사용하지는 않을 것입니다. 이유는 매우 간단합니다. Apple 휴대폰에는 Lightning 인터페이스가 있고 Android 케이블에는 마이크로 인터페이스가 있기 때문입니다. 휴대폰을 충전하거나 데이터를 전송하려면 적합한 충전 케이블과 데이터 케이블을 구입해야 합니다. 이것이 인터페이스에 대한 가장 간단하고 쉬운 이해입니다.

마찬가지로 프로그램 인터페이스도 마찬가지입니다. 각 프로그램에는 고정된 외부 표준 인터페이스가 있습니다. 이 인터페이스는 프로그램을 개발한 개발자가 정의한 것입니다. 해당 인터페이스에 연결하려면 해당 인터페이스 표준을 따라야 합니다.

2. REST란?

API를 배우다 보면 REST라는 단어를 자주 보게 되는데, 정식 영어 이름은 Representational State Transfer입니다. 그렇다면 REST란 무엇인가? REST라는 용어는 아파치 재단의 회장인 로이 필딩(Roy Fielding) 박사가 제안한 용어로, 중국어 의미는 "표현 계층 상태 변환"입니다. 중국어는 이해하기 쉽지 않지만, 다음과 같은 측면에서 배우면 아마도 휴식이 무엇인지 이해할 수 있을 것입니다.

2.1 프리젠테이션 레이어란 무엇인가요?

여기서 프리젠테이션 계층은 리소스의 프리젠테이션 계층을 의미합니다. 소위 "리소스"는 네트워크의 특정 정보입니다. 텍스트, 영화, 서비스 등이 리소스로 간주될 수 있습니다. 그렇다면 식별하고 표현하는 데 사용되는 이러한 리소스는 무엇입니까? 그러면 URI를 사용해야 합니다. 예를 들어 영화를 다운로드할 때 해당 URI 주소가 있어야 합니다. 온라인 소설을 읽을 때도 해당 URI 주소가 있습니다. 그리고 이 주소는 독특하고 독특합니다. 리소스는 URI로 식별되며 리소스가 네트워크에서 "표현"되었음을 이해할 수 있습니다. 그래서 이럴 때 표현계층의 의미는 실제로 "자원"을 구체적으로 표현하는 형태를 의미한다.

2.2.상태 전환이란 무엇입니까?

상식적으로 객체의 상태를 변경하려면 반드시 몇 가지 작업과 수단이 필요합니다. 인터넷상의 리소스도 마찬가지입니다. 영화를 다운로드할 때 먼저 다운로드한 다음 열어서 감상할 수 있습니다. 다운로드 및 획득에는 HTTP 프로토콜이 필요합니다. HTTP 프로토콜에는 GET, POST, PUT 및 DELETE(가져오기, 생성, 업데이트, 삭제)의 네 가지 기본 작업 방법이 있습니다. 이러한 네 가지 기본 방법을 통해 네트워크의 리소스에 대해 일부 상태 변환 작업을 수행할 수 있습니다.

그래서 REST는 프레젠테이션 레이어의 상태 변환입니다. 위의 두 가지 사항을 별도로 이해한 다음 함께 결합할 수 있습니다. 메소드 + URI 리소스로 간단하고 대략적으로 이해될 수 있습니다.

GET /movie/war/Pearl Harbor

DELETE /movie/war/Pearl Harbor

...

2. Docker API 유형

Docker의 API도 나머지 스타일을 따르므로 위의 두 가지 사항을 이해했습니다. , 우리는 docker 자체 API에 대한 관련 지식을 배우기 시작했습니다.

먼저 docker를 리소스라고 생각합니다. api를 통해서도 docker를 운영할 수 있고, 운영 방식도 http와 동일합니다.

두 번째로 Docker에 외부 사용을 위한 API가 무엇인지 이해해야 합니다. 여기서 Docker에는 공식적으로 세 가지 주요 외부 API가 있습니다

  • Docker Registry API
  • Docker Hub API
  • Docker Remote API

1.

Docker 이미지 웨어하우스의 API입니다. 이 API 세트를 운영하면 이미지 웨어하우스를 자유롭게 자동화하고 프로그래밍 방식으로 관리할 수 있습니다.

2. Docker Hub API

Docker Hub API는 사용자 관리 작업을 위한 API입니다. Docker 허브는 확인 및 공용 네임스페이스를 사용하여 계정 정보를 저장하고 계정을 인증합니다. API를 사용하면 관련 사용자 저장소 및 라이브러리 저장소에 대한 작업도 가능합니다.

3. Docker Remote API

이 API는 Docker 명령줄 클라이언트와 동일한 호스트 Docker 서버 API를 제어하는 ​​데 사용됩니다. 이를 통해 도커 컨테이너를 원격으로 운영할 수 있으며, 더 중요한 것은 프로그램을 통해 도커 프로세스를 자동으로 운영하고 유지 관리할 수 있다는 것입니다.

3. API 사용 전 준비

앞서 말씀드린 것처럼 Rest API는 http의 메소드를 사용합니다. 그렇다면 이러한 방법을 구체적으로 사용하는 방법은 무엇입니까? 여기에서는 docker API를 작동하고 호출한 다음 이를 경험하는 몇 가지 일반적인 방법을 제공합니다. 체험하기 전에 docker Rest api를 활성화해야 하며, 그렇지 않으면 활성화되어 있지 않으면 사용할 수 없습니다. 구체적인 개봉 방법:

$ vim /usr/lib/systemd/system/docker.service

ExecStart=/usr/bin/dockerd 바로 뒤에 -H tcp://0.0.0.0:8088 -H unix:///var/run/docker.sock를 추가하세요(포트 8088은 직접 정의할 수 있습니다. 현재 충돌을 따르지 않음)

$ systemctl daemon-reload
$ systemctl restart docker

다시 시작이 완료된 후 컬 127.0.0.1:8088/info | python -mjson.tool 명령을 실행하여 docker의 상태를 확인합니다(json 형식에서는 python -mjson.tool이 차용함). 이 도구는 json 형식을 만들고 읽기 쉽게 만듭니다)

docker API를 활성화한 후에도 여전히 질문이 있습니다. 즉, docker의 기존 API를 어디에서 쿼리할 수 있습니까? docker는 Docker Registry API, Docker Hub API 및 Docker Remote API의 세 가지 주요 API 라이브러리를 제공합니다. 그러면 Docker Registry API 아래에 어떤 API 주소가 있는지 등 구체적이고 자세한 API를 어디서 볼 수 있나요? 이미지를 쿼리하기 위한 API가 있나요? 삭제된 것 있나요? 실제로 이 모든 기능은 공식 웹사이트 API 매뉴얼에서 직접 확인할 수 있습니다. 주소는 https://docs.docker.com/engine/api/v1.38/(무엇인지 확인하세요.) 버전 마지막 v1.38은 대상 버전 번호로 대체될 수 있습니다)

여기서 공식에서는 더 이상 API v1.12 이전 버전 사용을 권장하지 않으며 v1.24 이상의 버전을 사용하는 것을 권장한다는 점에 유의해야 합니다.

로컬 docker API 버전을 확인하려면 docker 버전 명령을 사용하면 됩니다.

4. docker API 작동 방법

1 가장 간단한 컬 방법

CURL 이 명령은 누구나 생각하는 것입니다. 익숙합니다. 기본적으로 Linux에 있습니다. 모두 설치와 함께 제공됩니다. http를 테스트하는 많은 방법에서 CURL을 직접 사용할 수 있습니다.

예를 들어 docker의 이미지 세부 정보를 확인하면 컬을 사용하여 직접 검색할 수 있습니다.

 $ curl -X GET http://127.0.0.1:8088/images/json

이 디스플레이는 명령 뒤에 python -mjson.tool을 추가하여 형식을 지정할 수 있습니다.

$  curl -X GET http://127.0.0.1:8088/images/json | python -mjson.tool

결과 형식이 더욱 표준화되어 읽기 쉬워졌습니다.

모든 컨테이너 보기:

$ curl -X GET http://127.0.0.1:8088/containers/json | python -mjson.tool

컨테이너 만들기:

여기에서 mariadb 데이터베이스용 컨테이너를 만들고, 비밀번호를 123456으로 설정하고, 수신 대기 포트는 3306

$ curl -X POST -H "Content-Type: application/json" -d '{
    "Image": "mariadb",
    "Env": ["MYSQL_ROOT_PASSWORD=123456"],
    "ExposedPorts": {
        "3306/tcp": {}
    },
    "HostConfig": {
        "PortBindings": {
            "3306/tcp": [{"HostIp": "","HostPort": "3306"}]
        }
    },
    "NetworkSettings": {
        "Ports": {
            "5000/tcp": [{"HostIp": "0.0.0.0","HostPort": "3306"}]
        }
    }
}' http://127.0.0.1:8088/containers/create

컨테이너 시작/중지/다시 시작:

$ curl -X POST http://127.0.0.1:8088/containers/{id}/start   (注意这里是POST方法)
$ curl -X POST http://127.0.0.1:8088/containers/{id}/stop   (注意这里是POST方法)
$ curl -X POST http://127.0.0.1:8088/containers/{id}/restart   (注意这里是POST方法)
...
구체적으로 많은 API 메소드가 있습니다. 위에서 언급한 링크에 로그인하여

https://docs.docker.com/engine/api/v1.38

2.Python 프로그램 스크립트 메소드를 볼 수 있습니다. Python은 매우 강력하므로 누구나 이를 인식합니다. 이제 많은 자동화 시나리오에서는 Python을 사용하여 타사 해당 라이브러리를 로드한 다음 비즈니스 논리를 작성하여 DevOps 운영 및 유지 관리를 자동화합니다. Docker는 또한 docker라는 매우 강력한 Python용 라이브러리를 제공합니다. 공식 Python SDK 주소에 로그인하면 Python이 구체적으로 Docker를 작동하는 방법을 알아볼 수 있습니다.

주소는

https://docker-py.readthedocs.io/en/stable/

2.1. docker python 라이브러리 설치

$ pip install docker

2.2 시작하기

import docker
client = docker.DockerClient(base_url='unix://var/run/docker.sock', version="auto")
client.containers.run("ubuntu", "echo hello world")

입니다. 매우 간단한 사용 예를 분석할 수 있습니다.

첫 번째 줄은 타사 라이브러리 도커의 도입을 나타냅니다.

두 번째 줄은 base_url(Docker 서버의 주소) 및 버전(auto로 docker 버전을 자동으로 확인할 수 있음)을 포함하여 Docker 서버의 기본 정보를 구성하는 데 사용됩니다.

세 번째 줄은 docker run ubuntu echo hello world 명령을 실행하는 것과 동일합니다.

2.3. 고급 사용

import docker
client = docker.DockerClient(base_url="tcp://ip:port")
client.images.list()       # 类似docker images命令,显示image的信息列表
client.containers.list()       #  类似docker ps命令
client.containers.list(all=True)       # 类似docker ps -a命令
container = client.containers.get(container_id)           # 获取daodocker容器,这里container_id 是你要输入的具体容器id
container.start()            # 类似docker start 传入具体的容器id ,开启容器

요약:

이제 많은 기업이 자동화된 운영 및 유지 관리 시대에 진입했기 때문에 API 사용 기술과 규칙을 숙지하는 것이 매우 필요합니다. 위에서는 Docker API에 대한 소개를 간략하게 소개했습니다. 실제로는 매우 능숙해야 합니다. 여기에는 많은 유연성과 복잡성이 있지만 여기에는 스크립트 프로그래밍에 대한 지식이 필요합니다.

추천 학습: "docker 비디오 튜토리얼

"

위 내용은 도커 API가 무엇인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.