前々から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
コンテナを外部公開する際のポートを指定する。