検索
ホームページJava&#&チュートリアルDocker クイック スタート、中心的な概念、および一般的な手順


#友人が週末に Docker 関連の問題について尋ねました。今日は、Docker のクイック スタート、中心的な概念、一般的な手順を共有します。

Docker クイック スタート、中心的な概念、および一般的な手順

1. 基本的な概念と操作

#1.1. インストール

Linux は Docker のネイティブ サポート プラットフォームであるため、Linux にインストールすることをお勧めします。 CentOS に Docker をインストールするには、ディストリビューション バージョン 7 以降が必要であり、overlay2 ストレージ ドライバーを使用することをお勧めします。

# 卸载已有 docker
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

# 添加安装源
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

# 安装最新版
sudo yum install docker-ce docker-ce-cli containerd.io

# 启动
sudo yum install docker-ce docker-ce-cli containerd.io

1.2. Image

は、基本的にファイルとフォルダーの読み取り専用の組み合わせであり、All を実行するコンテナーも含まれます。基本的なファイルと構成情報が必要です。操作: 1. イメージの Docker Pull をプルします。 例: docker pull nginx

2、イメージの docker タグの名前を変更します。 例: docker tag nginx:latest mynginx:latest

3. イメージ docker image ls または docker image

4 を表示します。次のようなイメージ docker rmi

を削除します。 docker rmi mynginx

5. イメージをビルドする docker build または docker commit 例: docker commit nginx mynginx:lastest docker build は比較的複雑ですが、さらに使用されます

1.3. コンテナ

コンテナはイメージの実行エンティティであり、1 つのイメージから複数のコンテナを作成できます。コンテナーは、コンテナー内にファイル システムの読み取り/書き込みコピーを作成します。

ライフサイクル:

created: 初期作成状態

running: 実行中の状態

stopped: 停止状態

paused: 一時停止状態

deleted: 削除済みステータス

操作: 1. コンテナーを作成して起動します

作成: docker create -it --name=mynginx mynginx

Start : docker start mynginx

作成して開始: docker run -it --name=mynginx mynginx

2. コンテナーを終了します docker stop mynginx

3. コンテナーに入る ドッカーアタッチ mynginx docker exec -it mynginx sh (さらに使用)

4. コンテナーを削除します docker rm mynginx 実行中のコンテナを削除します: docker rm -f mynginx

5. コンテナをエクスポートします。 docker import mynginx > mynginx.tar

6. コンテナのインポ​​ート docker import mynginx.tar mynginx:import

1.4、warehouse

Docker イメージの保存と配布、登録サーバーウェアハウスを保存する実際のサーバーには多くのウェアハウスを含めることができ、各ウェアハウスには複数のミラーを含めることができます。

公共倉庫ドッカーハブ https://hub.docker.com/ ログイン: docker ログイン イメージをウェアハウスにプッシュします: docker Push

ディストリビューションを使用してプライベート ウェアハウスを構築します https://github.com/distribution/distribution

docker run -d -p 5000:5000 --name registry registry:2.7 docker プッシュ localhost:5000/mynginx###

1.5. ボリューム

は、デフォルトのジョイント ファイル システムをバイパスし、ファイルまたはディレクトリの形式でホスト上に直接存在できます。 。 優れた。これにより、データの永続性とコンテナ間でのデータ共有の問題が解決されます。操作: 1. 作成: docker volume create volume-name

2. -v は永続化するパスを指定します。Docker は自動的にボリュームを作成し、コンテナーにバインドします。 docker run -d --name=nginx-volume -v /usr/share/nginx/html nginx

3. 表示: docker volume ls

4. ボリュームの詳細: docker volume Inspection volume -name

5, --mount パラメータはボリュームの名前を指定します docker run -d --name=nginx --mount source=ボリューム名,target=/usr/share/nginx/html nginx

6. ボリュームの削除: docker volume rm ボリューム名

7. ボリューム間のデータ共有: docker run --mount source=lv,target=/tmp/log --name=v-Producer -it test docker run -it --name Consumer --volumes-from v-Producer test

8. ボリュームとホスト間のデータ共有: docker run -v /data:/usr/local/data -it test

1.6. 重要なコンポーネント

1. Docker

  • docker、それは Docker クライアントであり、リクエストを送信します。
  • dockerd (サーバーの入り口) は、リクエストを受信し、結果を返す責任があります。
  • docker-init, 1コンテナのプロセス番号、サブコンテナを管理します
  • docker-proxy、ホストのネットワーク トラフィックをコンテナに転送します

2、containerd

  • containerd、コンテナの起動、停止など、コンテナのライフサイクル管理を担当します...
  • containerd-shim、コンテナ プロセスの親プロセスとして、containerd と real を分離します。containerd のクライアントであるコンテナ プロセス
  • ctr は、開発およびデバッグ中に、containerd にリクエストを送信します。
  • 3. ランタイム
  • runc、システム インターフェイスを通じてコン​​テナを作成および破棄します

1.7. コンテナの監視

docker stats では、ホスト上のすべてのコンテナーの CPU、メモリ、ネットワーク IO、ディスク IO、PID、その他のリソースのリソース使用状況を表示できます。 cAdvisor は、Google がオープンソース化した一般的なコンテナ監視ソリューションです。インストールに関するリファレンス:

https://www.jianshu.com/p/91f9d9ec374f

ビュー監視: http://localhost:8080 http://localhost:8080/containers/ http://localhost:8080/docker/

1.8. セキュリティの問題

  • セルフセキュリティの脆弱性
  • イメージにはセキュリティ上の問題があります
  • #Linux ホスト カーネルの分離では十分ではありません

##2. 実装原則

2.1. 名前空間

ネームスペースは、同じホスト システム内のプロセス ID、ホスト名、ユーザー、ファイル名、ネットワーク、プロセス間通信などのリソースを分離できる Linux カーネルの機能です。

Docker は 6 つのタイプを使用します: マウント名前空間、マウント ポイント分離 PID 名前空間、プロセス分離 UTS 名前空間、ホスト名の分離 IPC 名前空間、プロセス間通信の分離 ユーザー名前空間、ユーザーおよびユーザーグループの分離 ネット名前空間、ネットワーク デバイス、IP アドレスおよびポートの分離

2.2、Cgroups

プロセスまたはプロセス グループを制限するCPU、メモリ、ディスク IO などのリソース。 cgroup の機能:
  • #リソース使用量の制限
  • #グループごとに、CPU、ディスク IO、その他のリソースの使用優先順位が異なる場合があります
  • 制御グループのリソース使用量を計算する
  • #プロセスの一時停止または再開を制御
# 2.3. Union File System

Union File System は、複数のディレクトリの内容を同じディレクトリに共同でマウントし、単一のファイル システムを形成できる階層化された軽量ファイル システムです。

Docker には、AUFS、Devicemapper、OverlayFS という 3 つの最も一般的に使用されるユニオン ファイル システムがあります。

AUFS は最も古く、最も成熟したものです。
  • Devicemapper (Linux カーネルによって提供されるフレームワーク) は、ブロック デバイスをマッピングするための技術フレームワークです。 。中心となる概念には、マップされたデバイス、ターゲット デバイス、およびループ LVM モードとダイレクト LVM モード (実稼働用) を含むマップ テーブルが含まれます。
  • #overlay2、更新はより安定しており、 Linux カーネルと Docker のバージョンにはより高い要件があります。
2.4. ネットワーク実装

CNM (Container Network Model) は Docker によってリリースされますコンテナネットワークの標準。 Libnetwork はオープン ソースで、Golang で書かれており、CNM ネットワーク仕様に完全に従っており、CNM の公式実装です。

Libnetwork には 4 つの主要なネットワーク モデルが含まれています:
  • null 空のネットワーク モード、コンテナ ネットワークは提供されません
  • ブリッジ ブリッジ モード、コンテナは相互に通信できます
  • ホスト ホスト ネットワーク モード、コンテナはホスト ネットワークと通信します
  • #コンテナ ネットワーク モード、コンテナは同じネットワーク上に配置され、localhost 経由でアクセスされます

#3. その他の関連

3.1. コンテナ オーケストレーション

Docker 一般的に使用される 3 つのオーケストレーション ツール: Docker Compose、Docker Swarm、Kubernetes。

    Docker Compose は Docker によって買収されたもので、基本的には 1 つのノード上で複数のコンテナを管理およびオーケストレーションできる Python スクリプトです。
  • Docker Swarm は、Docker によって正式に開始されたコンテナ クラスター管理ツールです。Docker API をネイティブにサポートしています。操作が簡単で、TLS 双方向認証をサポートし、Raft プロトコルを使用して、配布を実現します。
  • Kubernetes (Google は、内部 Borg システムによって蓄積された技術設計と実装を利用しています。強力で、数億のコンテナの運用をサポートすることを目指しています。ただし、そのアーキテクチャは比較的複雑で、始めるための敷居が高いです。

3.2. devops における役割

DevOps の全体的な目標は、開発を促進することです。運用および保守担当者と協力し、自動化された手段を通じてソフトウェアの配信サイクル全体を短縮し、ソフトウェアの信頼性を向上させます。

Docker を通じて開発環境を迅速にインストールし、Dockerfile を迅速に統合してイメージを構築し、イメージをプルしてコンテナーを実行してデプロイメントを完了し、コンテナー オーケストレーション ツールと組み合わせて Blue-Green リリースを実現します。

DevOps の開発を促進します。

迅速に継続的に統合して提供できます。

以上がDocker クイック スタート、中心的な概念、および一般的な手順の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はJava后端技术全栈で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?Mar 17, 2025 pm 05:46 PM

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

適切なバージョン化と依存関係管理を備えたカスタムJavaライブラリ(JARファイル)を作成および使用するにはどうすればよいですか?適切なバージョン化と依存関係管理を備えたカスタムJavaライブラリ(JARファイル)を作成および使用するにはどうすればよいですか?Mar 17, 2025 pm 05:45 PM

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?Mar 17, 2025 pm 05:44 PM

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?Mar 17, 2025 pm 05:43 PM

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?Mar 17, 2025 pm 05:35 PM

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール