Dockerのコンテナを起動するとき、ID指定にpowershellの配列をそのまま渡せるとは、今更ながら。
Windows10 HOMEのpowershellにて、
名前がtest-1,test-2,test-3という3つのコンテナを作成し、停止した状態から起動させてみた。
コンテナの名前で絞り込んで(filter,-f)、quietオプション(-q)を付けてlsでIDを配列に取り込む。
※dockerコマンドのsyntaxは古いかもしれませんのでご注意・・・
PS >docker container ls -a -f name=test-.* CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9bbd5b2256b6 nginx:1.17.6-alpine "nginx -g 'daemon of… " 3 minutes ago Exited (0) 2 minutes ago test-3 34410af55b73 nginx:1.17.6-alpine "nginx -g 'daemon of… " 3 minutes ago Exited (0) 2 minutes ago test-2 d892fccc011b nginx:1.17.6-alpine "nginx -g 'daemon of… " 3 minutes ago Exited (0) 3 minutes ago test-1 PS >$c = docker container ls -a --quiet -f name=test-.* PS >$c 9bbd5b2256b6 34410af55b73 d892fccc011b PS >docker container start $c 9bbd5b2256b6 34410af55b73 d892fccc011b PS >docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9bbd5b2256b6 nginx:1.17.6-alpine "nginx -g 'daemon of… " 5 minutes ago Up 9 seconds 0.0.0.0:8093->80/tcp test-3 34410af55b73 nginx:1.17.6-alpine "nginx -g 'daemon of… " 5 minutes ago Up 8 seconds 0.0.0.0:8092->80/tcp test-2 d892fccc011b nginx:1.17.6-alpine "nginx -g 'daemon of… " 5 minutes ago Up 8 seconds 0.0.0.0:8091->80/tcp test-1 PS >docker container stop $c 9bbd5b2256b6 34410af55b73 d892fccc011b PS >stop-transcript
コンテナを作成したときのスクリプト
$port = 8090 foreach ( $i in 1..3 ){ $port ++ $name = 'test-' + $i $cmd = "docker run -d -it --name $name -p ${port}:80 nginx:1.17.6-alpine" invoke-expression $cmd }
enter-pssesssionで他のPCに入りコンテナを起動して、exec -it でコンテナの中に入ろうとしたが、PSRemotingではコンテナの中には入れなかった。
コンテナの中に入れないのでは、面倒だが外からコマンドを発行するしかない。
docker container start ubun2 $c = docker container ls -q $d = get-date -format 'yyyyMMdd' $f = $d + '.log' docker container exec -d $c bash -c "/home/guest/app2/server.py > /tmp/${f} 2>&1"
dettachの'-d'をつけ忘れたらpowershellの端末を奪われてしまった。
未だに見まねで使っているレベル、要注意。
了