Docker触ってみた
この記事良さそうなのでこの記事を元に学習していきたいと思います。
Dockerとは?
コンテナ型仮想化技術
仮想化?
PCやサーバといったマシンにインストールされているOS(ホストOS)の上に、別のマシンを仮想的に立ち上げる事
簡単に言うと「パソコンの中に仮想パソコンを起動する」のが仮想化です。
コンテナ型仮想化。
従来のホスト型仮想化とは異なり、ゲストOSを起動せずにホストOSの上に動作しているDockerエンジンからコンデナと呼ばれるミドルウェアの環境を構築された実行環境を作成し、その中でアプリケーションを実行させる。
これによって従来のホスト型の仮想化よりも圧倒的に軽量に動作するのがコンテナ型仮想化の特徴です。
Docker Engine
Dockerを利用するためのプログラム 常駐プログラムとして動作し、Dockerを利用することができるようになる。
イメージ(Image)
コンテナーを起動するのに必要な設定ファイルをまとめたもの イメージはコンテナの元でありイメージからコンテナを起動する。
Tag
**imageのversion」**のことです。
imageの構造
イメージは以下のような2つの特徴を持っている
1.レイヤー構造になっている
2.一度作成されたイメージは編集不可
イメージはレイヤー構造になっており、一つのミドルウェアをインストールするにつき一つのレイヤーが重なっていくイメージ。
イメージを用意する方法には他人が作ったイメージを取得するか 自分で作るかどちらかの方法が考えられる。
他人の作ったイメージを利用する際は DockerHub からイメージを取得する。
自分で作る場合はDockerfileからイメージを作成する。
FROM イメージ名:タグ名 #どのimageを元にimageを作成するか RUN パッケージ等インストールコマンド #ここに記述したコマンドを実行してミドルウェアをインストールし、imageのレイヤーを重ねる CMD コマンド指定 #コンテナが作成された後で実行するコマンドを指定する
このような感じで定義できる。
一度buildしたimageを、Dockerfileの変更無しに再びbuildする際にはbuild cacheが効いて、以前buildした情報を見に行くようになっているので、RUNにupdateコマンドなどを記述していたとしても普通にbuildし直した場合は、そのコマンドは実行されないことになる点に注意が必要です。
これは結構注意が必要かも。—no-cacheオプションを付与する。
prune
docker system prune -a -f --filter "until=24h"
docker system prune --volumes -f
これで結構消えた。。。
DBがある場合はそれらのデータも消してしまうので注意が必要。
Discussion