100日後にエンジニアになるキミ - 97日目 - 開発環境 - Docker について3

昨日までのはこちら

[100日後にエンジニアになるキミ - 95日目 - 開発環境 - Docker について](https://qiita.com/otupy/items/4569ffc8a1bd90bcd0b9)

[100日後にエンジニアになるキミ - 94日目 - 開発環境 - 仮想化について](https://qiita.com/otupy/items/0b8db399900a5517eb97)

[100日後にエンジニアになるキミ - 91日目 - 運用 - 監視について](https://qiita.com/otupy/items/532d0f78b103d3b39b2d)

[100日後にエンジニアになるキミ - 90日目 - 開発 - CIについて](https://qiita.com/otupy/items/25786feaaa1b1f4d203f)

[100日後にエンジニアになるキミ - 88日目 - データ - データ転送について](https://qiita.com/otupy/items/e720e175c83a84e101c9)

[100日後にエンジニアになるキミ - 86日目 - データベース - Hadoopについて](https://qiita.com/otupy/items/0016a1b9f496627619b6)

[100日後にエンジニアになるキミ - 76日目 - プログラミング - 機械学習について](https://qiita.com/otupy/items/6a4f960ba4df06e27050)

[100日後にエンジニアになるキミ - 70日目 - プログラミング - スクレイピングについて](https://qiita.com/otupy/items/f53e2e7d16adf80b5acf)

[100日後にエンジニアになるキミ - 66日目 - プログラミング - 自然言語処理について](https://qiita.com/otupy/items/5828ac7450c5ba8d6931)

[100日後にエンジニアになるキミ - 63日目 - プログラミング - 確率について1](https://qiita.com/otupy/items/0196897ae4d2134794fa)

[100日後にエンジニアになるキミ - 59日目 - プログラミング - アルゴリズムについて](https://qiita.com/otupy/items/f1a5e81633b868f3b5ed)

[100日後にエンジニアになるキミ - 53日目 - Git - Gitについて](https://qiita.com/otupy/items/0abaad82a7f3fea73f1f)

[100日後にエンジニアになるキミ - 42日目 - クラウド - クラウドサービスについて](https://qiita.com/otupy/items/d1765f1541a104ed6133)

[100日後にエンジニアになるキミ - 36日目 - データベース - データベースについて](https://qiita.com/otupy/items/7af17635d576677606dc)

[100日後にエンジニアになるキミ - 24日目 - Python - Python言語の基礎1](https://qiita.com/otupy/items/6d1e5453f530e07b7aec)

[100日後にエンジニアになるキミ - 18日目 - Javascript - JavaScriptの基礎1](https://qiita.com/otupy/items/2f71d5f9c754b29d9555)

[100日後にエンジニアになるキミ - 14日目 - CSS - CSSの基礎1](https://qiita.com/otupy/items/61a97863f6df14171994)

[100日後にエンジニアになるキミ - 6日目 - HTML - HTMLの基礎1](https://qiita.com/otupy/items/cd2315dcb38671cfded0)

本日も`Docker`の続きです。

## Dockerの用語について

ざっくりとした導入をやりましたが、用語が多いので
おさらいをしておきましょう。

### Dockerfile

Dockerイメージをビルドする方法の手順が含まれるテキストファイルです。
これはバッチスクリプトに似ていて必要なプログラムのインストールや
ファイルのコピーなどが目的環境になるまで続きます。

Dockerfileはアプリケーションの構成と
必要なリソースの詳細を記載します。

### イメージ(Docker Image)

コンテナーを作成するために必要なすべての依存関係と
情報を含むパッケージでDockerfileを介して作成されます。

Dockerイメージはアプリケーションのスナップショットであり
すべての依存関係 (フレームワークなど) に加えて
コンテナーランタイムによって使用される全ての実行構成が含まれています。

イメージは`Docker Hub`などで共有することができ
Dockerイメージの取得は`docker pull`コマンドで行います。

取得したイメージの確認は`docker images`コマンドで行います。

### ビルド

Dockerfileの情報に基づいてイメージを作成します。
`docker build`コマンドでビルドを行います。

docker buildコマンドではDockerfileを元にしたコンテナーの起動構成
Dockerイメージの作成までを実行します。

### Run

`docker run`コマンドはイメージを利用して
コンテナを起動状態で作成します。

### コンテナ(Docker Container)

Dockerイメージのインスタンスです。

コンテナーは、単一のアプリケーション、プロセス、またはサービスの実行を表します。 
Dockerイメージのコンテンツ、実行環境、および標準的な命令セットで構成されます。 

サービスを拡張する場合は、同じイメージから複数のインスタンスを作成したり
バッチジョブで同じイメージから複数のコンテナーを作成し
各インスタンスにそれぞれ異なるパラメーターを渡したりします。

コンテナの起動は`docker start`コマンドで行います。
起動は`docker ps -a`で確認ができます。
コンテナの停止は`docker stop`コマンドで行うことができます。

### Create

コンテナを停止状態で作成するには`docker create`を使用します。




### タグ

イメージにはタグ付することができます。
タグ付は`docker tag`コマンドで行います。

### Docker Engine

Dockerイメージ作成やコンテナ起動などを行うDockerのコアコンポーネントです。
Dockerの核となる機能部分です。

### コンポーネント

DockerではDocker Engineを中心に複数のコンポーネント単位で機能が開発されています。
必要に応じて複数のコンポーネントを組み合わせて使用します。

### Docker Compose

複数コンテナを一元管理するコンポーネントのことです。

### レジストリ(Docker Registry)

Dockerイメージを公開・共有するコンポーネントのことです。

ほとんどのパブリックイメージの既定のレジストリは`Docker Hub`です
企業では自社用のイメージを管理するためのプライベートレジストリを持っています。 

## Dockerコマンド

Dockerでのコマンドのまとめです。

### イメージのダウンロード

`docker pull [オプション] イメージ名[:タグ名]`

### イメージの一覧表示

`docker images [オプション名] [リポジトリ名]`

### イメージの詳細確認

`docker inspect [オプション] コンテナ識別子またはイメージ識別子 [コンテナ識別子またはイメージ識別`

### イメージのタグ設定

`docker tag イメージ名:[タグ名] ユーザー名/イメージ名:[タグ名]`

### イメージの検索

`docker search [オプション] 検索キーワード`

### イメージの削除

`docker rmi [オプション] イメージ名 [イメージ名]`

### Docker Hubへのログイン

`docker login [オプション] [サーバ名]`

### イメージのアップロード

`docker push イメージ名[:タグ名]`

### Docker Hubからのログアウト

`docker logout [サーバ名]`

### コンテナの生成/起動

`docker run [オプション] イメージ名[:タグ名] [引数]`

### コンテナのバックグラウンド実行

`docker run [オプション] イメージ名[:タグ名] [引数]`

### コンテナのネットワーク設定

`docker run [オプション] イメージ名[:タグ名] [引数]`

### リソースを指定してコンテナを生成/実行

`docker run [リソースオプション] イメージ名[:タグ名] [引数]`

### コンテナを生成/起動する環境を指定

`docker run [環境設定オプション] イメージ名[:タグ名] [引数]`

### 稼働コンテナの一覧表示

`docker ps [オプション]`

### コンテナの稼働確認

`docker stats [コンテナ識別子]`

### コンテナの起動

`docker start [オプション] コンテナ識別子 [コンテナ識別子]`

### コンテナの停止

`docker stop [オプション] コンテナ識別子 [コンテナ識別子]`

### コンテナの再起動

`docker restart [オプション] コンテナ識別子 [コンテナ識別子]`

### コンテナの削除

`docker rm [オプション] コンテナ識別子 [コンテナ識別子]`

### コンテナの中断/再開

`docker pause コンテナ識別子 [コンテナ識別子]`

### 稼働コンテナへの接続

`docker attach コンテナ識別子`

### 稼働コンテナでプロセス実行

`docker exec [オプション] コンテナ識別子 実行するコマンド [引数]`

### 稼働コンテナのプロセス確認

`docker top コンテナ識別子`

### 稼働コンテナのポート転送確認

`docker port コンテナ識別子`

### コンテナの名前変更

`docker rename コンテナ識別子 コンテナ識別子`

### コンテナ内のファイルをコピー

`docker cp コンテナ識別子:コンテナ内のファイルパス ホストのディレクトリパス`
`docker cp ホストのファイル コンテナ識別子:コンテナ内のファイルパス`

### コンテナ操作の差分確認

`docker diff コンテナ識別子`

### Dockerのバージョン確認

`docker version`

### Dockerの実行環境確認

`docker info`

### コンテナからイメージ作成

`docker commit [オプション] コンテナ識別子 [イメージ名[:タグ名]]`

### コンテナをtarファイル出力

`docker export コンテナ識別子`

### tarファイルからイメージ作成

`docker import ファイルまたはURL - [イメージ名[:タグ名]]`

### イメージの保存

`docker save [オプション] 保存ファイル名 [イメージ名]`

### イメージの読み込み

`docker load [オプション]`

### DockerfileからDockerイメージの作成

`docker build -t [生成するイメージ名]:[タグ名] [Dockerfileの場所]`

忘備録的に書いたので間違ってたらすいません。

## まとめ

Dockerではかなりやれること、用語も多いので
何がなんなのかを把握しておくと良いと思います。

そのためのコマンドもたくさん有るので
すこしづつ使っていきながら覚えていきましょう。


君がエンジニアになるまであと03日

## 作者の情報
乙pyのHP：
http://www.otupy.net/

Youtube：
https://www.youtube.com/channel/UCaT7xpeq8n1G_HcJKKSOXMw

Twitter：
https://twitter.com/otupython