My First Lambda

def checkio(data):
return filter(lambda x: 1 < data.count(x), data)

if __name__ == "__main__":
#These "asserts" using only for self-checking and not necessary for auto-testing
assert list(checkio([1, 2, 3, 1, 3])) == [1, 3, 1, 3], "1st example"
assert list(checkio([1, 2, 3, 4, 5])) == [], "2nd example"
assert list(checkio([5, 5, 5, 5, 5])) == [5, 5, 5, 5, 5], "3rd example"
assert list(checkio([10, 9, 10, 10, 9, 8])) == [10, 9, 10, 10, 9], "4th example"

dockerでcommitせずにコンテナを終わらせてしまったとき

dockerを使い始めて間もないので、よくcommitせずにコンテナを終了させてしまいます。次に起動すると、前回の状態が保持されていないのでびっくり。またやり直すのかと思うけど、方法がありました。

$ docker ps -a

でコンテナのIDを特定し、

$ docker commit 1234abcd name_of_image

とすればその時の状態をコミットできます。

dockerのよく使うコマンド

イメージを取り寄せる

$ docker pull ubuntu

イメージの一覧

$ docker images

イメージの起動

$ docker run -it ubuntu bash

ポートを指定して起動
コンテナの8889ポートがホストOSの8888にリダイレクトされる。

$ docker run -it -p 8889:8888 ubuntu bash

コンテナから離れるとき

コンテナのシェル内でCTL-p CTLq

起動しているコンテナの一覧

$ docker ps

過去のものも見るとき

$ docker ps -a

現在の状態を保存する

$ docker commit 1234abcd name_of_image

シェルに戻る

$docker attach 1234abcd

イメージをファイルに保存

docker export 1234abcd > foo.tar

インポート

$ cat foo.tar | docker import - name_of_image

すでに動いているコンテナに接続したいとき(xxxxxxxはコンテナ名)

$ docker exec -it xxxxxxx /bin/bash

クローンしたVMのファイル名を変更する

vmwareVMをクローンすると、.vmdkファイルの名称が変更されてしまう。たとえば、backupVMというVMをクローンすると、

# ls
backupVM_2-ctk.vmdk backupVM.nvram backupVM.vmsd backupVM.vmxf
backupVM_2-flat.vmdk backupVM_2.vmdk backupVM.vmx vmware.log
#

となる。これはスクリプトなどで.vmdkファイルを操作するのに都合が悪いので、元のbackupVM.vmdkのように直したい。これをmvなどしてしまうと構成が壊れて動かなくなるようなので、

# vmkfstools -E backupVM_2.vmdk backupVM.vmdk 

とすると、すべての_2が取れる。

# ls
backupVM-ctk.vmdk backupVM.nvram backupVM.vmsd backupVM.vmxf
backupVM-flat.vmdk backupVM.vmdk backupVM.vmx vmware.log
#

さらに、backupVM.vmxの内容にbackupVM_2が残っているので、これを修正する必要がある。