Docker engine API
背景介绍
每次版本升级,都需要手动打镜像,推送仓库,拉取镜像,启动docker。。。需要敲很多的命令,比较繁琐。于是,就开始研究docker engine api,以便之后能够使用接口来替代手敲命令,同时也可升级为可视化的界面,方便部署。
docker版本
1 | Client: |
相关配置
打开docker的配置
vim /usr/lib/systemd/system/docker.service
连接镜像仓库&&配置docker源地址
添加如下参数:
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock –insecure-registry 192.168.0.15:80 –insecure-registry xxx.xxx.xxx.xxx –registry-mirror http://hub-mirror.c.163.com –registry-mirror https://registry.docker-cn.com –registry-mirror https://docker.mirrors.ustc.edu.cn重启docker
systemctl daemon-reload
service docker restart
使用api
你的访问域名就是添加了参数的主机地址
需要注意一点:认证问题
/auth接口,认证的时候”IdentityToken”返回值为空(我尝试过,但是没有成功返回token)
在create image的时候(从仓库拉取镜像到本地),在header中加入X-Registry-Auth参数,下面会详细说明
具体接口说明
Authentication
method:POST
/auth
请求参数:1
2
3
4
5{
"username": "hannibal",
"password": "xxxx",
"serveraddress": "https://index.docker.io/v1/"
}
Images
List images(列出本地所有镜像)
method:GET
/images/json?all=trueCreate an image(从镜像仓库拉取镜像)
method:POST
/images/create?fromImage=镜像名字
Header:1
2
3
4
5
6X-Registry-Auth:下方json对象整体的base64转码
{
"username": "hannibal",
"password": "xxxx",
"serveraddress": "https://index.docker.io/v1/"
}
Remove an image(删除镜像)
method:DELETE
/images/{Image name or ID}Tag an image(给镜像打tag)
method:POST
/images/{Image name or ID}/tagPush an image(推送镜像至仓库)
method:POST
/images/{Image name or ID}/push
Containers
List containers(列出所有容器)
method:GET
/containers/json?all=trueCreate a container(创建容器)
method:POST
/containers/create?name=给容器起的名字
请求参数:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29{
"Env":[
"CLOUD_PORT=4000",
"CLOUD_APP_NAME=cloud"
],
# 启动命令必须按照这样的格式写,不然会报错
"Cmd": ["pm2", "start" ,"app.js" ,"-i", "2"],
"Image": "镜像名称",
"Tag": "latest",
# Volumes+HostConfig中的Binds等同于:-v
"Volumes": {
"/usr/src/app/config/local.js": {},
"/usr/src/logs": {},
"/etc/localtime": {}
},
"HostConfig": {
"Binds": [
"/home/cloud_new/local.js:/usr/src/app/config/local.js",
"/home/cloud_new/logs/:/usr/src/logs",
"/etc/localtime:/etc/localtime:ro"
],
# 等同于:–restart=unless-stopped
"RestartPolicy":{
"Name": "unless-stopped"
},
# 等同于:–net=host
"NetworkMode":"host"
}
}
Remove a container(删除容器)
method:DELETE
/containers/{ID or name of the container}Start a container(启动容器)
method:POST
/containers/{ID or name of the container}/startStop a container(停止容器)
method:POST
/containers/{ID or name of the container}/stopRestart a container(重启容器)
method:POST
/containers/{ID or name of the container}/restartKill a container(停止容器)
method:POST
/containers/{ID or name of the container}/kill
—————-华丽的分割线—————-
若未标明转载,本博客内容均为原创。
版权归作者所有,转载请注明出处。
若有帮助(批评指正),还请留言,您的建议是我不断前进的动力