docker sdk 实践(windows、ubuntu、macOS)
来源:互联网 发布:个性彩铃制作软件 编辑:程序博客网 时间:2024/06/05 09:39
- docker sdk 实践windowsubuntumacOS
- windows
- 准备工作
- 在程序中操作 Docker
- Linux
- maxOS
- windows
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
同样的代码即可
- docker sdk 实践(windows、ubuntu、macOS)
- 在Ubuntu和MacOS下安装Android SDK/ADB/Fastboot(转)
- Mac安装3系统: MacOS+Ubuntu+Windows
- Windows 10中的Docker实践
- Docker for MacOS
- MacOS安装Docker
- Docker在Ubuntu的部署实践
- Docker在Ubuntu的部署实践
- Linux/Windows/MacOS环境下安装Docker的两种方法
- ASP.NET Core 发布到 MAC(macOS系统)实践
- windows安装docker以及安装ubuntu
- Docker实践
- docker实践
- Docker实践
- .NET CORE 实践(2)--对Ubuntu下安装SDK的记录
- 黑苹果,iOS SDK和MobileVLC之逆旅(三) 安装MacOS和iOS SDK
- 基于Ubuntu交叉编译FFmpeg Windows SDK
- 基于Ubuntu交叉编译FFmpeg Windows SDK
- linux命令拾遗
- Linux系统下安装MegaCli64工具查看和管理raid卡
- 关于远程连接2003-can't connect to MYSQL server on ''(10060)
- 自适应算法
- 合并两个排序的链表
- docker sdk 实践(windows、ubuntu、macOS)
- Linux C 单向链表1
- office2pdf
- Python/word.so: undefined symbol: _ZNK4Word7reverseEv
- 《Ext JS 6.2实战》节选——使用Sencha Cmd创建应用程序
- bitcoin 在ubuntu上的安装指南
- Spring Boot @ConfigurationPropreties 实例
- 关于vue.js项目的一点优化
- C语言const限定词基本用法