docker の闇を見た

docker

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シリーズ

コメント

タイトルとURLをコピーしました