それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

dockerで終了したubuntuプロセスを再開する。(docker start )

docker でubuntuを起動した場合

なお、実験にはdocker のかわりに互換ソフトであるpodman を用いた。

docker / ubuntubashを起動する

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 をしておけば、起動中でも再接続ができるので、覚えるコマンドは減らすことができる。