メモ
- Ubuntuのイメージを使ってコンテナを起動してみる
- すぐに終了しない方法も確認してみる
イメージのダウンロード~コンテナの実行まで
# Ubuntuイメージのダウンロード
% docker pull ubuntu
# 確認
% docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 72300a873c2c 2 weeks ago 64.2MB
# この時点ではコンテナはまだ無い
% docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
# コンテナとして起動。ただしフォアグラウンドのプロセスが無いため(?)すぐに終了する
# createとstartをするのと同義らしい
# http://docs.docker.jp/engine/reference/commandline/run.html
% docker run 72300a873c2c
# 確認。なにもない
% docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
# すべて表示(-a)すると確認できる
% docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a67c73f36b34 72300a873c2c "/bin/bash" 6 seconds ago Exited (0) 5 seconds ago suspicious_lamport
# `docker start` で以前使っていたコンテナを実行できる
% docker start a67c73f36b34
a67c73f36b34
# すぐ終了するけど STATUS が更新された
% docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a67c73f36b34 72300a873c2c "/bin/bash" 8 minutes ago Exited (0) 2 seconds ago suspicious_lamport
# フォアグラウンドのプロセスが無いとすぐに終了するらしいので、run時にループするコマンドを実行させてみる
% docker run 72300a873c2c /bin/sh -c "while :; do sleep 10; done"
# ターミナルは帰ってこない。別ターミナルで `docker ps` で確認する
# Dockerコンテナが実行中であることを確認できる
[別ターミナル]% docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cfe9f0d0da0d 72300a873c2c "/bin/sh -c 'while :…" 21 seconds ago Up 20 seconds admiring_kilby
イメージの作成(Dockerfile)
動作確認のため、事前にイメージとコンテナを全部消しておく
% docker ps -aq | xargs docker rm; docker images -aq | xargs docker rmi -f
以下動作確認
# Dockerfile を作成
# Ubuntuイメージを使うのを定義するだけ
% cat Dockerfile
FROM ubuntu
# `docker build .` でイメージ作成
% docker build .
...
Successfully built 72300a873c2c
# イメージの確認
# ↑で確認したのと同じ、素のUbuntuイメージが確認できる
% docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 72300a873c2c 2 weeks ago 64.2MB
# 再度イメージとコンテナを削除し、以下のようにDockerfileを定義してみる
# ↑でコンテナがすぐに終了しないようにするコマンド
% cat Dockerfile
FROM ubuntu
CMD while :; do sleep 10; done
# 再度 build
% docker build .
# 今度は素のイメージのダウンロードされたものと、カスタマイズしたイメージが生成されている(noneのやつ)のが分かる
% docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 361af20afb75 6 seconds ago 64.2MB
ubuntu latest 72300a873c2c 2 weeks ago 64.2MB
# カスタムしたイメージを実行してみる
# 実行されたままになってプロンプトが帰ってこないはず
% docker run 361af20afb75
# 別ターミナルで `docker ps` すると実行中のコンテナが確認できる
[別ターミナル]% docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0f063dcd1361 361af20afb75 "/bin/sh -c 'while :…" 22 seconds ago Up 21 seconds reverent_banach
参考
Dockerのコンテナを起動したままにする - Qiita https://qiita.com/reflet/items/dd65f9ffef2a2fcfcf30
なんやかんや公式ドキュメントは詳しい
run — Docker-docs-ja 17.06.Beta ドキュメント http://docs.docker.jp/engine/reference/commandline/run.html