CodeGym /コース /Docker SELF /Dockerを使う理由

Dockerを使う理由

Docker SELF
レベル 10 , レッスン 3
使用可能

9.1 マイクロサービスアーキテクチャ

Dockerは現代の開発に欠かせないツールだよ。アプリケーションを分離されたコンテナ内で作成、実行、デプロイするのを助けてくれるから、使いやすくて安定していて扱いやすいんだ。このレクチャーでは、Dockerがどのように開発者や管理者の生活を大いに楽にしてくれるかの例を見てみよう。

問題

モノリシックアプリケーションの開発は、メンテナンスやスケーリングに苦労することが多いんだ。一部分に変更を加えると、他の部分にも影響が出る可能性があるから、アップデートやテストが難しくなるんだよ。

Dockerでの解決策

Dockerは各サービスを別々のコンテナにパッケージ化することでマイクロサービスアーキテクチャを導入できるんだ。これでマイクロサービス間の独立性と分離が実現するんだよ。

例えば、ユーザー、注文、支払いの3つのマイクロサービスを持つアプリケーションがあるとしよう。Dockerを使って以下のように3つのコンテナを作成できるよ:

ターミナル

docker run -d --name users-service users-image
docker run -d --name orders-service orders-image
docker run -d --name payment-service payment-image 

9.2 継続的インテグレーションとデリバリー (CI/CD)

問題

開発、テスト、デプロイのプロセスはよく時間がかかるよね、特に環境がそれぞれ違う場合は余計に大変。

Dockerを使った解決策

Dockerを使えば、開発の全ての段階で同じ環境を作れるんだ。それにより、開発から本番環境までアプリがどこでも同じように動作することが保証されるよ。

Dockerを使ったCI/CDの設定で、ビルド、テスト、デプロイの自動化ができるよ:

イメージのビルド:

ターミナル


docker build -t my-app .

テストの実行:

ターミナル


docker run my-app ./run-tests.sh

デプロイ:

ターミナル


docker push my-app:latest
ssh user@production-server "docker pull my-app:latest && docker run -d my-app"

9.3 ポータブル性と一貫性

問題点

アプリケーションがあるマシンでは動作するけど、設定や依存関係のバージョンの違いのせいで別のマシンでは動作しないことがよくある。

Dockerでの解決策

Dockerを使うと、アプリケーションとそのすべての依存関係を1つのコンテナにパッケージ化して、どの環境でも確実に動作させることができるよ。

Dockerfileを使って、依存関係やアプリケーションを実行するためのコマンドを記述することができる:

dockerfile

FROM node:14
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
CMD ["npm", "start"]

これで、アプリケーションがローカルマシンでも、サーバーでも、クラウドでも安定して動作するようになるよ。

9.4 セキュリティの確保

問題

アプリケーションのデプロイは脆弱性があるかもしれない、特にサードパーティのライブラリやツールを使う場合。

Dockerでの解決方法

Dockerはコンテナの分離を提供してリスクを軽減します。コンテナは独立して動作し、システムへの影響を制限します。

リソースを制限しセキュリティを向上させるためのパラメータを使います:

ターミナル


docker run -d --name secure-app --memory="512m" --cpus="1" --security-opt=no-new-privileges my-secure-app

9.5 テストと自動化

問題

様々な構成でのテストは時間がかかり、メインの環境に影響を及ぼす可能性があるよ。

Dockerでの解決策

Dockerを使うと、メインのシステムに影響を与えずに隔離されたテスト環境を作成できるんだ。

テスト環境でデータベースとアプリを起動する例:

ターミナル


docker run -d --name test-db -e POSTGRES_PASSWORD=mysecretpassword postgres
docker run -d --name test-app --link test-db:db my-app 

9.6 クラウドコンピューティングとスケーリング

問題

クラウドでのアプリケーションのスケーリングは複雑で高価になることがある。

Dockerでの解決策

DockerはAWS、Azure、Google Cloudのようなクラウドプラットフォームとの統合のおかげでスケーリングを簡単にする。

DockerとKubernetesを使えば、スケーリングを簡単に設定できるよ。以下はyamlファイルの例だ。今は理解できないかもしれないけど、時間が経てば全部わかるようになるから。

yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
        - name: my-app
          image: my-app:latest
          ports:
            - containerPort: 80
1
Опрос
Dockerの基本コマンド,  10 уровень,  3 лекция
недоступен
Dockerの基本コマンド
Dockerの基本コマンド
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION