構成
Dockerを構成するのは、次の2つです。
Docker Engine ・・・コンテナ仮想化技術であり、アプリケーションの構築からコンテナ化に至るワークフローを連結する
Docker Hub ・・・ アプリケーション群を共有・管理するSaaSサービス
Docker Engine
わからん
Docker Compose
Compose とは、複数のコンテナを使う Docker アプリケーションを、定義・実行するツールです。Compose はアプリケーションのサービスの設定に、Compose ファイルを使います。そして、コマンドを1つ実行するだけで、設定した全てのサービスを作成・起動します。
Docker Hub
Docker Hub はクラウド上のレジストリ・サービスであり、アプリケーションやサービス・コンテナの構築と配信を行います。コンテナ化されたイメージを見つけたり、配布したり、変更の管理、ユーザやチームのコラボレーション、開発パイプラインを通したワークフローの自動化といった集約されたリソースを提供します
Docker Machine
Docker Machine は仮想マシン上に Docker Engine をインストールするツールであり、 docker-machine
コマンドを使ってホストを管理します。Mac や Windows 上では、Docker Machine を使うのが Docker を実行する唯一の方法です。
Docker Toolbox
Windows と Mac の両方で利用可能な Docker Toolbox は、Docker クライアント、Machine、Compose、Kitematic をインストールします
Docker Registry(Docker Distribution に統合予定)
レジストリ(Registry)とは、ステートレス(処理状態を把握しない)であり、サーバ・サイドのアプリケーションを大きくスケールさせるため、Docker イメージを保管・提供をします
Docker Swarm
Docker Swarm は Docker に対応するネイティブなクラスタリング用ツールです。Docker Swarm は標準 Docker API で操作できます。そのため、Docker ホスト群を集め、1つの仮想 Docker ホストとして扱えます。既に Docker デーモンと通信可能なツールであれば、Swarm を使うだけで、意識せずに複数のホストにスケール可能になります
◎ Docker のコマンド集 ◎
docker images
ローカル環境に保存されているDockerイメージの一覧を取得する
docker pull ( : <タグ>)
DockerイメージをDocker Hubからダウンロードだけする。
docker rmi
Dockerイメージをローカル環境から削除する
docker ps
実行中のDockerコンテナのみを表示する。-a オプションで停止中のコンテナも表示する。
docker create
Dockerコンテナを作成する(起動はしない)
docker run
Dockerコンテナを作成して起動する。はじめはローカル環境のイメージを探し、無ければDocker Hubに探しに行く。
有名なオプション
- -d // バックグラウンドで起動
- --name <名前> // コンテナを識別するための名前を設定する
- -p <ホスト側ポート>:<コンテナ側ポート> // ポートフォワーディングの設定
- -it // コンテナ内でインタラクティブなbashシェルを作成する
docker start
作成されたDockerコンテナを起動する
docker stop
起動中のDockerコンテナを停止する
docker rm
Dockerコンテナを削除する
docker exec <コマンド>
Dockerコンテナ内でコマンドを実行する
応用編?
docker exec -it bash // Dockerコンテナ内に新しいbashセッションを作成する
docker build (-t <イメージ名>(:<タグ名>))
dockerfileの情報からDockerイメージの作成をする
docker-compose up
docker-compose.yml が置かれているディレクトリで実行する。Dockerコンテナを作成、起動
docker-compose ps
docker-compose によるDockerコンテナの起動状況を確認する?
docker inspect
コンテナ・イメージ・タスクの低レベルのイメージを表示
◎ Dockerfile とは ◎
通常
- 何らかのDockerイメージからコンテナを作成
- コンテナ内でソフトをインストール&環境変数の設定 etc…
トラブル
2の作業をどうやって引継ぐ?どうやって他の開発環境でも同様のものを作り上げる?
アイデア
2の一連の作業をDockerfileという形でコード化してしまおう!
◎ Docker Compose とは ◎
通常
- 1つのサービスにつき、複数のDockerイメージから複数のDockerコンテナを作成
- コンテナ内でポートフォワーディング&ネットワークの設定 etc…
トラブル
2の作業をどうやって引継ぐ?どうやって他の開発環境でも同様のものを作り上げる?
アイデア
2の一連の作業を docker-compose.yml という形でコード化してしまおう!
参考文献
Docker公式リファレンス
さくらのナレッジ Docker入門
おわりに
この記事は1年前に自分向けに書いたDockerの忘備録をqiitaに移植したものです。