memo.log

技術情報の雑なメモ

【Dockerメモ①】コンテナ作成、起動、停止、ログインをコマンドで順を追って確認していく

よくそもそもの使い方を忘れるのでコマンドで順を追って確認するようにするメモ

確認すること

  • コンテナはイメージから作成できる
  • コンテナは起動と停止ができる
  • コンテナにログインするためには起動していないといけない
  • コンテナに保存したデータは、コンテナを停止しただけでは消えない。コンテナを削除すると消える

扱うコマンド

# 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