docker ってときどき、よくわからない動きしませんか?
そんな1例を紹介します。
ある日、なんとなく ubuntu のコンテナ内で作業したいと思ったんです。
ubuntu の docker イメージを取得しました
% docker image pull ubuntu
取得したイメージから hoge という名前のコンテナを作成します
% docker container create --name hoge ubuntu
さて、そのコンテナに入りますか
% docker container exec -it hoge bash Error response from daemon: Container is not running
コンテナが起動していない!と怒られたので起動してみます
% docker container hoge hoge
起動したっぽいのでチェックしてみると
% docker container ls -a CONTAINER ID IMAGE STATUS NAMES 6affd2ab8aac ubuntu Exited (0) 5 seconds ago hoge
起動してねえじゃん!!!!!なんで!?
bashで入れねえじゃん!!!
詰みました。このあといくらやってもダメです。
解決のヒント
以下に書かれていますが、run -it を使わないとダメみたいです。
よくわかりません。
【Docker】docker startをしてもコンテナの状態がExitedになる
https://www.mtioutput.com/entry/docker-run-start
解決策
以下でコンテナを作成します
% docker container run --name hoge -itd ubuntu
以下でコンテナのシェルに入ります
% docker exec -it hoge bash
以降は、コンテナを stop したり start が自由にできます。
start しても、起動しないということもありません。
ほんと、どういうメカニズムなのか不思議ですが、このようにするしかありません。
その他記事
dockerのコマンド run/create/startの違いについて – 2019/11/26
https://teratail.com/questions/225476
根本的な解決には繋がりませんでしたが、こうなってしまうのを避ける道はありました。
docker run
を用いれば起動状態でコンテナ作成されますので
そうすれば一度抜けた後も特に問題なく入ることができました。……よくわかりません。
Dockerのコンテナが立ち上がらない – stack overflow
https://ja.stackoverflow.com/questions/59431/docker%E3%81%AE%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E3%81%8C%E7%AB%8B%E3%81%A1%E4%B8%8A%E3%81%8C%E3%82%89%E3%81%AA%E3%81%84
docker の学習でオススメの本
プログラマのためのDocker教科書 第2版
Docker実践ガイド 第2版 impress top gearシリーズ
コメント