2015-11-24 46 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

相關問題