コンテナーとDockerを初めて使用し、主にWindowsで作業している場合は、ご馳走になります。この記事では、Docker DesktopforWindowsまたは単にDockerDesktopと呼ばれるものを使用してWindows10でDockerをセットアップする方法を学習します。 この記事で。
Docker Desktopは、Windows 10で簡単に使用できるようにパッケージ化されたDockerエンジンと管理クライアントです。この記事では、Docker Desktopをインストールし、最初のコンテナーをデプロイし、ホストとコンテナー間でデータを共有します。
Windows上のDockerの前提条件
これは、Windows上のDocker用のDockerDesktopのさまざまな手順を示すウォークスルー記事です。従うために、最初にいくつかの特定の要件があることを確認してください。
- 800MB以上のデータをダウンロードするためのインターネット接続
- リリース1703以降のPro、Enterprise、またはEducationエディションを実行しているWindows1064ビット。これは、Windows10でHyper-Vを実行するために必要です。
- SLAT(ネストされたページング)互換性のあるCPU。 2008年頃以降のすべてのAMD/IntelプロセッサはSLAT互換です
- 少なくとも4GBのRAM
- BIOSハードウェア仮想化は仮想化テクノロジーと呼ばれることもあります またはVTx 。これを有効にして、有効として表示する必要があります 以下に示すように、タスクマネージャの[パフォーマンス]タブで。
まず、WindowsでDockerを実行するには、DockerDesktopをダウンロードしてインストールする必要があります。 DockerDesktopには2つのリリースがあります。安定リリースとテストリリース。
安定版リリースは四半期ごとにリリースされ、完全にテストされたアプリケーションを保証します。この記事では、安定版リリースを使用します。
警告:インストール時に、Docker Desktopは、Hyper-Vハイパーバイザーがまだインストールされていない場合はインストールするように求めます。そうすることで、Hyper-Vハイパーバイザーは、VirtualBox、VMWareなどのユーザーモードハイパーバイザーがゲストVMを実行するのを防ぎます。 VirtualBoxとVMWareのHyper-Vサポートは制限されていますが、今後提供される予定です。
また、Docker.comから直接Docker Desktopを手動でダウンロードするか、WindowsパッケージマネージャーのChocolateyを介して、ソースをダウンロードすることもできます。それぞれの方法について簡単に説明しましょう。
Docker.comから
Docker Desktopをdocker.comから直接ダウンロードするには、製品ページに移動し、アカウントを登録して、そこからダウンロードします。これは、アカウントを登録して本番環境でDockerを使用する場合に適しています。
ただし、Dockerを初めてテストする場合は、直接ダウンロードすることもできます。これははるかに簡単です。
EXEがダウンロードされたら、実行可能ファイルを実行し、すべてのデフォルトを受け入れるプロンプトをクリックします。
Linuxコンテナの代わりにWindowsコンテナを使用するかどうかを尋ねられたとき 、以下に示すように、しない チェックボックスを有効にします。この記事ではLinuxコンテナーを使用します。
インストールが完了したら、コンピュータを再起動します。
WindowsコンテナまたはLinuxコンテナを使用するオプションを選択すると、DockerはWindowsカーネルまたはLinuxカーネルにイメージをアタッチするように指示されます。以下に示すように、システムトレイのDockerアイコンを右クリックし、[Windowsコンテナに切り替える]を選択することで、インストール後いつでもこの設定を変更できます。
Docker Desktopをダウンロードしてインストールするもう1つのオプションは、Chocolateyを使用することです。 Chocolateyは、ダウンロード/インストールタスクの多くを自動化します。これを行うには、管理者としてコマンドラインコンソール(cmdまたはPowerShellのいずれか)を開き、以下のコマンドを実行してプログラムを一度にダウンロードしてインストールします。
choco install docker-desktop
完了したら、Windows10を再起動します。
ある時点でテストリリースを試してみたい場合は、
choco install docker-desktop --pre
を実行してダウンロードしてインストールできます。 。
Dockerデスクトップのインストールの検証
インストールすると、DockerDesktopはWindows上でDockerを提供するサービスとして自動的に実行されます。再起動後にWindowsにログインすると、システムトレイに表示されます。しかし、実際にどのようにしてそれが機能していることを知っていますか?
Docker Desktopが正しく機能していることを確認するには、コマンドラインコンソールを開き、docker
を実行します。 指図。インストールがうまくいけば、Dockerコマンドリファレンスが表示されます。
最後に、Dockerに hello-worldというサンプルコンテナイメージをダウンロードして実行させます。 コマンドdocker run hello-world
を実行する 。すべてが順調であれば、以下のような出力が表示されます。
Docker Desktopがインストールされ、すべてが正常であることを確認しましたか?それで? WindowsでDockerを使い始めるために、Dockerコンテナーで実行する一般的なタスクの1つは、コマンドの実行です。 docker run
を介して コマンドを使用すると、ホスト(Windows 10 PC)を介して実行中のコンテナーに直接コマンドを送信できます。
docker run
を使用してコンテナでコマンドを実行するには 、最初に画像名を指定し、次にコマンドを指定します。開始するには、Dockerにコマンドhostname
を実行するように指示します アルパインと呼ばれるコンテナの内部 以下に示すように。
> docker run alpine hostname
b74ff46601af
高山がないので これで、コンピューター上のDockerイメージ。Windows上のDockerは、Docker Hubから小さなイメージをダウンロードし、そのイメージからコンテナーを起動し、コマンドをコンテナーに直接送信して、すべてを一挙にシャットダウンします。
コンテナを実行し続けたい場合は、-it
を使用することもできます パラメータ。このパラメーターは、コマンドの実行後にコンテナーをフォアグラウンドで実行したままにして、コンテナーを「対話型モード」に保つようにDockerに指示します。次に、準備ができたターミナルプロンプトが表示されます。
> docker run -it alpine sh
/ #
ターミナルでの作業が終わったら、exit
と入力します Windows10に戻ります。
もう1つの一般的なタスクは、コンテナーからホストファイルにアクセスすることです。コンテナー内のホストファイルにアクセスするために、Windows上のDockerでは、デスクトップからフォルダーパスをリンクして、そのフォルダーをコンテナーに共有できます。このプロセスはバインディングと呼ばれます 。
バインディングを作成するには、ローカルドライブにフォルダーを作成します。この例では、 E:\を使用します 入力と呼びます 次に、 file.txtという名前の新しいテキストドキュメントを作成します フォルダ内。任意のパスとファイルを自由に使用してください。
ホストとコンテナ間で共有するフォルダを取得したら、Dockerは--mount
を使用してフォルダをマウントする必要があります パラメータ。 --mount
パラメータには3つの引数が必要です。マウントタイプ、ソースホストディレクトリパス、およびターゲットディレクトリパス。ターゲットパスは、コンテナ内のシンボリックリンクになります。
以下に、 E:\全体をマウントする例を示します。 Windows10ホスト内で/home / TESTとして表示されます Linuxコンテナ内のディレクトリ。
> docker run --mount type=bind,source="E:/",target=/home/TEST -it alpine
ホストフォルダーをマウントしようとすると、Docker Desktopは、以下に示すように、このドライブをDockerコンテナーと共有する許可を求めます。
file.txtを作成した場合 前述のようにWindows10フォルダー内のファイルで、cat /home/TEST/input/file.txt
を実行します。 。コンテンツが表示されていることがわかります。
ここで、入力を削除します 作成したフォルダでcat ...
を実行します もう一度コマンドします。シェルがファイルがもう存在しないことを報告するようになったことを確認します。
知っておくべきもう1つの重要な概念は、Windows上のDockerがネットワーキングを処理する方法です。簡単な紹介として、ローカルホストからコンテナで実行されているWebサービスにアクセスするために必要なものを見てみましょう。
まず、サンプルWebページを実行するデモ画像を起動します。 dockersamples / static-siteというDockerイメージをダウンロードして実行します 。 docker container run
を使用します そうするために。
次のコマンドは、一度に4つのアクションを実行します。
- DockerHubからstatic-siteというDockerイメージをダウンロードします docker-samples 「ディレクトリ」
- static-siteからコンテナインスタンスを起動します 画像
- コンテナをターミナルのフォアグラウンドからすぐにデタッチします(
—detach
) - 実行中のコンテナーのネットワークポートにWindows10ホストからアクセスできるようにします(
—publish-all
)
docker container run --detach --publish-all dockersamples/static-site
## Alternate/shorthand syntax that does the same thing:
## docker container run -d -P dockersamples/static-site
## docker run -d -P dockersamples/static-site
実行されると、Dockerは以下に示すように起動されたコンテナIDを返します。
--publish-all
を使用してから パラメータ、ローカルホストポートがコンテナのネットワークスタックにマップされるようになりました。 docker ps
を使用できます すべての実行中のコンテナに割り当てられているポートを含む、すべての実行中のコンテナを一覧表示するサブコマンド。以下の例では、1つのコンテナがホストポート32777をコンテナポート80に、ホストポート32776をコンテナポート443にマッピングして実行しています。
Windows上のDockerは、--publish-all
を使用するときに、コンテナーにランダムなポートを割り当てます 明示的に定義しない限り、パラメータ。
次に、Webブラウザーを開き、http:// localhost:32777またはDockerがdocker ps
によって出力されるポート80にマップするために割り当てたポートに移動します。 。すべてがうまくいけば、以下のWebページが表示されるはずです。
これで、Windows上のDockerで実行されているDockerコンテナーがあり、単純なWebページを提供しています。おめでとう!ただし、--publish-all
を使用して、ランダムなポート選択に依存しない特定のポートバインディングを指定する必要があります。 。問題ない。 -p
を使用します パラメータ。
まず、コンテナIDの一意の文字列を指定して、実行中のコンテナを停止します。このコンテナIDは、docker ps
を実行することで見つけることができます 。コンテナIDがわかったら、コンテナを停止して新しいコンテナを開始し、Dockerを指定して公開する特定のポートを割り当てます。
ポートを指定するための構文は、<external port>:<container port>
です。 。公開するポートごとに、--publish
を使用します または-p
以下に示すように、外部ポート番号とコンテナポート番号を切り替えます。
> docker stop f766
> docker run --detach -p 1337:80 dockersamples/static-site
コンテナIDを指定する場合は、一意になるのに十分なIDを入力するだけで済みます。単一のコンテナーのみを実行していて、そのIDが
f766f4ac8d66bf7
の場合 、f
だけを含む任意の数の文字を使用してコンテナを識別できます 。要件は、入力するものが何であれ、単一のコンテナーを一意に識別できるようにすることです。
次に、Webブラウザーに移動して、localhost:1337
に移動します。 。イメージを変更するのではなく、常にポート80でリッスンすることを忘れないでください。コンテナに接続できるようにするDocker構成のポート変換ルールを変更します。
docker stop
を使用する 、コンテナを停止することはできますが、一度に複数のコンテナを停止するにはどうすればよいですか?そのための1つの方法は、スペースで区切られた複数のコンテナーIDを提供することです。 IDがfd50b0a446e7
の3つのコンテナを停止する方法の例を以下に示します。 、36ee57c3b7da
、および7c45664906ff.
> docker stop fd50 36ee 7c45
PowerShellでDockerコンテナを管理している場合は、ショートカットを使用してすべてのコンテナを停止することもできます。
docker ps -q
を介してコンテナIDのリストをフィードします PowerShellのコマンド拡張を介してstopパラメーターに移動しますdocker stop (docker ps -q)
。
docker ps
と入力したときにコンテナがリストされていないことを確認して、すべてのコンテナが停止していることを確認します 。
いくつかのコンテナイメージをダウンロードし、現在停止しているいくつかのコンテナを実行しました。それらが停止していても、割り当てられたストレージはローカルホストディスクから削除されません。コンテナを削除してそのスペースを解放し、ワークスペースが乱雑にならないようにする必要があります。
単一のコンテナを削除するには、コンテナremove rm
を使用します 以下のようなパラメータ。
> docker container rm <container ID>
または、停止したすべてのコンテナを削除するには、prune
を使用します 以下のパラメータ。
> docker container prune