初心者のための Docker チュートリアル: 基本、 Archi構造、コンテナ
⚡ スマートサマリー
Dockerは、アプリケーションとその依存関係をポータブルで軽量なコンテナにパッケージ化するコンテナ化プラットフォームです。この概要では、Dockerのアーキテクチャ、インストールについて説明します。 Ubuntuコンテナの基本コマンド、そしてソフトウェア配信の高速化のためにコンテナが従来の仮想マシンとどのように異なるかについて説明します。

Dockerは、現代のコンテナ化プラットフォームの中で最も人気のあるものの1つです。 DevOps クラウドワークフロー。この初心者向けDockerチュートリアルでは、Dockerとは何か、Dockerアーキテクチャの仕組み、Dockerのインストール方法について説明します。 Ubuntuイメージやコンテナを管理するために使用される基本的なコマンド。
ドッカーとは何ですか?
デッカー Dockerは、複数のオペレーティングシステムを同一ホスト上で実行できる仮想化ソフトウェア開発プラットフォームです。インフラストラクチャとアプリケーションを分離することで、ソフトウェアを迅速に提供できます。仮想マシン(VM)を作成するために使用されるハイパーバイザーとは異なり、DockerはDockerコンテナと呼ばれる単位を使用してシステムレベルで仮想化を実行します。
下の図に示すように、Dockerコンテナはホストオペレーティングシステム上で動作します。これにより、効率性とセキュリティの両方が向上します。また、コンテナは仮想マシンよりも少ないリソースしか使用しないため、同じインフラストラクチャ上で仮想マシンよりも多くのコンテナを実行できます。

ホストハードウェアと直接通信できる仮想マシン(たとえば、仮想アダプタを増やすイーサネットアダプタ)とは異なり、DockerコンテナはホストOS上で隔離された環境で実行されます。ホストが Windows走れます Linux コンテナ内の画像 Hyper-Vこれは、ベースイメージを仮想化するための小さな仮想マシンを自動的に作成します。
Dockerとは何かをご理解いただけたところで、チームがDockerを選択する主な理由を見ていきましょう。
Docker を使用する理由
Dockerを使用する主な理由は以下のとおりです。
- Dockerは仮想化に使用されるソフトウェアであり、複数の仮想化を可能にする。 OS 同じホスト上で実行する。
- Dockerはクライアント/サーバー型アプリケーションであり、クライアントがサーバーと通信することを意味します。
- Dockerイメージはコンテナの「ソースコード」として機能し、それを使って構築します。
- Dockerは、パブリックレジストリとプライベートレジストリの2種類のレジストリをサポートしています。
- コンテナはDockerにおける組織単位です。簡単に言うと、イメージはテンプレートであり、コンテナはそのテンプレートのコピーです。そのため、同じイメージから複数のコンテナを実行できます。
これらの利点は、Dockerの設計方法に由来するものです。次のセクションでは、Dockerのアーキテクチャとその主要コンポーネントについて詳しく説明します。
デッカー Archi構造
さて、このDockerコンテナチュートリアルでは、Dockerアーキテクチャの主要コンポーネントを見ていきましょう。
ドッカーエンジン
Dockerはクライアント/サーバーアプリケーションであり、クライアントがサーバーにリクエストを中継します。dockerdと呼ばれるDockerデーモンは、サーバーを表すDockerエンジンです。デーモンとクライアントは同じホストまたはリモートホスト上で実行でき、コマンドラインクライアントバイナリと完全なプロトコルを介して通信します。 RESTful API dockerdと連携する。
Dockerイメージ
Dockerイメージは、コンテナの「ソースコード」であり、コンテナを構築するために使用します。イメージにはソフトウェアをプリインストールできるため、デプロイを迅速化できます。また、移植性が高く、既存のイメージを使用することも、独自のイメージを構築することも可能です。
Docker レジストリ
Docker は、作成したイメージをレジストリに保存します。レジストリには公開レジストリとプライベートレジストリがあります。Docker には、 Dockerハブプライベートなイメージ保存も可能です。Docker Hubには、すぐに使い始められるイメージが何百万とあります。
ドッカーコンテナ
コンテナはDockerの構成要素であり、基本的な概念の一つです。イメージをビルドして実行すると、コンテナ内で実行されます。コンテナという比喩が用いられるのは、内部で実行されるソフトウェアの移植性の高さによるものです。貨物船が実際のコンテナを扱うように、コンテナを移動、出荷、変更、管理、作成、破棄することができます。
簡単に言えば、イメージはテンプレートであり、コンテナーはそのテンプレートのコピーです。 同じイメージの複数のコンテナ (コピー) を持つことができます。
これらの異なるコンポーネント間の相互作用は、Dockerコンテナ技術がどのように連携して動作するかを示しています。後述するdocker pullやdocker runといったコマンドを使用することで、このワークフローを管理できます。
アーキテクチャを念頭に置いて、これらのコンポーネントを実際に試せるようにDockerをインストールしましょう。
Linux/にDockerをインストールする方法Ubuntu
以下は、Linux/Linux上でのDockerのインストール手順です。Ubuntu:
ステップ1) Dockerをインストールするには、DockerチームのDEBパッケージが必要です。まず、いくつかの前提条件があります。 Ubuntu パッケージが必要です。以下のコマンドを使用してインストールしてください。
$ sudo apt-get install \ apt-transport-https \ ca-certificates curl \ software-properties-common
※記号「\」は改行に使用するため必須ではありません。必要に応じて、XNUMX行だけで「\」を使用せずにコマンドを記述できます。
ステップ2) 公式のDocker GPGキーとフィンガープリントを追加してください。GPGキーを入力するには、以下のDockerコマンドを使用してください。
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
ステップ3) 次に、以下のコマンドを使用してDocker APTリポジトリを追加します。
$ sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"
リポジトリを追加し、GPG キーをホストに自動的に追加するかどうかを確認するよう求められる場合があります。lsb_release コマンドは、 Ubuntu ホストの配布バージョン。
ステップ4) GPGキーを追加した後、以下のDockerコマンドを使用してAPTソースを更新してください。
$ sudo apt-get update
これでDockerパッケージ自体をインストールできます。
ステップ5) APTソースが更新されたら、Dockerパッケージのインストールを開始します。 Ubuntu 以下のDockerコマンドを使用します。
$ sudo apt-get install docker-ce
上記のコマンドは、Dockerおよびその他の必要なパッケージをインストールします。Docker 1.8.0より前のバージョンではパッケージ名はlxc-docker、Docker 1.8から1.13まではパッケージ名はdocker-engineでした。
注: Docker Windows 必要 Windows 10 Pro または Enterprise バージョン 14393、または Windows 実行するには、Server 2016 RTMが必要です。
基本的な Docker コマンドを使用して Docker を使用する方法
ここでは、いくつかの基本的なDockerコマンドを使ってDockerを使用する方法を説明します。
前述したように、Dockerをインストールした後に実行すべき最も基本的なコマンドはdocker infoです。
$ sudo docker info
以下のような結果が得られるはずです。
上記のDockerの例で示したように、Dockerコンテナに関する情報(実行中、一時停止中、停止中のコンテナ数、ダウンロード済みのイメージ数など)を確認できます。それでは、最初のイメージを取得してみましょう。
$ sudo docker pull alpine
このコマンドでは、Dockerに対して、デフォルトで設定されている最新バージョンのalpineイメージをパブリックレジストリからプルしてダウンロードするように指示しています。
*alpine は、完全なパッケージ インデックスを備え、サイズがわずか 5 MB の Alpine Linux に基づく最小限の Docker イメージです。
イメージをコンテナとして実行したい場合は、以下のコマンドを使用します。
$ sudo docker run -i -t alpine /bin/bash
このコマンドを実行すると、直接アルパインターミナルに切り替わります。-i フラグは、コンテナに接続していないときでも標準入力を開いたままにします。この永続的な標準入力は、対話型シェルに必要な要素の半分です。-t フラグはもう半分で、Docker に擬似 tty をコンテナに割り当てるように指示します。これら2つを組み合わせることで、新しいコンテナ内で対話型シェルが実現します。コンテナを終了するには、簡単な exit コマンドを使用します。
さて、このDockerの基本チュートリアルでは、 Ubuntu 画像。
$ sudo docker run -it ubuntu /bin/bash
Dockerはローカルにイメージが存在するかどうかを確認し、存在しない場合はイメージライブラリから自動的にイメージをプルします。ここでも、対話型シェルが実行されます。コンテナを実行する際に、名前を付けることもできます。
$ sudo docker run –-name our_container -it ubuntu /bin/bash
そして、再び終了します。また、以前に作成したコンテナを対話型シェルなしで実行することもできます。
$ sudo docker start container_name
そして、`docker stop container_name` と入力してコンテナを停止します。
$ sudo docker stop container_name
実行中のコンテナをすべて表示したい場合は、以下のコマンドを実行するだけです。
$ docker ps
すべてのコンテナに対して、同じコマンドの末尾に「-a」を追加します。例えば、`docker ps -a` のように入力します。このコマンドは、コンテナID、使用されているイメージ、作成日時、実行ステータス、公開ポート、および管理を容易にするためのランダムに生成された名前を表示します。
コンテナを実行する際、コンテナがどれだけのリソースを使用しているかを知りたい場合がよくあります。そのためには、以下のコマンドを使用できます。
$ docker stats
ローカルにダウンロードした画像とその情報も確認できます。
$ sudo docker images
上記のDockerの例にあるコマンドは、各Dockerイメージを、イメージバージョン、固有のイメージID、作成日、イメージサイズを示すタグとともに表示します。
コンテナがなぜこれほど優れた技術なのかを理解するには、仮想化がどのように進化してきたかを振り返ることが役立つ。
仮想化とは何ですか?
以前は、サービスのデプロイは時間がかかり、非常に手間のかかる作業でした。開発者がコードを記述し、運用チームがそれをベアメタルマシンにデプロイするのですが、その際、ライブラリのバージョン、パッチ、言語コンパイラなどに注意を払い、コードが正しく動作するように調整する必要がありました。バグやエラーが発生した場合は、開発者が問題を修正し、運用チームが再デプロイするというプロセスを最初からやり直す必要がありました。
ハイパーバイザーの登場により状況は改善した。ハイパーバイザーは複数の 仮想マシン同じホスト上の仮想マシン(VM)は、実行中または停止中の場合があります。VMはコードのデプロイやバグ修正の待ち時間を大幅に短縮しましたが、真のゲームチェンジャーはDockerコンテナでした。
Dockerの人気は、コンテナを大規模に管理するオーケストレーションツールによっても促進されています。 Kubernetes先に進む前に、最も重要なDockerコマンドの簡単なリファレンスを以下に示します。
重要な Docker コマンド
以下は重要な Docker コマンドです。
| Command | 詳細説明 |
|---|---|
| ドッカー情報 | 情報コマンド |
| ドッカープル | 画像をダウンロードする |
| docker run -i -t イメージ名 /bin/bash | イメージをコンテナとして実行する |
| docker start our_container | コンテナの起動 |
| docker stop コンテナ名 | コンテナを停止する |
| ドッカーのps | 実行中のコンテナ一覧 |
| ドッカー統計 | コンテナ情報 |
| ドッカー画像 | ダウンロードした画像一覧 |
| Docker のクリーンアップ | 実行中のコンテナをすべて強制終了します。 |
また、こちらも読んでください。 Docker の面接の質問と回答 新卒者から経験豊富なプロフェッショナルまで対象。

