Docker

【Docker】最初に覚えるコマンド

こんにちは、ユウヤです。

この記事では、僕がDockerを覚えたてほやほやなので備忘録として、Dockerのコマンドについてまとめてます。

大きく、

・イメージ操作をするコマンド
・コンテナを操作するコマンド

の2つに分けています。

そして、最後に実際にいくつかコンテナの作成→起動の仕方を具体的に紹介しています。

ぜひ手を動かしてやってみてください!

Dockerのコマンド

イメージの操作

イメージを取得(pull)

$ docker pull [イメージ名]:[タグ名]

ローカルのイメージの一覧表示(ls)

$ docker image ls

または

$ docker images

イメージ名の変更・タグ付け(tag)

$ docker tag [元イメージ名]:[タグ名] [生成イメージ名]:[タグ名]

タグ名は省略でき、その場合は、”latest”になります。
このコマンドを実行することで、元イメージとは別の生成イメージが作られます。

元のイメージが不要な場合は、削除コマンドを実行すればいいです。

イメージの詳細情報を表示(inspect)

$ docker inspect [イメージ名 or イメージID]

ローカルのイメージを削除(rm or rmi)

$ docker image rm -f [イメージ名 or イメージID]:[タグ名]

または

$ docker rmi -f [イメージ名 or イメージID]:[タグ名]

“-f”は、強制を表すオプションです。

イメージの検索(search)

$ docker search [検索キーワード]

コンテナの操作

コンテナの基本コマンド

生成(create) → 起動(start) → 停止(stop)

生成+起動(run)

削除(rm)

再起動(restart)

中断(pause) → 再開(unpause)

コンテナ操作コマンドに使うオプション

– i

-tとは反対で、ホストの入力をコンテナの標準出力に繋げる。
キーボードの入力がコンテナに送られる。

– t

コンテナの標準出力をホストの標準出力に繋げる。
ttyの略で、tty(端末デバイス)を割り当てる。

– it

標準入出力。

– d

コンテナ内に入らず、バックグラウンドでコンテナを起動させる。
デタッチモードという。
反対をフォアグラウンドモードという。

– p [ホスト側のポート番号]:[コンテナ側のポート番号]

ポートフォワードする。ポートをつなぐ。

<-p 9000:8080の場合>
localhostで9000にアクセスしたら、コンテナ内の8080ポートに接続される。

– v [ホスト側のディレクトリパス]:[コンテナ内のディレクトリパス]

コンテナとホスト間でファイルを共有する。
ホスト側にあるファイルやディレクトリをコンテナ側で使えるようにする。
volume mountの略。

— rm

コンテナ内でのコマンドが終了したらコンテナを削除するコマンド。

コンテナを作成してみよう!

Pythonの実行環境を構築

pythonイメージをpull

$ docker pull python:3.7

コンテナを作成+起動→停止

$ docker run [オプション] –name [指定するコンテナ名] [イメージ名]:[タグ名]

–nameオプションの順番ですが、オプションの後に記述し、指定するイメージ名の前に書く必要があります。

$ docker run -it –name python3.7 python:3.7

Python 3.7.5 (default, Nov 23 2019, 05:59:34) [GCC 8.3.0] on linux
Type “help”, “copyright”, “credits” or “license” for more information.
>>> 

上記のように表示されれば、Pythonが実行できるコンテナが起動されました。

では、コンテナを停止した後は、どうやって再開すればいいのか?

runコマンドを使ってしまうと、再度同じ内容のコンテナが生成されてしまうので、以下のよう行います。

停止状態→起動→コンテナに入る

(僕の場合、コンテナIDが、d4dddc16c6d5です。)

$ docker start d4dddc16c6d5

$ docker attach d4dddc16c6d5

おまけ:start + attachをオプションで1行で可能にする

$ docker start -i d4dddc16c6d5

COMMENT

メールアドレスが公開されることはありません。