Dockerイメージのdajobe/hbaseがあり、Ubuntuからビルドされています。この画像のコンテナを作成し、hbという名前を付けました。
$ docker run -d --name hb dajobe/hbase
e1f68ff8b3b6c5e474426e2566f8c087d6a785fc5eeb58cd2aeb86176068651d
次に、hbで/ bin/bashを開始し、viエディターが使用可能かどうかを確認しました。
$ docker exec -it hb /bin/bash
root@e1f68ff8b3b6:/# vi
bash: vi: command not found
次に、apt-getを使用してviエディターをインストールしました
# apt-get install vim
Reading package lists...
DoneBuilding dependency tree
Reading state information... Done
.....
.....
Viエディターが存続できるように、変更をコミットしたかったのです。
$ docker commit hb dajobe/hbase
1be196188efc5a52562dc8ee1b63d0fd560ea163c49331c10dc435848d75ef64
その後、dajobe/hbaseを再度起動すると、自動的に停止しました。
$ docker run -d --name hb dajobe/hbase
c3e7b9f48077ef854efc6f9bab5e85986e265c98de5423bece0000c973206c38
$ docker exec -it hb /bin/bash
FATA[0000] Error response from daemon: Container hb is not running
コンテナが実行されないのはなぜですか?
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c3e7b9f48077 dajobe/hbase:latest "/opt/hbase-server" 11 secs ago Exited (0) 8 secs ago hb
ステータスが「終了」なのはなぜですか?コミットする前はそうではなく、ステータスは「アップ」でした。
ステータスが終了することを期待します。おそらく、使用していた元のイメージには、実行中にコンテナーを実行し続ける何かを実行するENTRYPOINTが含まれていました。あなたはこれを試すことができます:
docker run -d --name hb dajobe/hbase sleep 60
次に、execを試してください。次の60秒間、インタラクティブシェルに接続します。その後、同じメッセージが再び表示されます。
-dは、コンテナをデーモンにします。ただし、何かする必要があります。そうしないと、終了します。 -itを使用して実行ラインを実行してみましたか?
docker run -it --name hb dajobe/hbase bash
そこにもシェルプロンプトが表示され、画像を更新できます。
-g