2016-05-10 5 views
0

私はdocker suspend and resume using criuにSaiedカゼミ者の指示に従い、(ロス・ブーシェからのフィードバックに基づいて)https://github.com/boucher/docker/tree/cr-defunctを使用機能を復元/チェックポイントを取得するために、ソースから1.10.0-devのをBUIDします。ドッカーの復元。行く-dockerclientへの指示の欠如 - FIXED

私は現在、go-dockerclient(github.com/fsouza/go-dockerclient)に依存してコンテナの表示を取得するドッカープロキシ(github.com/edmodo/docker-proxy)を使用しています。

私の質問は、ドッカーデーモンがgo-dockerclientに送信している基本的なトリガーに特有です。コンテナが作成、開始、または停止されると、適切なインジケータが受信されます。

ただし、復元を使用すると、私は見たいと思っていたものを見ていません。おそらく私は完全に復活の仕組みを理解していないでしょう。私は

は、私が最初に実行されているコンテナをチェックポイント起こっていたかを確認するデバッグモードでドッキングウィンドウデーモンを実行したデーモンでa1

docker checkpoint --image-dir=/tmp/ABC --leave_running a1 

、対応するデバッグは

DEBU[0036] Calling POST /v1.22/containers/a1/checkpoint 
DEBU[0036] POST /v1.22/containers/a1/checkpoint   
DEBU[0036] form data {"ImagesDirectory":"/tmp/ABC","LeaveRunning":true,"WorkDirectory":""} 
DEBU[0036] Using CRIU 20000 at: criu      
DEBU[0036] Using CRIU with following args: [swrk 3]  
DEBU[0036] Using CRIU in DUMP mode      
DEBU[0036] CRIU option ImagesDirFd with value 22 
<snip> .... I can paste this as well if needed   
DEBU[0036] CRIU option EmptyNs with value 1073741824 

はその後、私が作成しました新しいコンテナa2

docker create --name=a2 alpine-sshd 
01251691363284,

デーモンで作成するための対応するデバッグログがあった。この時点で

DEBU[0051] Calling POST /v1.22/containers/create   
DEBU[0051] POST /v1.22/containers/create?name=a2   
DEBU[0051] form data:{"AttachStderr":true,"AttachStdin":false,"AttachStdout":true,"Cmd":null,"Domainname":"","Entrypoint":null,"Env":[],"HostConfig":{"Binds":null,"BlkioDeviceReadBps":null,"BlkioDeviceReadIOps":null,"BlkioDeviceWriteBps":null,"BlkioDeviceWriteIOps":null,"BlkioWeight":0,"BlkioWeightDevice":null,"CapAdd":null,"CapDrop":null,"CgroupParent":"","ConsoleSize":[0,0],"ContainerIDFile":"","CpuPeriod":0,"CpuQuota":0,"CpuShares":0,"CpusetCpus":"","CpusetMems":"","Devices":[],"Dns":[],"DnsOptions":[],"DnsSearch":[],"ExtraHosts":null,"GroupAdd":null,"IpcMode":"","Isolation":"","KernelMemory":0,"Links":null,"LogConfig":{"Config":{},"Type":""},"Memory":0,"MemoryReservation":0,"MemorySwap":0,"MemorySwappiness":-1,"NetworkMode":"default","OomKillDisable":false,"OomScoreAdj":0,"PidMode":"","PortBindings":{},"Privileged":false,"PublishAllPorts":false,"ReadonlyRootfs":false,"RestartPolicy":{"MaximumRetryCount":0,"Name":"no"},"SecurityOpt":null,"ShmSize":null,"UTSMode":"","Ulimits":null,"VolumeDriver":"","VolumesFrom":null},"Hostname":"","Image":"alpine-sshd","Labels":{},"OnBuild":null,"OpenStdin":false,"StdinOnce":false,"StopSignal":"SIGTERM","Tty":false,"User":"","Volumes":{},"WorkingDir":""} 
ERRO[0051] Couldn't run auplink before unmount: exec: "auplink": executable file not found in $PATH 
DEBU[0051] container mounted via layerStore: /var/lib/docker/0.0/aufs/mnt/a02ad092a4ae9d0ae40f26a8457fe8379e63a8362444aedb6d41c67d34b2cb83 
ERRO[0051] Couldn't run auplink before unmount: exec: "auplink": executable file not found in $PATH 

a2コンテナが作成されますが、実行されていません。この作成は、コンテナがで作成されたが実行されていないことをdockerclientに知らせる。 docker ps -adocker psは、それぞれ2つ(a1a2)と1(a1)容器を明らかにする。予想通り。その後

、私は、復元のために、対応するデバッグが

docker restore --force=true --image-dir=/tmp/ABC a2 

を使用したチェックポイント画像でa2を復元:

DEBU[0083] Calling POST /v1.22/containers/a2/restore  
DEBU[0083] POST /v1.22/containers/a2/restore?force=1  
DEBU[0083] form data {"ImagesDirectory":"/tmp/ABC","LeaveRunning":false,"WorkDirectory":""} 
DEBU[0083] container mounted via layerStore: /var/lib/docker/0.0/aufs/mnt/a02ad092a4ae9d0ae40f26a8457fe8379e63a8362444aedb6d41c67d34b2cb83 
DEBU[0083] Assigning addresses for endpoint a2's interface on network bridge 
DEBU[0083] RequestAddress(LocalDefault/172.17.0.0/16, <nil>, map[]) 
DEBU[0083] Assigning addresses for endpoint a2's interface on network bridge 
INFO[0083] No non-localhost DNS nameservers are left in resolv.conf. Using default external servers : [nameserver 8.8.8.8 nameserver 8.8.4.4] 
INFO[0083] IPv6 enabled; Adding default IPv6 external servers : [nameserver 2001:4860:4860::8888 nameserver 2001:4860:4860::8844] 
DEBU[0083] Using CRIU 20000 at: criu      
DEBU[0083] Using CRIU with following args: [swrk 3]  
DEBU[0083] Using CRIU in RESTORE mode     
DEBU[0083] CRIU option ImagesDirFd with value 29   
<snip>.... I can paste this if needed 
DEBU[0083] CRIU option EmptyNs with value 1073741824 

これは、コンテナを起動します。しかし、デーモン経由でdockerclientには何も表示されません。どちらの容器も正常に機能します。

これは設計上の兆候ですか?開始されたコンテナのトリガを得ることができる他の方法がありますか?私はそこ

何かすべてのヘルプははるかに高く評価されるをしないのですかどうかを確認するためにゴーdockerclientに深く掘る必要があります。事前に感謝

答えて

0

は、このブランチは、チェックポイントとドッキングウィンドウの最新の作業バージョンを表し復元:https://github.com/boucher/docker/releases/tag/v1.10_2-16-16-experimental

私は「開始」イベントは発生しませんが、と信じている:https://github.com/boucher/docker/tree/cr-defunct

プリコンパイルされたバージョンもあります、 "復元"イベントはデーモンによって起動されるべきです。

+0

私は見ることができるかどうかを見るために、socatに関連するhttp://superuser.com/questions/484671/can-i-monitor-a-local-unix-domain-socket-like-tcpdumpの指示に従います/var/run/docker.sockで正確に何が起きているのかを調べる。恐らく問題はgo-dockerclientで、すべてのインジケータを処理しないことです。 – userVK

+0

OK。私は、これらの指標を検出するために私がdocker-proxyに行った更新を混乱させたことが分かります。 go-dockerclientは完璧に働いています(fsouzaさんに感謝します!)、ドッカープロキシに適切な変更を加えれば、指標を取得できました。私はそれらの行動が取られたときに 'チェックポイント'と '復元'イベントを得ることができます。私はロスの答えを受け入れている。なぜなら、それはまさにそれが起こるだろうと指摘しているし、正しいc/r repoとブランチに指摘しているからだ – userVK

関連する問題