サイトアイコン 協栄情報ブログ

Docker コンテナ自動起動設定


この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

先日にEC2でDockerのインストール手順を紹介いたしましたが、
Dockerコンテナ自動起動について補足説明いたします。

背景

前回の手順書に記載したDockerコンテナ起動コマンドで起動したコンテナがEC2のホストOSが再起動した場合、コンテナが自動的に起動されない問題があります。

参照:Amazon Linux2 でDockerのインストール(ハンズオン)
https://cloud5.jp/amazon-linux2-docker-install/

対策

Dockerコンテナ起動コマンドに"−−restart=always"オプションを指定すれば解決できる。

コマンド比較:

#デフォルト起動
sudo docker run --name myweb -d -p 80:80 -it nginx 
#restartオプション指定
sudo docker run --restart=always --name myweb -d -p 80:80 -it nginx 
説明
no コンテナを自動的に再起動しません(デフォルトです)。
on-failure 終了コードがゼロ以外をエラーとみなし、エラーが発生時にコンテナを再起動します。
always コンテナが停止すると常に再起動します。もしも手動でコンテナを停止した場合、再起動するのはDocker デーモンの再起動時やコンテナ自身を手動で再起動する時です( 再起動ポリシー詳細 の2つめのリストをご覧ください)。
unless-stopped always に似ていますが、コンテナの(手動または他の理由による)停止時は除外します。Docker デーモンを再起動しても再起動しません。

実行結果比較:

#コンテナ起動(restart指定なし)及び確認
sudo docker run --name myweb -d -p 80:80 -it nginx 
sudo docker ps -a
#AwsLinux OSを再起動し、もう一度Dockerのコンテナを確認する
sudo reboot
docker ps -a

#コンテナ起動(restart指定あり)及び確認
#再起動ポリシーを使って、コンテナを自動的に開始する
sudo docker run --restart=always --name myweb -d -p 80:80 -it nginx 
#AwsLinux OSを再起動し、もう一度Dockerのコンテナを確認する
sudo reboot
sudo docker ps -a

モバイルバージョンを終了