Docker容器创建-从CLI映射
我必须将Docker容器的自动创建从命令行界面(CLI)调用迁移到远程REST API(Docker Engine API)调用,但在查找相应的请求主体参数时遇到问题。我的CLI调用是: docker run-d——名称itestRun-e LANG=en_UK.UTF-8-v /etc/localtime:/etc/localtime:ro-v/share:/share:Z--network=host --add host=APPSERVER:127.0.0.1--add host=localhost.localdomain:127.0.0.1 mytestimage CMDDocker容器创建-从CLI映射,docker,Docker,我必须将Docker容器的自动创建从命令行界面(CLI)调用迁移到远程REST API(Docker Engine API)调用,但在查找相应的请求主体参数时遇到问题。我的CLI调用是: docker run-d——名称itestRun-e LANG=en_UK.UTF-8-v /etc/localtime:/etc/localtime:ro-v/share:/share:Z--network=host --add host=APPSERVER:127.0.0.1--add host=local
我找到了映射(-e->“Env”,mytestimage->“Image”,CMD->“CMD”),但其余参数存在问题。docker CLI还使用API与守护进程通信。找出CLI发出哪些请求的一个简单方法是在调试模式下运行守护程序,这将在守护程序日志中记录API调用 如果不想在调试模式下运行常规守护进程,可以在docker中使用docker。docker Hub()上的官方
docker
图像可用于此目的
例如,查看Docker 1.13.1守护进程的请求
首先,用docker 1.13.1启动一个容器;以交互模式启动容器,并提供sh
作为主命令(这使它更容易)
在容器内部,在前台启动守护进程(dockerd
)
dockerd --debug --iptables=false
您将看到守护进程正在启动
DEBU[0000] Listener created for HTTP on unix (/var/run/docker.sock)
INFO[0000] libcontainerd: new containerd process, pid: 16
DEBU[0000] containerd: read past events count=0
...
...
DEBU[0001] Registering POST, /networks/prune
DEBU[0001] Registering DELETE, /networks/{id:.*}
INFO[0001] API listen on /var/run/docker.sock
守护进程运行后,打开一个新的shell。在该shell中,在刚刚开始使用的容器中打开一个新的sh
会话。上面的示例使用mydocker
作为容器名称,因此命令将是:
docker exec -it my-docker sh
在该容器中,您现在可以运行docker命令,并且为您运行的每个命令进行的API调用将显示在另一个shell中守护进程的输出中
例如,跑步
docker network create foobar
在守护程序日志中显示为
DEBU[0304] Calling GET /_ping
DEBU[0304] Calling POST /v1.26/networks/create
DEBU[0304] form data: {"Attachable":false,"CheckDuplicate":true,"Driver":"bridge","EnableIPv6":false,"IPAM":{"Config":[],"Driver":"default","Options":{}},"Internal":false,"Labels":{},"Name":"foobar","Options":{}}
API调用的主体在表单数据之后打印:
,并且是
{
"Attachable": false,
"CheckDuplicate": true,
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Config": [],
"Driver": "default",
"Options": {}
},
"Internal": false,
"Labels": {},
"Name": "foobar",
"Options": {}
}
{
"Attachable": false,
"CheckDuplicate": true,
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Config": [],
"Driver": "default",
"Options": {}
},
"Internal": false,
"Labels": {},
"Name": "foobar",
"Options": {}
}