このステップでは docker の使い方を学びます。
📖 Reference
-
(JA)docker docs
-
(EN)docker docs
-
(EN)Udemy Business - Docker for the Absolute Beginner - Hands On - DevOps
最新のdockerをインストールし、docker -v
が実行できることを確認しましょう。
📖 Reference
mercari-build-training/
以下にいることを確認して次のコマンドを実行してみましょう。
$ docker run -v $(pwd)/data/text_en.png:/tmp/img.png wakanapo/tesseract-ocr tesseract /tmp/img.png stdout -l eng
メッセージが表示されましたか?
このコマンドを実行するとレジストリにある docker image がローカルにダウンロードされ実行されます。
この docker image には画像から文字を読み取る機能 (OCR) が実装されています。 このように docker image を使うと手元の環境を変更することなく、docker image 内に構築された環境を使ってシステムを実行することができます。
ちなみに、以下のコマンドで日本語も読み取ることができます。
$ docker run -v $(pwd)/data/text_ja.png:/tmp/img.png wakanapo/tesseract-ocr tesseract /tmp/img.png stdout -l jpn
英語か日本語の文字が含まれる好きな画像を用意して、文字が読み取れるか試してみましょう。
🔰 Point
- Dockerのvolume について理解しましょう
次のコマンドを実行してみましょう。
$ docker images
これはローカルのホスト上にあるイメージの一覧を表示するコマンドです。
先程使った wakanapo/tesseract-ocr
という image があることが確認できるはずです。
次のコマンドを実行し、docker にはどんなコマンドあるか確認しましょう。
$ docker help
docker はホスト上に存在しないイメージを使う際には、自動的に image をダウンロードしてくれます。しかしながら、image を予めダウンロードしておくこともできます。
レジストリから image を取得するコマンドを調べ、alpine
という名前の image を取得してみましょう。
イメージ一覧の中に alpine
という image があることを確認しましょう。
📖 Reference
🔰 Point
どのようなときに使われるコマンドか理解できているか確認しましょう。
- images
- help
- pull
pythonで開発をしている人はpython/
, Goの人はgo/
以下にあるDockerfile
をbuildしてみましょう。
- 名前(リポジトリ名)は
build2024/app
, タグはlatest
とします。
イメージ一覧の中に build2024/app
という image があれば成功です。
📖 Reference
STEP4-4 で Build した Image を実行し、次のようなerrorが出ることを確認しましょう。
docker: Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "python": executable file not found in $PATH: unknown.
ERRO[0000] error waiting for container: context canceled
Goの場合は、上のエラーメッセージの"python"
の部分が"go"
になります。
Dockerfile
を変更し STEP2 でインストールしたのと同じバージョンの Python や Go が docker image で使えるようにしましょう。
変更した Dockerfile
で build した Image を実行し、STEP2-2 と同じ結果が表示されれば成功です。
📖 Reference
STEP4-5 までで docker image の中は STEP2-2 と同じ状態になっています。
Dockerfile
を変更し、必要なファイルをコピーしたり依存ライブラリをインストールしたりして, docker image 上で 出品 API が動くようにしましょう。
$ docker run -d -p 9000:9000 build2024/app:latest
を実行しSTEP3と同様にしてAPIを叩ければ成功です。
🔰 Point
以下のキーワードについて理解できているか確認しましょう。
- images
- pull
- build
- run
- Dockerfile