Raspberry Piを用いて機械学習モデルを動かしたいと考えています。おそらくDockerを扱うことになるのですが、そもそもDockerで何ができるのか、何が便利なのかを知る必要があるので、実際にDockerを使ってみることで理解を深めようと思います。
※この記事は学習が進み次第再び編集を行います。
Dockerを使う目的
- アプリ開発環境の構築
-
マイクロサービスの実行環境の構築
Dockerの導入
windows10 homeだったのでHyper-Vの仮想化機能のついたwindows10 proにアップグレードしました。13824円かかります。アップグレードは5分もかからず終了!
スタートボタンを右クリックしタスクマネージャを開き、パフォーマンスタブで仮想化が有効になっているか確認
https://hub.docker.com/editions/community/docker-ce-desktop-windows を開き、ログインしてDockerをダウンロード
Docker基礎
いくつか用語の確認をします。
Dockerイメージ
Dockerコンテナを構成するOSやファイルシステム、実行するアプリケーションや設定をまとめたもので、コンテナを作成するために利用されるテンプレートとなるもの
Dockerコンテナ
Dockerイメージを元に作成され、具現化されたファイルシステムとアプリケーションが実行されている状態
要するにDockerイメージからコンテナが作られ、コンテナの中でOSとして構成されたファイルシステム、アプリが実行されるということです。
主なdocker コマンド
docker container ls -q
コンテナの一覧表示
docker ls
動いているコンテナの確認
docker ls -a
停止しているコンテナの確認
docker rm [コンテナID]
コンテナの削除
docker images
手元にあるイメージの確認
docker rmi [イメージID]
イメージの削除
docker --help
helpの閲覧
ex. docker image --help
でimageコマンドのhelpが閲覧できる
docker image build -t イメージ名[:タグ名] Dockerfile配置ディレクトリのパス
イメージをビルドする(イメージを構築するという意味) -t (タグ付け)はほぼ必須
docker container ls --filter "[イメージ名]" -q
ancestorで指定したイメージから作られたコンテナを表示することができます
docker stop [コンテナID]
コンテナの停止
docker container ls --filter "[イメージ名]" -q | % { docker stop $_ }
filterでコンテナIDを取得し、パイプラインでdocker stopに渡します
docker run -d -p [イメージ名]
コンテナの実行。-dはdetachの略で、バックグラウンド実行を行う。-pはpublichの略で、portを指定する。左の数字がホストからの接続ポートで、右の数字がコンテナ側への接続ポートを表す
docker run
だけだとコンテナを作成(run)したあとすぐにコンテナを出る(exit)のでdocker ps
してもなにも表示されない