docker でubuntuを起動した場合
なお、実験にはdocker のかわりに互換ソフトであるpodman を用いた。
docker / ubuntu でbashを起動する
docker run -it ubuntu bash
起動例
[root@docker-host ~]# podman run -it ubuntu bash root@4d6a491bb9ab:/# cat /etc/issue Ubuntu 22.04.3 LTS \n \l root@4d6a491bb9ab:/# exit exit [root@docker-host ~]#
docker で ubuntuは起動しているが、bash が終了すると、docker のインスタンスも終了する。
[root@docker-host ~]# podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4d6a491bb9ab docker.io/library/ubuntu:latest bash 9 minutes ago Exited (130) 6 minutes ago zen_cohen
STATUS をみると、exited
になっているのがわかる。
コンテナを再起動
コンテナを再開するには、次のようにすればいい。
docker start $CONTAINER_ID ## bash の場合はだめである。
ただ、これを再開しようにも、bash を使っているので、単にスタートするだけではだめである。
実際に再開(起動)してみるとbashは起動するが、入力ができない。
[root@docker-host ~]# podman start 72f7e5a16a34 72f7e5a16a34 [root@docker-host ~]#
bash の場合は tty (STDIO)を再割り当てしてあげないといけないので、コマンドオプションが必要
## bash の場合はこうする docker start -ia $CONTAINER_ID
実際にやってみると。
[root@docker-host ~]# podman start -ia 72f7e5a16a34 root@72f7e5a16a34:/# root@72f7e5a16a34:/# tty /dev/pts/0 root@72f7e5a16a34:/# exit exit [root@docker-host ~]#
このように、docker コマンドにオプションを付けて起動すると、ターミナル(tty)が接続されて、bashでも再開できるようになる。
attach を使ってもいいのだが。start -ia
をしておけば、起動中でも再接続ができるので、覚えるコマンドは減らすことができる。