よくそもそもの使い方を忘れるのでコマンドで順を追って確認するようにするメモ
確認すること
- コンテナはイメージから作成できる
- コンテナは起動と停止ができる
- コンテナにログインするためには起動していないといけない
- コンテナに保存したデータは、コンテナを停止しただけでは消えない。コンテナを削除すると消える
扱うコマンド
# Docker イメージの一覧 docker images # イメージの作成 docker build -t [作成するイメージ名] [Dockerfileのあるディレクトリ] # コンテナの作成(起動はしない) docker create --name [コンテナ名] [イメージID] # 起動しているDockerコンテナの一覧 docker ps # 存在するコンテナの一覧 docker ps -a # コンテナの作成&起動&ログイン docker run --name [コンテナ名] -it [イメージ名] [コマンド] # コンテナの起動 docker start [コンテナID] # コンテナの停止 docker stop [コンテナID] # 起動中のコンテナにログイン docker exec -it [コンテナID] [コマンド]
コマンドで確認
※ alias d="docker"
初期状態
コンテナ&イメージは無い
% docker images
REPOSITORY TAG IMAGE ID CREATED SIZ
% docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Dockerfile(とりまRubyのイメージを使うよってだけ)
% cat Dockerfile
FROM ruby:2.7
イメージの作成
# イメージの作成 % docker build -t my-image-ruby ./ # 確認 % d images REPOSITORY TAG IMAGE ID CREATED SIZE my-image-ruby latest cd155aa807df 2 weeks ago 842MB ruby 2.7 cd155aa807df 2 weeks ago 842MB
コンテナの作成
# コンテナの作成 % d create --name my-ruby-container -it cd155aa807df 42463b9c2f4939c39169fee3774e9da1b84663963df543958dc116f6d5134c79 # 起動はしていない % d ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES % d ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 42463b9c2f49 cd155aa807df "irb" 6 minutes ago Created my-ruby-container
コンテナの起動
# ただし、すぐに終了する ## 同じstartでもコンテナが違うと停止しない % docker start 42463b9c2f49 42463b9c2f49
コンテナへの接続
% d exec -i -t 42463b9c2f49 bash root@42463b9c2f49:/# hogehoge
コンテナの作成~起動~接続まで一発で
% d run --name my-ruby-container -it my-image-ruby bash
その他検証メモ(run や create するときのオプションについて)
今回のDockerイメージだと、コンテナの作成方法によっては、コンテナを起動してもすぐに落ちてしまうこともあるみたいなので作成時にオプションを気を使う必要があるみたい。あまり深入りはしていない。
run の場合
■start できる(-it または -t -dが必要) docker run --name my-ruy-container2 -it my-image-ruby /bin/bash → 起動するとコンソールに入る。exitするとコンテナが停止する。 docker run --name my-ruy-container -t -d my-image-ruby /bin/bash → 起動するとコンソールには入らないが、起動したままになる。stop/start できる ■start できない docker run --name my-ruy-container my-image-ruby /bin/bash → startしてもすぐ落ちる docker run --name my-ruy-container3 -d my-image-ruby /bin/bash → startしてもすぐ落ちる docker run --name my-ruy-container -t my-image-ruby /bin/bash → 起動して、コンソールに入った感じになるけど、コマンドが返ってこない。。シェルから抜けられない。 docker run --name my-ruy-container2 -i my-image-ruby /bin/bash →コマンドが返ってこなくなる。。起動したかどうかも分からない。)
craete の場合
% d create --name my-ruby-container3 cd155aa807df bash →作成できる、起動できない(すぐ落ちる) % d create --name my-ruby-container3 -it cd155aa807df bash →作成できる、起動できる % d create --name my-ruby-container3 -t cd155aa807df bash →作成できる、起動できる
参考
create — Docker-docs-ja 17.06 ドキュメント http://docs.docker.jp/v17.06/engine/reference/commandline/create.html
start — Docker-docs-ja 17.06 ドキュメント https://docs.docker.jp/engine/reference/commandline/start.html
Docker run リファレンス — Docker-docs-ja 17.06 ドキュメント https://docs.docker.jp/engine/reference/run.html
Dockerコマンド よく使うやつ - Qiita https://qiita.com/Esfahan/items/52141a2ad741933d7d4c#%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E3%81%AB%E5%85%A5%E3%82%8B
Dockerコンテナの作成、起動〜停止まで - Qiita https://qiita.com/kooohei/items/0e788a2ce8c30f9dba53#4%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E3%81%AE%E8%B5%B7%E5%8B%95