docker sdk 實踐(windows、ubuntu、macOS)

來源:互聯網
上載者:User

docker sdk 實踐windowsubuntumacOS windows 準備工作 在程式中操作 Docker Linux maxOS

docker sdk 實踐(windows、ubuntu、macOS)

這裡介紹了如何在python中使用 docker api,這裡是用的是docker-py

此處將分別介紹windows、linux(Ubuntu)、macOS下docker SDK的使用實踐(代碼使用python,其他語言可以參考官方文檔)

以下內容僅為個人理解,若有誤望不吝指正 windows

實踐系統:windows 10 64bit 準備工作

docker針對windows 10推出了docker-windows,但需要開啟Hyer-V功能,會導致VMware Workstation無法正常工作,故此處使用的是docker-toolbox。

請按照官方文檔安裝docker-toolbox後,啟動docker QuickStart Terminal即可看到以下輸出:

                        ##         .                  ## ## ##        ==               ## ## ## ## ##    ===           /"""""""""""""""""\___/ ===      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~           \______ o           __/             \    \         __/              \____\_______/docker is configured to use the default machine with IP 192.168.99.100For help getting started, check out the docs at https://docs.docker.comStart interactive shell

此時可以在當前終端介面執行docker操作(如 docker ps、docker iamges 等)

注意這些命令只限於當前終端,另開 cmd 終端的話由於無法串連到 docker server 而失敗,相關提示如下:

> docker versionClient: Version:      17.10.0-ce API version:  1.33 Go version:   go1.8.3 Git commit:   f4ffd25 Built:        Tue Oct 17 19:00:02 2017 OS/Arch:      windows/amd64error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.33/version: open //./pipe/docker_engine: The system cannot find the file specified. In the default daemon configuration on Windows, the docker client must be run elevated to connect. This error may also indicate that the docker daemon is not running.

這是由於docker server是運行在虛擬機器中(ip=192.168.99.100),所以如果想在我們自己的程式中使用docker api,需要使用docker remote api

首先找到 docker server 的 ip 跟連接埠,使用 docker-machine ls 命令即可查看:

λ docker-machine lsNAME      ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER        ERRORSdefault   -        virtualbox   Running   tcp://192.168.99.100:2376           v17.10.0-ce

可以看到 URL 為tcp://192.168.99.100:2376

λ docker -H tcp://192.168.99.100:2376 psGet http://192.168.99.100:2376/v1.33/containers/json: malformed HTTP response "\x15\x03\x01\x00\x02\x02".* Are you trying to connect to a TLS-enabled daemon without TLS?

通過上面命令,可以看到想要串連到 docker server 需要使用TLS

在 cmd 終端,設定以下環境變數即可成功連結:

set DOCKER_HOST=tcp://192.168.99.100:2376set DOCKER_CERT_PATH=C:/Users/Administrator/.docker/machine/certsset DOCKER_TLS_VERIFY=1docker images# 此時能得到正常的結果

其中DOCKER_CERT_PATH可以通過 docker-machine config 命令來查看 在程式中操作 Docker

現在我們可以開始在程式中操作docker了,假設已經安裝了 python docker library(若沒安裝則使用pip install docker進行安裝)

import docker# 定義配置'''Docker 配置,根據實際情況填寫'''DOCKER_HOST = "tcp://192.168.99.100:2376"DOCKER_CERT_PATH = "C:\\Users\\Administrator\\.docker\\machine\\certs"DOCKER_TLS_VERIFY = "1"# test_docker.py## 這裡使用兩種方式連結 docker server## 方式一:通過修改臨時環境變數if DOCKER_HOST is not None:    os.environ['DOCKER_HOST'] = DOCKER_HOSTif DOCKER_CERT_PATH is not None:    os.environ['DOCKER_CERT_PATH'] = DOCKER_CERT_PATHif DOCKER_TLS_VERIFY is not None:    os.environ['DOCKER_TLS_VERIFY'] = DOCKER_TLS_VERIFYclient = docker.from_env()# 方式二:使用 TLSConfig# 配置 TLSConfig,詳見:http://docker-py.readthedocs.io/en/stable/tls.html#docker.tls.TLSConfigtls_config = docker.tls.TLSConfig(    ca_cert=DOCKER_CERT_PATH+"/ca.pem",    client_cert=(        DOCKER_CERT_PATH+'/cert.pem',         DOCKER_CERT_PATH+'/key.pem'    ),    verify=True)client = docker.DockerClient(    base_url=DOCKER_HOST,     tls=tls_config)#測試連結是否成功,輸出 image 列表client.images.list()# [#   <Image: 'amancevice/superset:latest'>, #   <Image: 'mysql/mysql-cluster:latest'># ]
Linux

實踐系統:Ubuntu 16.04

預設情況下 docker 使用unix:///var/run/docker.sock 來進行 Unix socket 通訊,如果 python 運行在本地則可以直接連結:

import dockerclient = docker.from_env()#輸出 image 列表client.images.list()# [#   <Image: 'amancevice/superset:latest'>, #   <Image: 'mysql/mysql-cluster:latest'># ]
maxOS

實踐系統:Mac OS X 10.11.6

啟動docker程式後使用跟 Linux 同樣的代碼即可

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.