Docker Remote API v1.12使用
博客专区 > China_OS 的博客 > 博客详情
Docker Remote API v1.12使用
China_OS 发表于4年前
Docker Remote API v1.12使用
  • 发表于 4年前
  • 阅读 877
  • 收藏 3
  • 点赞 1
  • 评论 11

【腾讯云】新注册用户域名抢购1元起>>>   

摘要: docker api

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




  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 397
博文 383
码字总数 483581
评论 (11)
Tufei
非常赞!有没有详细的参数解释,关于创建容器
"AttachStdin":false,
"AttachStdout":true,
"AttachStderr":true,
China_OS

引用来自“Tufei”的评论

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

引用来自“Tufei”的评论

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

引用来自“China_OS”的评论

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

引用来自“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

引用来自“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文件
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 }}, 但这个参数怎么加呢
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 }}, 但这个参数怎么加呢
Aceslup
官方文档我居然找不到API的相关,我真是弱爆了。
China_OS

引用来自“Aceslup”的评论

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

引用来自“Aceslup”的评论

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

引用来自“China_OS”的评论

:cold_sweat:
最后还是找到了:grin:
×
China_OS
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: