fluid_27’s blog

勉強した内容をアウトプットするためのブログ

dockerを初めて使ったので、コマンド等まとめてみた

前々からDockerも勉強しないとなぁ。くらいに思っていたが、ついにハッカソンの共同開発でDockerを使う日が来たので、kindle unlimitedをフル活用し、Dockerの本を数冊読んだので、備忘録がてら、あくまでザックリとまとめてみる。

 

 

Dockerについてざっくりと

 

Dockerとは

「コンテナ型のアプリケーション実行環境」で、いわゆる「仮想化技術」の一種。

「コンテナ」と言う単位でOSをマルっと動かしており、カーネルはホストのOSと共有する。

 

Dockerイメージとは

「コンテナ」を作るための雛形が「Dockerイメージ」

 

Dockerfileとは

「 Dockerfile」は「Dockerイメージを作るための元ネタ」。

 

Dockerコンテナを生成する流れ

Dockerfileをビルドすると「Dockerイメージ」が出来上がる。

Dockerイメージを実行すると「コンテナ(Dockerコンテナ)」が生成される。

 

コンテナの状態

コンテナには

  • 実行中
  • 停止
  • 破棄

という3つの形態がある。

 

停止状態から再び起動することはできるが、破棄されたコンテナは復元することができない。

 

 

 

Dockerコマンドまとめ

 

Docker-composeコマンド

$ docker-compose ps

コンテナ一覧表示

up は起動中

exit は停止

 

$ docker-compose up

プロジェクト内の全てのコンテナを起動

 

$ docker-compose down

プロジェクト内の全てのコンテナを停止

 

$ docker-compose exec コンテナ コマンド

対象のコンテナで対象のコマンドを実行する。 

ex)

$ docker-compose exec web bash

とすると中でLinux操作が行えるようになる。

 

 

Dockerコンテナのコマンド

コンテナのコマンドは基本的に

docker container 操作 オプション

という書式。

 

  •  run

Dockerイメージからコンテナを生成するためのコマンド。

構文:docker container run オプション イメージ名:タグ名

 

オプション;

--name

コンテナ名を定義。

 

-i と-t

-i と-tをつけると

「Ctrl+C」のような操作をコンテナが受け付けるようになる。セットで使う必要があり、"it"と書くこともできる。

 

-d

コンテナをバックグラウンドで動かすためのオプション。Webサーバなどの用途でコンテナを動かす場合に使う。

 

-p

ポートフォワードをするためのコマンド。例えば「p9999:8080」とすると、9999ポートのアクセスを8080ポートにフォワードする。

 

  • ls

ローカルPCに保存されているコンテナを一覧表示するためのコマンドです。

ex)

docker container ls

 

  • stop

コンテナを停止するためのコマンド。

構文:docker container stop コンテナ名

 

  • restart

コンテナを再実行するためのコマンド。

構文:docker container restart コンテナ名

  

  • rm

ローカルPCに保存されているコンテナを削除するためのコマンド。

構文:docker container rm コンテナ名

  

  • prune

停止中のコンテナをまとめて削除するためのコマンド

 

 

 

Dockerイメージのコマンド

  • build

Dockerfileから Dockerイメージをビルドするためのコマンド。

 

構文:docker image build -t イメージ名:タグ名 Dockerfileのパス

ex)

docker image build -t helloworld:1.0 .

 

-tオプションはタグを指定するオプション。

最後の . はDockerfileがカレンとフォルダにDockerfileがある。ということ。

 

--pullオプションを使用すると、DockerfileのFROMに指定されているイメージを毎回「Docker Hub」から取得する場合に"true"を明示する。

ex)

docker image build --pull=true -t helloworld:1.0 .

 

  • ls

ローカルPCに保存されている Dockerイメージを一覧表示するためのコマンド。

ex)

docker image ls

 

-aオプションを付与すると、すでに無効状態になっているDockerイメージも表示対象となる。

 

  • pull

Docker Hubで提供されているDockerイメージをダウンロードするためのコマンド。

構文:docker image pull イメージ名:タグ名

 

  • rm

ローカルPCに保存されているDockerイメージを削除するためのコマンド。

構文:docker image rm イメージ名

 

コンフリクトが起きた場合、

-fオプションをつけると、コンフリクトした関連のあるものも全て削除する。

 

  • prune

不要なDockerイメージをまとめて削除するためのコマンド。

 

 

Dockerfileのコマンド 

  • FROM

Dockerイメージのベースとなるイメージを指定。

ここで指定したイメージは「Docker Hub」というホスティングサービスからダウンロードされる。

また、イメージ名に続いて「:タグ」を記述できる。タグを指定しなかった場合、latestという最新版のタグとみなされる。

ex)

FROM ubuntu:14.04

 

  • RUN

Dockerイメージをビルドする際に、「コンテナの中で実行するコマンド」を指定する。

命令の引数には実行するコマンドをそのまま指定する。

ex)

RUN echo 'Hello!!'

 

  •  COPY

ローカルPCのリソースをコンテナにコピーする。

構文:COPY コピーするリソース コピー先のパス

ex)

COPY main.rb /tmp/work/

 

  • CMD

コンテナの実行時に「コンテナ起動時の最初の1回だけ実行するプロセス」を指定。

実際に実行するコマンドを空白で区切って、それぞれ1つを「引数」として[ ]の中に順に記述する。

ex)

CMD ["go", "run", "/hello/main.go"]

上記の場合、go run/hello/main.goとしてコンテナないで実行される。

  

  • EXPOSE

コンテナを外部公開する際のポートを指定する。