Docker容器创建-从CLI映射

Docker容器创建-从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

我必须将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 CMD


我找到了映射(-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": {}
}