この記事は公開されてから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