Docker学習のメモとして残します。専門的な言葉を知らないことも多いので、ざっくりした書き方になります。これから、WindowsでDockerを使おうと思う人には参考になるかもしれません。私がよく分かっていない部分はご指摘いただけたうれしいです。
Dockerって何をするものなのか?
OSとアプリケーションのパッケージ(イメージ)から開発/実行環境を作ります。OSを含めたコンテナ化を行うので、OSやバージョンの影響を受けず、異なる環境でも同一の開発/実行環境を準備できる。また、Dockerの技術を使うと、一度作った環境は何度でも簡単に再現できる。また、他のパソコンやサーバーに環境を移植することも容易です。よって、アプリケーションの開発などで使われている。
Docker Desktopの導入
Windowsの場合、Docker Desktopを公式HPの手順に従い、導入する。
ただし、Windowsの場合はWSL2(Windows Subsystem for Linux:WindowsでLinux開発環境で直接使うためのツール)を有効化しておく必要がある。まだ、WSL2をインストールしていない場合は、Microsoftのページの手順に従って、インストールする。
DockerはWindowsではPowerShellを使って使うのが簡単です。PowerShellで「docker –version」と入力して、バージョンが確認できれば、インストール成功。
> docker --version
Docker version 20.10.7, build f0df350
Dockerを使ってみる
Dockerの初心者用チュートリアルに従って、「hello-world」を呼び出してみます。
> docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:80f31da1ac7b312ba29d65080fddf797dd76acfb870e677f390d5acba9741b17
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
さて、この一行のコマンドで何が行われたか。。。英語で書いてありますが、日本語にすると、
- Docker clientがDocker daemonに接続
- Docker daemonが”hello-world”のイメージをDocker Hubからプル
- Docker daemonがイメージから新しいコンテナを作って、この出力をする実行ファイルを生成
- Docker daemonがDocker clientに出力結果を伝えて、それをターミナルに送信
Docker client・・・Dockerのアプリケーション
Docker daemon・・・パソコンのバックグラウンドで動くプロセス
Docker Hub・・・オンラインでDockerイメージを保管しているサーバー(リンク)
今回、Docker Hubにある「hello-world」のイメージをプル(サーバーからデータを送ってもらうこと)をして、自分のPC上で実行できることが分かりました。Docker Hubには、Docker側が用意した様々な公式イメージや他の人が作ったイメージがあり、そういうものを利用することもできます。
今回使った「hello-world」のイメージ
今回、WindowsにDockerを導入するところを見てきました。次からはDockerの具体的な仕組みやPythonの仮想環境構築について、まとめていきたいと思います。
次回・・・仕組み編
参考リンク
docker docs(公式ホームページ)
公式ドキュメントです。チュートリアルやサンプルコードもあります。
Docker ドキュメント日本語化プロジェクト
上記の公式ホームページの日本語化ページです。
【図解】Dockerの全体像を理解する(Qiita)
すごく分かりやすいDockerのまとめページです。
DockerでPython実行環境を作ってみる(Qiita)
DockerでのPython仮想環境構築を丁寧に説明してくれています。ワークショップの動画やコードも公開してくれているので、そのままやるだけでPythonの仮想環境は作れます。
DockerでPython公式イメージ + MeCab + NEologd辞書(Qiita)
Dockerを学んでみたいというモチベーションとなったページです。DockerでPython+MeCab+mecab-ipadic-NEologd辞書の環境構築の方法を教えてくれます。最終的なゴールはこのページのコードを全部理解して、自分でカスタマイズできるようになることです。
コメント