2015-11-24 48 views
0

我想一个新的自定义命令添加到泊坞窗API,以及在docker/api/client如何将新的自定义命令添加到docker API?

发现的所有命令我增加了以下新mycomand.go文件到分叉库:

package client  
import (
    "fmt" 
    Cli "github.com/docker/docker/cli" 
    flag "github.com/docker/docker/pkg/mflag" 
)  
func (cli *DockerCli) CmdMycomnd(args ...string) error { 
    cmd := Cli.Subcmd("CmdMycomnd", []string{"CONTAINER"}, Cli.DockerCommands["CmdMycomnd"].Description, true) 
    cmd.Require(flag.Exact, 1)  
    cmd.ParseFlags(args, true)  
    fmt.Println("Hi!")  
    return nil 

}

也更新了docker/cli/commonDockerCommands数据结构包含我的新命令。 然后按照docker doc page上的说明将提交按钮传递给github中的分支。

现在,建立使用make泊坞窗,并试图执行它在bundles/1.10.0-dev/binary/通过命令发现“新”泊坞窗的二进制:

./docker-1.10.0-dev mycomnd [option]

问题:我得到的错误:docker: 'mycomnd' is not a docker command.任何想法如何解决这个问题?

回答

0
  1. 你需要的所有API命令一起添加.go文件目录/api/client该文件的名称应该与您的命令的名称相同。

  2. 在这种.go文件应包含在一个名为Cmd[YourCommandName]

  3. 提交和推送更改到分叉的github分支功能无论你的命令执行。
  4. 让二进制文件

例子:

说你要添加的命令“说话”,让您做到以下几点:

  1. 添加一个名为新的源文件talk.go$ touch talk.go
  2. 添加.go源文件的内容。
  3. 更新上的git枢纽项目:

    • $ git add talk.go注:您的PWD应该/api/client
    • $ git commit -s -m "Making a dry run test."
    • $ git push --set-upstream origin dry-run-test
    • $ <add your github account name + password>
  4. 现在更改目录ŧ o码头主目录和make该项目
  5. 将目录切换到/bundles/1.10.0-dev/binary
  6. 执行:。/ docker-1-10-dev talk
  7. DONE!

我们的新talk命令的内容:

package client 

import (
    "fmt" 
    Cli "github.com/docker/docker/cli" 
    flag "github.com/docker/docker/pkg/mflag" 
) 

func (cli *DockerCli) CmdTalk (args ...string) error { 
    cmd := Cli.Subcmd("talk", []string{"CONTAINER"}, Cli.DockerCommands["talk"].Description, true) 
    cmd.Require(flag.Exact, 0) 
    cmd.ParseFlags(args, true) 
    fmt.Println("Hi") 
    return nil 
} 

屏幕截图 enter image description here

相关问题