Docker振り返り
DockerについてUdemyで学んだので今回はその振り返りです.間違いなどもあるともいますので,もし間違いがありましたら,ご指摘お願いします.
内容
Dockerfile コマンド一覧
Dockerfileで使用される主要なコマンドは以下の通り:
-
FROM
: ベースイメージを指定 -
RUN
: コマンドを実行 -
COPY
: ファイルやディレクトリをコピー -
ADD
: ファイルやディレクトリを追加(圧縮ファイルの展開も可能) -
WORKDIR
: 作業ディレクトリを設定 -
ENV
: 環境変数を設定 -
EXPOSE
: ポートを公開 -
CMD
: コンテナ実行時のデフォルトコマンドを指定 -
ENTRYPOINT
: コンテナ実行時の固定コマンドを指定
Dockerコマンド:
コマンド | 内容 |
---|---|
docker container run | コンテナを実行する |
docker container stop | 実行中のコンテナを停止する |
docker image build | DockerfileからDockerイメージを作成する |
docker image pull | レジストリからイメージを取得する |
マルチステージング
マルチステージビルドの目的と意義は以下の通り:
-
イメージサイズの削減: 最終的なイメージには必要最小限のファイルのみを含めることができる。
-
開発環境と本番環境の統一: 1つのDockerfileで複数の環境に対応できるため、環境間の一貫性が向上。
-
保守性の向上: 複数のDockerfileを管理する必要がなくなり、保守が容易。
-
ビルドプロセスの最適化: ビルドに必要なツールと実行に必要なファイルを分離できるため、効率的なビルドプロセスが実現。
Dockerネットワーク
Dockerネットワークの内容と使いどころ、落とし穴は以下の通り:
内容
- Dockerネットワークは、コンテナ間の通信を管理する機能です。
- 主なネットワークドライバには、bridge、host、overlay、macvlanがある。
使いどころ
- マイクロサービスアーキテクチャ: 複数のサービスを分離しつつ、必要に応じて通信を可能。
- 開発環境の分離: 異なるプロジェクトやバージョンを独立したネットワークで管理。
- セキュリティの強化: ネットワークを分離することで、不要な通信を防ぎセキュリティを向上(よくわからんかった)。
落とし穴
- 複雑性の増加: ネットワークの設定が複雑になり、管理が難しくなる。
- パフォーマンスオーバーヘッド: ネットワーク層の追加によりわずかなパフォーマンス低下が生じる。
- 名前解決の問題: コンテナ名による通信に依存すると、DNSの問題が発生する可能性がある。
- ネットワークの孤立: 誤った設定により、コンテナが意図せずネットワークから孤立する可能性。
これらの落とし穴を避けるためには、ネットワーク設計を慎重に行い、適切なモニタリングとトラブルシューティング手法を確立することが重要。
振り返り
一番やりたかったDevContainerでFluttterの開発環境を作成するために必要なことがよくわからなかった.今この方のgitを参考に構築しているが何がダメなのかがわからない.
そもそもSDKまわりがよくわかっていないのもあって何から手を付けていけばいいかもわからない.今週中には終わらせたい.