2017-02-10 11 views
1

Docker Swarm環境でCDを適用するために、コードリポジトリの変更とRedisメッセージをリッスンするGOアプリケーションがあります。そのアプリケーションは、github.com/docker/docker v1.13.1クライアントコードを使用するように最近更新されました。 Docker v1.13.1を実行している私のMacで動作しました。 UbuntuとDocker v1.12.6を実行している開発サーバーにこのコードをデプロイすると、cli.ServiceUpdate(..)を呼び出す際に「EOF」エラーが発生します。私の知る限り、CLIクライアントは下位互換性があります(v1.10.xなど)。コードとスクリーンショットを見ると、2つの間の接続は「サービスの更新中にエラーが発生しました」というログメッセージです。Docker Service Update Error:EOF

イベントは、我々はgolangライブラリのv1.13.1のバージョンを使用している、我々は我々のクライアントの初期化にAPIバージョンv1.24を指定考えた:

func createClient() { 
    if cli == nil { 
     defaultHeaders := map[string]string{"User-Agent": "engine-api-cli-1.0"} 
     var err error 
     cli, err = client.NewClient("unix:///var/run/docker.sock", "v1.24", nil, defaultHeaders) 
     if err != nil { 
      panic(err) 
     } 
    } 
} 

ここで問題のあるコードです:

func updateService(s configuration.Service, version string) { 
    createClient() 

    ctx := context.Background() 

    service, _, err := cli.ServiceInspectWithRaw(ctx, configuration.ServiceName(s)) 
    if err != nil { 
     fmt.Println("could not find service", err) 
     return 
    } 

    serviceSpec := createServiceSpec(s, version) 

    encodedRegistryAuth := createEncodedRegistryAuth() 
    var resp types.ServiceUpdateResponse 
    resp, err = cli.ServiceUpdate(ctx, service.ID, service.Version, serviceSpec, types.ServiceUpdateOptions{EncodedRegistryAuth: encodedRegistryAuth}) 
    if err != nil { 
     fmt.Println("An error occurred while updating a service: ", s.Service, "; ", err) 
    } else { 
     message := "SERVICE UPDATE - " + s.Service + "_" + s.Channel + " >> " + envName + ":" + s.Service + ":" + version 
     connections.SlackMessage(message) 
     connections.NewRelicDeploy(version, message) 
     connections.GrafanaDeploy(version, message) 
     fmt.Println("Updated service", s.Service, "and waiting", s.UpdateDelay) 
     fmt.Println("Warnings from service update", resp.Warnings) 
    } 
} 
ここ

はsyslogに何が起こったかの画面のグラブです:

Docker Syslog

ここ

ですdocker infoからの出力:私が間違っていることができるもので

Client: 
Version:  1.12.6 
API version: 1.24 
Go version: go1.6.4 
Git commit: 78d1802 
Built:  Tue Jan 10 20:40:44 2017 
OS/Arch:  linux/amd64 
Experimental: true 

Server: 
Version:  1.12.6 
API version: 1.24 
Go version: go1.6.4 
Git commit: 78d1802 
Built:  Tue Jan 10 20:40:44 2017 
OS/Arch:  linux/amd64 
Experimental: true 

任意のアイデア?

答えて

0

どこかで流行になった。ドッカーデーモンを停止し、/ var/lib/dockerを削除し、デーモンのバックアップを開始することで、swarmを再構築しました。その後、エラーは発生しなくなりました。

関連する問題