文档章节

Docker Remote API v1.12使用

China_OS
 China_OS
发布于 2014/06/01 10:00
字数 1370
阅读 997
收藏 3

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
粉丝 410
博文 447
码字总数 499779
作品 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
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

没有更多内容

加载失败,请刷新页面

加载更多

wait()被notify()后,接着执行wait()后面的语句

wait()被notify()后,接着执行wait()后面的语句

noteman
25分钟前
0
0
Ubuntu集群-使用MAAS开始裸机安装

Ubuntu使用MAAS装机的七个步骤。 1、Setup your hardware You need one small server for MAAS and at least one server which can be managed with a BMC. It is recommended to have the M......

openthings
38分钟前
2
0
OSX | SafariBookmarksSyncAgent意外退出解决方法

1. 启动系统, 按住⌘-R不松手2. 在实用工具(Utilities)下打开终端,输入csrutil disable, 然后回车; 你就看到提示系统完整性保护(SIP: System Integrity Protection)已禁用3. 输入reboot回车...

云迹
今天
4
0
面向对象类之间的关系

面向对象类之间的关系:is-a、has-a、use-a is-a关系也叫继承或泛化,比如大雁和鸟类之间的关系就是继承。 has-a关系称为关联关系,例如企鹅在气候寒冷的地方生活,“企鹅”和“气候”就是关...

gackey
今天
4
0
读书(附电子书)|小狗钱钱之白色的拉布拉多

关注公众号,在公众号中回复“小狗钱钱”可免费获得电子书。 一、背景 之前写了一篇文章 《小狗钱钱》 理财小白应该读的一本书,那时候我才看那本书,现在看了一大半了,发现这本书确实不错,...

tiankonguse
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部