私は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 -a
とdocker ps
は、それぞれ2つ(a1
とa2
)と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に深く掘る必要があります。事前に感謝
私は見ることができるかどうかを見るために、socatに関連するhttp://superuser.com/questions/484671/can-i-monitor-a-local-unix-domain-socket-like-tcpdumpの指示に従います/var/run/docker.sockで正確に何が起きているのかを調べる。恐らく問題はgo-dockerclientで、すべてのインジケータを処理しないことです。 – userVK
OK。私は、これらの指標を検出するために私がdocker-proxyに行った更新を混乱させたことが分かります。 go-dockerclientは完璧に働いています(fsouzaさんに感謝します!)、ドッカープロキシに適切な変更を加えれば、指標を取得できました。私はそれらの行動が取られたときに 'チェックポイント'と '復元'イベントを得ることができます。私はロスの答えを受け入れている。なぜなら、それはまさにそれが起こるだろうと指摘しているし、正しいc/r repoとブランチに指摘しているからだ – userVK