LoginSignup
3
2

More than 3 years have passed since last update.

初心者向け、Dockerコマンドメモ

Last updated at Posted at 2020-06-13

インターン先でdockerが必要となり、勉強し始めて2週間の学生が、dockerを扱う上で基本的なコマンドを、備忘録としてまとめました。

dockerについては説明していないので、dockerの基本は理解できているが、あのコマンドなんだっけ??となった時に、見れるようにしました。

間違いなどがある場合には、コメントでご指摘して下さると、ありがたいです🙇‍♂️

dockerについて全然知らないという方向けに、おすすめの教材のURLも貼っておきます。有料ですが、圧倒的に分かりやすく、非常にdockerの理解に役立ちました。基本的には上のudemy講座がおすすめですが、超初心者だと、まずは下の漫画からの方が入りやすいかなと思います。

準備

dockerhub にログインしたい

docker login 

imageを〇〇したい

imageを、dockerhubからホストにpullしたい

docker pull <image>

imageの一覧(ホストにある)を表示したい

docker images

image名を変更したい

docker tag <now image> <new image>
docker tag <username>/<repository>:<tag> <username>/<repository>:<tag>
  • 詳細は、<hostname>:<port>/<username>/<repository>:<tag> だが、指定しないとデフォルトでは、<hostname>:<port>はDockerhubのもの、<username>はlibrary、はlatestとなる。

imageをdockerhubにpushしたい

docker push <image>

imageを削除したい

docker rmi <image>

imageを、コンテナから作成したい

docker commit <container> <image>
docker commit <container> <repository:tag>

コンテナを〇〇したい

コンテナを作成 & プログラムを実行したい

docker run -it <image>

# example1
docker run -it hello-world

# example2
docker run -it ubuntu bash

# detachedモード
# backgroundで動かす用
docker run -it -d ubuntu bash

# foregroundモード
# 使い捨て用
docker run -it --rm ubuntu bash
  • <image>がホスト上にない時は、dockerhubからimageをpullしてきてくれる。
  • docker run = docker create(コンテナを作成する。) + docker start -a(デフォルトのコマンドを実行する。)
  • -it: bash起動時等に必要なおまじない
  • bash: コンテナ起動時に実行するプログラム。ここではbashというプログラムを実行させている。
  • --name <name>: コンテナの名前を指定するためのオプション。

コンテナの一覧を表示したい

# Activeなコンテナの一覧を表示したい
docker ps

# 全てのコンテナの一覧を表示したい
docker ps -a

コンテナを削除したい

# 停止中のコンテナを削除
docker rm <container>

# 起動しているコンテナを削除
docker stop <container>
docker rm <container>

# 停止中のコンテナを全て削除
docker system prune
  • 起動中(statusがUp)のコンテナは削除するために、先に停止させる必要があります。

コンテナに入りたい

# statusがUpのコンテナに入る。
# 既に動いているプロセスが走る。
docker attach <container>

# statusがUpのコンテナに入る。
# 2個目のプロセスが走る。
docker exec -it <container> bash

# statusがExitedのコンテナに入る。
# 既に動いているプロセスが走る。
docker restart <container>
docker attach <container>

# statusがExitedのコンテナに入る。
# 2個目のプロセスが走る。
docker restart <container>
docker exec -it <container> bash
  • docker exec -it <container> bashを起動中のコンテナ(既に、1個目のプロセスが動いている)に対して行うと、2個目のプロセスが走ることになる。その後、exitでコンテナを抜けても(2個目のプロセスを切っても)、まだ1個目のプロセスは動いている。

  • 「なんで、exitでコンテナから抜けたのに、まだstatusがupのままなの??」と感じたら、上のような原因が考えられる。

コンテナから出たい

# コンテナを動かしているプロセスを切って、出る。
exit

# detach
# コンテナを動かしているプロセスを残したまま、出る。
control p + q
  • exitで出ると、コンテナの status は、Exited になる。(プロセスは終了する。)
  • detachで出ると、コンテナの status は、Up のまま。(プロセスは起動したまま。)

コンテナを再起動させたい

docker restart <container>
  • <container> は、再起動させたいコンテナのID、または、コンテナの名前を指定する。
  • コンテナの status は、Exited から、 Up になる。

コンテナにプログラムを実行させたい

docker exec -it <container> bash
  • <container> は、実行させたいコンテナのID or 名前を指定する。
  • -it: bash起動時等に必要なおまじない
  • bash: コンテナ起動時に実行するプログラム。ここではbashというプログラムを実行させている。

コンテナに入れない😭

コンテナに入るところで、つまづいたポイントです。コンテナ入れなくてめちゃくちゃ困り果てたので、同じことが起こった人は参考にしてみて下さい。

コンテナのstatusがUpにならない😭

Exited状態のコマンドに対して、docker start docker restartをしても、statusがUpにならない問題。

これはおまじない-itをつけ忘れて、runをしている可能性があります。もう一度、docker run -it <image>でimageからコンテナを作成してみてください。

自分も、おまじない-itをなめて、つけないでいると、コンテナにどう頑張っても入れず痛い目を喰らいました。おまじないを忘れないように。

docker exec -it <container> bashを実行しても、Error response from deamon: Container ランダムな値 is not runningエラーが発生する😭

コンテナのStatusがExited(停止中)になっている可能性があります。StatusがUpになっているかを確認して下さい。StatusがExitedになっている場合は、docker restart <container>でコンテナを起動させる必要がある。

おまじない -it ってなんやねん😡

  • -i: これをつける事で初めて、ターミナルで打ったコマンドを、コンテナ側が認識してくれます。例えば、-iを抜いてコンテナを立ち上げた時に、ターミナルでls pwd cd等を打っても反応が一切ありません。

  • -t: これをつける事で初めて、コンテナからの出力の表示が綺麗になったり、タブ補完が効くようになります。例えば、-tを抜いてコンテナを立ち上げた時に、出力の表示が汚かったり、タブ補完が効きません。

試しに、以下のコマンドでの挙動の違いを見てみると勉強になります。

docker run -it ubuntu bash  
docker run -t ubuntu bash  
docker run -i ubuntu bash  
docker run ubuntu bash  

最後に

dockerは難しいですが、非常に便利なので、早く慣れたいと思います。

勉強し始めてまだ2週間で、いろいろツッコミがあると思います。コメントでご指摘して下さると、ありがたいです🙇‍♂️

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2