名前しか知らなかったDockerを使ってみました。
備忘録です。
Dockerとは
コンテナ型の仮想環境を提供するツール
docker初心者の方が知っておいた方がよい基礎知識
なぜ使うのか
- 従来の仮想環境(ハイパーバイザ型)と比較して軽く、リソース消費が少ないから
- 作成した環境を簡単に配布できるから
用語集
解説はDocker-docs-ja/用語集を参考にしています。
ハイパーバイザ型・コンテナ型の概要も含め、図で見た方が分かりやすいです。
Dockerのすべてが5分でわかるまとめ!(コマンド一覧付き)
Dockerコンテナ
- Dockerイメージを実行するときの実体(runtime instance)
- Dockerイメージを実行(run)するとDockerコンテナが生成される
- OSレベルの仮想化を行う
Dockerイメージ
- Dockerコンテナの元のようなもの
- 環境を作るための設定がひとまとめになっている
Dockerfile
- Dockerイメージを構築するために必要な命令の一覧
- DockerfileをビルドするとDockerイメージが構築される
- テキスト形式のドキュメント
リポジトリ
- Dockerイメージの集合体
レジストリ
- リポジトリを預かるサービス(Docker Hub)
実行
ファイル作成
必要なディレクトリ・ファイルを作成します。
$ mkdir docker_test
$ cd docker_test
$ touch main.php
$ touch Dockerfile
実行ファイル
<?php
echo "Hello! World!\n";
echo phpversion()."\n";
Dockerfile
イメージはphp:7.2-cli
を指定したので、7.2系で最新のバージョンが呼び出されます。
Docker Hub - php
Dockerfile リファレンス
【入門】Dockerfileの基本的な書き方
# イメージを指定
FROM php:7.2-cli
# イメージ上で実行するコマンドを指定
# helloディレクトリを作成
RUN mkdir /hello
# helloディレクトリにmain.phpをコピー
COPY main.php /hello
# 実行コマンド
# php /hello/main.phpを実行
CMD [ "php", "/hello/main.php" ]
ビルド
buildコマンド
でビルドし、新しいイメージを生成します。
tオプション
でリポジトリ名hello-app
と実行場所
を指定します。
タグ名
は指定していないので、デフォルトのlatestが設定されます。
同名のリポジトリが複数存在する場合は、タグをつけて識別します。
イメージのタグ付け、送信、取得
リポジトリ(repository)
タグ
$ docker build -t hello-app .
# 省略
Successfully built b9d2c9893a00
Successfully tagged hello-app:latest
ビルドが成功しました。
起動
runコマンド
で新しくコンテナを起動します。
$ docker run hello-app
Hello! World!
7.2.25
Dockerfileのコマンドが実行されました。
phpのバージョンもFROMで指定したバージョン(7.2系で最新)になっています。
コンテナはイメージIDを指定して起動することもできます。
$ docker run b9d2c9893a00
Hello! World!
7.2.25
imagesコマンド
でイメージの一覧が表示されます。
ここでリポジトリやタグの確認ができます。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-app latest b9d2c9893a00 11 minutes ago 398MB
その他のコマンドはコマンドライン・リファレンスで確認できます。