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

リリース: 2023-08-23 14:56:34
転載
770 人が閲覧しました


#友人が週末に 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 までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート