文档章节

Docker Remote API v1.12使用

China_OS
 China_OS
发布于 2014/06/01 10:00
字数 1370
阅读 938
收藏 3
点赞 1
评论 11

Docker Remore API的使用范例:

为了可以远程使用docker API,需要设置以下docker的运行模式,默认监听在sock上,修改/etc/default/docker文件,DOCKER_OPTS="-H tcp://0.0.0.0:4243 -H unix://var/run/docker.sock"

docker容器信息


containers

1    列出容器

GET    /containers/json
参数
    all:1表示真,0表示假,显示所有的容器,默认显示只在运行的容器
    limit:显示最后创建的哪些容器,包括未运行的容器
    since:显示容器的ID,包括未运行的容器
    before:显示在哪个容器的ID创建之前的容器,包括未运行的容器
    size:1表示真,0表示假,显示容器的大小

curl -s -XGET 'http://0.0.0.0:4243/containers/json?all=1'| python -m json.tool

2    检查容器

GET    /containers/(container id)/json 

curl -s -XGET 'http://0.0.0.0:4243/containers/7101b7cbb261/json'| python -m json.tool

3    创建容器

POST     /containers/create
参数
   config:容器的配置文件
   或者使用json格式的POST数据

curl -s -XGET 'http://0.0.0.0:4243/containers/create  HTTP/1.1 Content-Type: application/json {  }

例如:

curl -XPOST -H "Content-Type: application/json"  http://0.0.0.0:4243/containers/create -d '{
     "Hostname":"",
     "User":"",
     "Memory":0,
     "MemorySwap":0,
     "AttachStdin":false,
     "AttachStdout":true,
     "AttachStderr":true,
     "PortSpecs":null,
     "Privileged": false,
     "Tty":false,
     "OpenStdin":false,
     "StdinOnce":false,
     "Env":null,
     "Dns":null,
     "Image":"vieux/elasticsearch",
     "Volumes":{},
     "VolumesFrom":"",
     "WorkingDir":""
}'

4    列出正在运行的容器里面的进程

GET    /containers/(container id)/top
参数
    ps_args:传递给ps的参数,例如使用aux参数

curl -s -XGET 'http://0.0.0.0:4243/containers/7101b7cbb261/top'| python -m json.tool

5    获取一个容器的logs

GET /containers/(container id)/logs
参数
    follow:1代表真,0代表假,返回stream流日志,默认是假
    stdout:1代表真,0代表假,如果logs=true,则返回stdout log,默认是假
    stderr:1代表真,0代表假,如果logs=true,则返回stderr log,默认是假
    timestamps:1代表真,0代表假,如果logs=true,则在每一行日志前打印一个timestamps,默认是假

curl -s -XGET 'http://0.0.0.0:4243/containers/7101b7cbb261/logs?stdout=1&follow=1&timestamps=1'

6    检查一个容器的改变

GET    /containers/(container id)/changes

curl -s -XGET 'http://0.0.0.0:4243/containers/7101b7cbb261/changes'|python -m json.tool

7    导出容器内容

GET    /containers/(container id)/export

#导出一个容器,千万不要随便尝试
curl -s -XGET 'http://0.0.0.0:4243/containers/7101b7cbb261/export'
8    启动一个容器

POST /containers/(container id)/start

curl -s -XPOST 'http://0.0.0.0:4243/containers/a9c07396bd0b/start'

9    停止一个容器

POST    /containers/(container id)/stop
参数
   t:等待多少秒之后再停止容器

curl -s -XPOST 'http://0.0.0.0:4243/containers/a9c07396bd0b/stop'

10    重启一个容器

POST    /containers/(container id)/restart
参数
   t:等待多少秒之后再重启容器

curl -s -XPOST 'http://0.0.0.0:4243/containers/a9c07396bd0b/restart'
11    杀死一个容器

POST    /containers/(container id)/kill
参数
    signal:发送一个什么信号给容器,可以是数字也可以是“SIGINT”

12    附加到一个容器上

POST    /containers/(container id)/attach
参数
    logs:1代表真,0代表假,返回logs,默认是假
    stream:代表真,0代表假,返回stream,默认是假
    stdout:1代表真,0代表假,如果logs=true,则返回stdout log,如果stream=true,则attach到stdout上,默认是假
    stderr:1代表真,0代表假,如果logs=true,则返回stderr log,如果stream=true,则attach到stderr上,默认是假
    stdin:1代表真,0代表假,如果stream=true,则attach到stdin上,默认是假

curl -s -XPOST 'http://0.0.0.0:4243/containers/7101b7cbb261/attach?logs=1&stream=1&stdout=1'

13    阻止一个容器直到该容器退出

POST    /containers/(container id)/wait

curl -s -XPOST 'http://0.0.0.0:4243/containers/7101b7cbb261/wait'

14    删除一个容器

DELETE    /comtainers/(container id)
参数
   v:1代表真,0代表假,删除volumes和容器的联系,默认是假
   force:1代表真,0代表假,即使容器在运行,也删除容器

curl -s -XDELETE 'http://0.0.0.0:4243/containers/3457e4cd8398'


15    从容器里面拷贝文件或者目录

POST    /containers/(container id)/copy


images

1    列出镜像

GET    /images/json   
参数
    all:1代表真,0代表假,默认是假    
    filters:一个json格式的键值对

curl -s -XGET 'http://0.0.0.0:4243/images/json?all=0'| python -m json.tool

2    创建一个镜像
POST    /images/create
参数
   fromImage:
   fromSrc:
   repo:仓库
   tag:tag标记
   registry:
3     给镜像中插入一个文件
POST    /images/(image name)/insert
#从url中取出文件插入到镜像的path里面
curl -s -XGET 'http://0.0.0.0:4243/images/insert?url=http://127.0.0.1/index.php&path=/opt'
4     检查一个镜像
GET    /images/(image name)/json

curl -s -XGET 'http://0.0.0.0:4243/images/ubuntu14/json'| python -m json.tool

5     获取镜像的历史
GET    /images/(image name)/history
    
curl -s -XGET 'http://0.0.0.0:4243/images/ubuntu14/history'| python -m json.tool

6     push镜像到仓库
POST    /images/(image name)/push
参数
   registry:哪个registry你想push
7    给仓库的镜像打tag

POST    /images/(image name)/tag
参数
   repo:The repository to tag in
   force:1代表真,0代表假,默认是假
8    删除一个镜像

DELETE    /images/(image name)
参数
   force:1代表真,0代表假,默认是假  
   noprune:1代表真,0代表假,默认是假  

curl -s -XDELETE 'http://0.0.0.0:4243/images/ubuntu14'
9    搜索镜像

GET    /images/search
参数
    term:搜索哪个镜像

curl -s -XGET http://0.0.0.0:4243/images/search?term=nginx
10    利用Dockfile构建镜像

POST    /build
参数
   t:repository名称
   q:安静模式
   nocache:构建镜像时不使用cache
   rm:容器成功构建成功后删除中间层容器
   forcerm:删除中间层容器
11    检查认证

POST    /auth
12    显示系统信息

GET    /info

curl -s -XGET 'http://0.0.0.0:4243/info'| python -m json.tool
13    显示docker版本信息

GET    /version
    
curl -s -XGET 'http://0.0.0.0:4243/version'| python -m json.tool
14    ping docker server是否存活

GET    /_ping

curl -s -XGET 'http://0.0.0.0:4243/_ping'
15    利用现有的容器创建镜像,也就是commit

POST    /commit
16    监控docker事件

GET    /events
参数
    since:timestamp
    until:timestamp




© 著作权归作者所有

共有 人打赏支持
China_OS
粉丝 403
博文 393
码字总数 487778
作品 0
徐汇
技术主管
加载中

评论(11)

Aceslup
Aceslup

引用来自“Aceslup”的评论

官方文档我居然找不到API的相关,我真是弱爆了。

引用来自“China_OS”的评论

:cold_sweat:
最后还是找到了:grin:
China_OS
China_OS

引用来自“Aceslup”的评论

官方文档我居然找不到API的相关,我真是弱爆了。
:cold_sweat:
Aceslup
Aceslup
官方文档我居然找不到API的相关,我真是弱爆了。
T
Tufei

引用来自“Tufei”的评论

还有一个问题:
通过dockerfile 创建 image,这个在v1.17的文档里
POST /build HTTP/1.1
{{ TAR STREAM }}

这个在REST API上应该是个什么形式呀,没找到方法,不像list image这样直接
curl -s -XGET 'http://0.0.0.0:4243/images/json?all=0'| python -m json.tool

引用来自“China_OS”的评论

你们搞到什么地步了?
我通过curl -s -X POST 'http://0.0.0.0:4243/build 来构建image,结果返回了错误。这句话肯定不对,应该要跟上他的什么{{ TAR STREAM }}, 但这个参数怎么加呢
T
Tufei

引用来自“Tufei”的评论

还有一个问题:
通过dockerfile 创建 image,这个在v1.17的文档里
POST /build HTTP/1.1
{{ TAR STREAM }}

这个在REST API上应该是个什么形式呀,没找到方法,不像list image这样直接
curl -s -XGET 'http://0.0.0.0:4243/images/json?all=0'| python -m json.tool

引用来自“China_OS”的评论

你们搞到什么地步了?
我通过curl -s -X POST 'http://0.0.0.0:4243/build 来构建image,结果返回了错误。这句话肯定不对,应该要跟上他的什么{{ TAR STREAM }}, 但这个参数怎么加呢
China_OS
China_OS

引用来自“Tufei”的评论

还有一个问题:
通过dockerfile 创建 image,这个在v1.17的文档里
POST /build HTTP/1.1
{{ TAR STREAM }}

这个在REST API上应该是个什么形式呀,没找到方法,不像list image这样直接
curl -s -XGET 'http://0.0.0.0:4243/images/json?all=0'| python -m json.tool
The stream must be a tar archive compressed with one of the following algorithms: identity (no compression), gzip, bzip2, xz. The archive must include a file called `Dockerfile` at its root. It may include any number of other files, which will be accessible in the build context (See the [*ADD build command*](/reference/builder/#dockerbuilder)). 需要一个指定格式的tar包,根目录里面包含dockerfile文件
China_OS
China_OS

引用来自“Tufei”的评论

还有一个问题:
通过dockerfile 创建 image,这个在v1.17的文档里
POST /build HTTP/1.1
{{ TAR STREAM }}

这个在REST API上应该是个什么形式呀,没找到方法,不像list image这样直接
curl -s -XGET 'http://0.0.0.0:4243/images/json?all=0'| python -m json.tool
你们搞到什么地步了?
T
Tufei
还有一个问题:
通过dockerfile 创建 image,这个在v1.17的文档里
POST /build HTTP/1.1
{{ TAR STREAM }}

这个在REST API上应该是个什么形式呀,没找到方法,不像list image这样直接
curl -s -XGET 'http://0.0.0.0:4243/images/json?all=0'| python -m json.tool
T
Tufei

引用来自“Tufei”的评论

非常赞!有没有详细的参数解释,关于创建容器
"AttachStdin":false,
"AttachStdout":true,
"AttachStderr":true,

引用来自“China_OS”的评论

详细的解释到没有,线上只用了几个简单的创建指令
Thanks,那这三个参数在你的实验里有没有体验出什么差异, 我设置为true false都没看出来。
China_OS
China_OS

引用来自“Tufei”的评论

非常赞!有没有详细的参数解释,关于创建容器
"AttachStdin":false,
"AttachStdout":true,
"AttachStderr":true,
详细的解释到没有,线上只用了几个简单的创建指令
Play with docker 1.12

Docker v1.12 brings in its integrated orchestration into docker engine. Starting with Docker 1.12, we have added features to the core Docker Engine to make multi-host and multi-......

文艺小青年
2017/01/01
0
0
Docker 的配置文件说明

摘要: 由于 Linux 不同发行版所采用的默认管理框架的不同,Docker 在不同环境下所使用的默认配置文件也有所不同。这给初学者带来了极大的困惑和不便。好消息是,Docker 官方也意识到了这个问...

姬子玉
2017/11/27
0
0
Docker Swarm 集群(十七)

一、Docker Swarm 概念 1、集群 从主机的层面来看,Docker Swarm 管理的是 Docker Host 集群。所以先来讨论一个重要的概念 - 集群化(Clustering)。 服务器集群由一组网络上相互连接的服务器...

wzlinux
05/07
0
0
Docker Swarm 中最重要的概念- 每天5分钟玩转 Docker 容器技术(94)

从主机的层面来看,Docker Swarm 管理的是 Docker Host 集群。所以先来讨论一个重要的概念 - 集群化(Clustering)。 服务器集群由一组网络上相互连接的服务器组成,它们一起协同工作。一个集...

CloudMan6
2017/11/17
0
0
Deis v1.12 发布,开源 PaaS 系统

Deis v1.12 发布,更新如下:新特性 deis-controller uses the host's Docker engine for app config, no longer requiring Docker 1.5.0 now works with images built by Docker 1.6.2 and......

oschina
2015/11/05
582
0
Docker配置文件在Ubuntu中不起作用的解决办法

环境 1. OS 版本: Ubuntu 16.04 LTS 2. Docker版本: Docker version 1.11.2, build b9f10c9 问题描述 最近想使用Docker的Remote API,即使用REST API的形式访问、操作Docker,按照网上的几篇...

风摆残荷
2016/09/04
85
0
Docker学习笔记八 使用Docker API

8.1 Docker API 在Docker生态系统中一共有三种API: Registry API:提供了与Docker Registry集成的功能; Docker Hub API:提供了与Docker Hub集成的功能; Docker Remote API:提供了与Doc...

一万
2016/07/15
48
0
Docker on Mac上的Remote API 远程控制

Docker提供了Remote API,可以通过REST接口进行Docker服务的控制,包括pull/push等所有操作,结果与本机的操作完全一样。使用Docker Remote API可以通过脚本进行Docker集群的自动化控制。 但...

openthings
2016/10/29
491
0
Python操纵Docker Remote API实现自动化

Docker提供了Remote API,可以通过REST接口进行Docker服务的控制,包括pull/push等所有操作,结果与本机的操作完全一样。使用Docker Remote API可以通过脚本进行Docker集群的自动化控制。 1、...

openthings
2016/10/28
120
0
微度网络/chinese_docker

Docker 中文指南 注意 现在已经开始v1.12版本的翻译,因为现在的版本中很多都已经不适用了,如果您想参加或者查看进度 https://github.com/widuu/chinesedocker/tree/v1.12.0 文章目录 Dock...

微度网络
2015/04/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

gcviewer的使用

1、没有安装git软件 在编译打包GCViewer的过程中,不能执行git命令,错误信息如下: [ERROR] Failed to execute goal org.codehaus.mojo:buildnumber-maven-plugin:1.4:create (create-build...

刀锋
10分钟前
0
0
Android LogUtil 日志优化 调试的时候打印 点击跳转

打印日志的时候,可以点击跳转 LogUtil.java public class LogUtil { private static boolean IS_DEBUG = BuildConfig.DEBUG; public static void i(String tag, String message) {......

Jay_kyzg
19分钟前
0
0
人工智能你必须掌握的32个算法(二)归并排序算法

归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子...

木头释然
22分钟前
0
0
第十四章NFS服务搭建与配置

14.1 NFS介绍 NFS介绍 NFS是Network File System的缩写;这个文件系统是基于网路层面,通过网络层面实现数据同步 NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netap...

Linux学习笔记
45分钟前
1
0
流利阅读笔记27-20180716待学习

生了娃照样能打,两位母亲温网会师 Lala 2018-07-16 1.今日导读 现今在生儿育女后回归事业的母亲们已经非常多见,但是很少有人想到,以高强度运动与竞争激烈为特色的竞技体育项目也会有 work...

aibinxiao
46分钟前
6
0
Guava 源码分析(Cache 原理【二阶段】)

前言 在上文「Guava 源码分析(Cache 原理)」中分析了 Guava Cache 的相关原理。 文末提到了回收机制、移除时间通知等内容,许多朋友也挺感兴趣,这次就这两个内容再来分析分析。 在开始之前...

crossoverJie
58分钟前
0
0
OSChina 周一乱弹 —— 如果是你喜欢的女同学找你借钱

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @guanglun :分享Michael Learns To Rock的单曲《Fairy Tale》 《Fairy Tale》- Michael Learns To Rock 手机党少年们想听歌,请使劲儿戳(这...

小小编辑
今天
749
19
NNS域名系统之域名竞拍

0x00 前言 其实在官方文档中已经对域名竞拍的过程有详细的描述,感兴趣的可以移步http://doc.neons.name/zh_CN/latest/nns_protocol.html#id30 此处查阅。 我这里主要对轻钱包开发中会用到的...

暖冰
今天
0
0
32.filter表案例 nat表应用 (iptables)

10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用 10.15 iptables filter表案例: ~1. 写一个具体的iptables小案例,需求是把80端口、22端口、21 端口放行。但是,22端口我...

王鑫linux
今天
0
0
shell中的函数&shell中的数组&告警系统需求分析

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析

影夜Linux
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部