目次
1. Docker
1. はじめに
2. Docker の利点
参考記事のインストール: Ubuntu に Docker Engine をインストールする | Docker ドキュメント
docker はコンテナを閉じずにコンテナを終了します: ctrl q p
#Docker ハブ: https://hub.docker.com
と同様にネットワーク リソースにアクセスできます。形式: " > などのタイプは自動的に解凍され、wget と同様にネットワーク リソースにアクセスできます。形式:
Format:
形式:
形式:
5. Linux NameSpace の詳細な説明
NamesSpace の詳細な説明:
NameSpace の一般的な操作
1. 概念:
2. Union FS
1. インストール ツール
Centos システム:
Windows も ip 経由でアクセスできるように nat を構成します。
ホームページ 運用・保守 Docker Dockerコアテクノロジーを最も体系的に習得(概要の共有)

Dockerコアテクノロジーを最も体系的に習得(概要の共有)

Feb 04, 2022 am 07:00 AM
docker

この記事では、Docker コア技術のコンテナー操作、Dockerfile の詳細な説明など、関連する質問をいくつか紹介します。お役に立てれば幸いです。

Dockerコアテクノロジーを最も体系的に習得(概要の共有)

1. Docker

1. はじめに

  • Linux の Cgroup、Namespace、Union FS テクノロジに基づくカーネル、プロセスのカプセル化と分離は、オペレーティング システム レベルの仮想テクノロジです。分離されたプロセスはホストや他の分離されたプロセスから独立しているため、コンテナと呼ばれます。
  • 最初の実装は LXC に基づいていました。 LXCは0.7以降は削除されます 自社開発のLibcontainerに切り替えます 1.11からはrunCとContainerdを使用するようにさらに進化しました
  • Dockerはさらにファイルシステムからコンテナベースでカプセル化しました、プロセス分離へのネットワーク相互接続などにより、コンテナの作成とメンテナンスが大幅に簡素化され、Docker テクノロジが仮想マシン テクノロジよりも軽量かつ高速になります

2. Docker の利点

  • より効率的に使用する システム リソース
  • 起動時間の短縮
  • 一貫した動作環境
  • 継続的な配信と展開
  • 移行の容易化
  • より簡単な保守と拡張
##3. Docker と仮想マシンの比較

##2. Docker のインストール

参考記事のインストール: Ubuntu に Docker Engine をインストールする | Docker ドキュメント

3. コンテナ操作

##開始:

    ##docker run:
  • # -IT インタラクション

    -d 実行中
--P ポート マッピング

--V ディスク ハング

終了したコンテナを開始します

    ##docker start

コンテナの停止

    docker stop

コンテナプロセスの表示

#docker ps
  • ##コンテナの詳細の表示

##docker Inspection

  • ## ファイルをコンテナーにコピーします

docker cp file1 :/file_to_path

  • docker はコンテナを閉じずにコンテナを終了します: ctrl q p

#docker はコンテナを終了し、コンテナを閉じます: exit

    ##すべての docker イメージをクエリ
  • #docker イメージ

  • ##Docker イメージ ウェアハウス

  • #Docker ハブ: https://hub.docker.com

    プライベート イメージ ウェアハウスの作成: docker run -d -p 5000:5000 registry
4. Dockerfile の詳細な説明

Dockerfile は通常、イメージの基本情報、メンテナンス情報、イメージの操作指示、コンテナーの起動操作指示の 4 つの部分に分かれています。

    共通コマンド
  • From: 基本的なミラー イメージを指定します。最初の指示である必要があります

: 形式:

From & LT; Image & GT FROM : <タグ>

From & LT; Image & GT;@& LT; Digest & GT;

## 例:

## Ubuntu

#AINTAINER: メンテナンス情報

# この #形式:

MAINTAINER

MAINTAINER リボン

RUN: コマンドイメージのビルド時に実行

形式:

シェル実行: RUN

実行: RUN ["executable", "param1", "param2" "]

例:

RUN apk update

RUN ["/etc/execfile", "arg1", "arg2"]

RUN apt-get update && apt 2 つのコマンド -get install は常に && で接続されます。そうでない場合、apt-get update ビルド層がキャッシュされ、新しいパッケージのインストールに失敗します

ADD: ローカル ファイルをコンテナに追加します。tar

などのタイプは自動的に解凍され、wget と同様にネットワーク リソースにアクセスできます。形式:

ADD < ;src> ...

例:

ADD bin/amd64/httpserver /httpserver

COPY: この関数は ADD と似ています。ただし、ファイルは解凍されず、ネットワーク リソースにアクセスできません

Dockerfile でマルチステージを使用する: Dockerfile でマルチステージ (マルチステージ ビルド) - spakerdev - Blog Park

Format :

COPY ...

例:

COPYbin/amd64/httpserver /httpserver

CMD:コンテナーの構築後に呼び出されます。つまり、コンテナーの開始時にのみ呼び出されます。

Format:

CMD ["executable","param1","param2"] (実行可能ファイルを実行、優先順位)

CMD ["param1","param2"] (ENTRYPOINT が設定されている場合は、ENTRYPOINT を直接呼び出してパラメータを追加します)

CMD コマンド param1 param2 (シェル内部コマンドの実行)

例:

["ethtool", "--help"]

CMD echo "1111"

ENTRTPOINT: コンテナを実行可能にするように構成します

形式:

ENTRYPOINT ["executable", "param1", "param2"] (実行ファイル、優先度)

ENTRYPOINT コマンド param1 param2 (シェル内部コマンド)


例:

ENTRYPOINT /httpserver

CMD [-c]

LABAL: ソース データを画像に追加するために使用されます

#形式:

ラベル = = = ...

例:

LABEL multi.label1="value1" multi.label2="value2" other="value3"

ENV: 環境変数を設定します

形式:

ENV

例:

ENV MY_SERVICE_PORT=80 UDP_PORT=90

EXPOSE: 外部インタラクションを指定しますポート

形式:

EXPOSE [...]

例:

EXPOSE 80

EXPOSE 80/tcp

EXPOSE 80 90

VOLUME: 永続化ディレクトリの指定に使用されます

形式:

VOLUME []

例:

VOLUME ["/data", "/usr1/jenkins"]

USER: 実行を指定しますコンテナのユーザー名または UID、およびその後の RUN でも、指定されたユーザーが使用されます。

形式: USER ユーザー

USER ユーザー:グループ

USER uid
USER uid:gid
USER ユーザー:gid
USER uid:group

例:
USER www


ARG: ビルド ランタイムに渡される変数を指定するために使用されます

形式: ARG [=]

例:

ARG build_user=ribbon


#

5. Linux NameSpace の詳細な説明

  • NamesSpace の詳細な説明:

Linux NameSpace_Frank_Abagnale のブログ - CSDN ブログ この記事では、詳細について説明します。この記事を参照してください。

  • NameSpace の一般的な操作

  • 現在のシステムの名前空間を表示します:

lsns -t

  • プロセスの名前空間を表示します:

ls -la /proc//ns/

    # コマンドを実行している名前空間を表示します

nsenter -t -n

6. Linux Cgroups の詳細説明

  • Cgroups の詳細な説明

Container Core: cgroups - Brief Book 詳細については、この記事を参照してください。

  • Cgroup をシミュレートして制御するCPU リソース

リソースを制御する Cgroup の効果をよく理解するためにシミュレーションを実行します。最初に cpudemo フォルダーを作成します。

トップを実行します。ビジーループが 2 つの CPU リソースを消費していることがわかります

cgroup プロセス構成グループにプロセスを追加します

# Set cpuquota

成功が 200% を占めることがわかります。CPU リソースは 1% に減少します。

    シミュレーション中メモリ リソースの制限を超え、OOM によって強制終了される Cgroups
  • メモリを消費するプログラムを実行し、watch を使用してメモリ使用量をクエリします

プロセスを cgroups 構成グループに構成します

最大メモリ サイズを設定します。

# OOM によってプログラムが強制終了されるのを待機しています。dmesg は強制終了情報を確認できます。

注: 自己作成した cgroup フォルダーを削除するには、cgroup-tools

# を使用する必要があります。

#7. Union FS

Docker で使用されているテクノロジーはすべて Linux テクノロジーから派生したものであり、革新的なものはなく、Docker の革新的な点はファイル システムです。

1. 概念:

  • 同じ仮想ファイル システムの下に異なるディレクトリをマウントするファイル システム
  • メンバー ディレクトリごとに読み取り専用、読み取り書き込み、およびなしの設定をサポートします
  • ファイル システムの階層化、読み取り専用権限を持つディレクトリは論理的に変更できます。ここでの変更は増分であり、読み取り専用部分には影響しません。
  • 通常の Union FS の使用: 複数のディスクが同じディレクトリにマウントされます。もう 1 つは、読み取り専用部分と書き込み可能なディレクトリを組み合わせる方法です。

2. Union FS

の図 Docker イメージの設計には、レイヤーの概念が導入されています。つまり、ユーザーのイメージ作成操作の各ステップでレイヤー、つまり増分 rootfs (ディレクトリ) が生成され、アプリケーション A とアプリケーション B が配置されているコンテナーが同じ ubuntu オペレーティング システム レイヤーとGolang 環境層 (読み取り専用層) には、それぞれ独自のアプリケーション層と書き込み可能層があります。コンテナーを起動するときに、コンテナーのルート ファイル システムとして UnionFS を介して関連するレイヤーをディレクトリにマウントします。

#3. コンテナ ストレージ ドライバー

4. Union FS をシミュレートして、効果


現在のバージョンの docker は overlayFS ストレージ ドライバーを使用しているため、

overlay マウント方法 を使用して実験を行います。overlayfs は 3 つのディレクトリを通過します。上位ディレクトリと作業ディレクトリが実装されています。下位ディレクトリは複数存在できます。作業ディレクトリは基本的な作業ディレクトリです。マウント後、内容はクリアされ、使用中にその内容はユーザーには表示されません。最後に、ジョイントユーザーに表示される統合されたビューは、マージされたディレクトリと呼ばれます。

次のコマンドを実行します:

mkdir upper lower merged work
echo "lower" > lower/in_lower.txt
echo "from lower" > lower/in_both.txt
echo "from upper" > upper/in_both.txt
echo "upper" > upper/in_upper.txt
path=$(pwd)
mount -t overlay overlay -o lowerdir=${path}/lower,upperdir=${path}/upper,workdir=${path}/work ${path}/merged
ログイン後にコピー

## オーバーレイ ストレージ ドライバー ファイルが次のコマンドを使用してマウントされていることがわかります。効果。実験終了後、環境を復元するには、まずマージされたディレクトリをアンマウントし、次に 4 つのディレクトリを削除する必要があります。他のディレクトリを先に削除すると、rm: 'merged/' を削除できません: Device or resource Busy が表示される場合があります。そのため、マージされたディレクトリは削除されません。

8. Docker ネットワーク

1. インストール ツール

Centos システム:

$ yum install Bridge-utils

Ubuntu システム:

$ apt-get install Bridge-utils

2. Docker ネットワーク モード

    ビルドされたin docker ネットワーク モード

docker run 実行するネットワーク モードを選択します
  • 1) ホストモード: --net=host で指定します。一連のネットをホストと共有します

## 2) なしモード: --net=none を使用します。指定された。ネットワーク構成は自分で構成する必要があります

3) ブリッジ モード: --net=bridge を使用して指定します (デフォルト設定)。 。

Docker ネットワーク論理図ブリッジと NAT

4) コンテナ モード: --net=container:NAME_or_ID を使用して指定します。他のコンテナのネットワーク構成を利用する

# ネットワークモード図はおおよそ以下のとおりです

3. Docker の動作をシミュレートしてネットワーク ブリッジを開始します

  • --net=none nginx を作成します

  • ネットワーク名前空間の作成

    ## ネットワーク名前空間の作成リンク

  • ## ネットワーク # を構成するための veth ペア

  • を作成します

  • B ネットワークを構成する

nginx Docker で eth0 ネットワーク デバイスを生成する

  • eth0 の IP ゲートウェイを構成します

# nginx はアクセスできます

  • Windows も ip 経由でアクセスできるように nat を構成します。

#使用後に指定された nat ルールを削除します

推奨される学習: 「
    docker ビデオ チュートリアル

以上がDockerコアテクノロジーを最も体系的に習得(概要の共有)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホット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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Dockerによってコンテナを出る方法 Dockerによってコンテナを出る方法 Apr 15, 2025 pm 12:15 PM

Dockerコンテナを終了する4つの方法:コンテナ端子でCtrl Dを使用するコンテナターミナルに出口コマンドを入力しますDocker stop&lt; container_name&gt;コマンドを使用するDocker Kill&lt; container_name&gt;ホストターミナルのコマンド(フォース出口)

Dockerのファイルを外部にコピーする方法 Dockerのファイルを外部にコピーする方法 Apr 15, 2025 pm 12:12 PM

Dockerの外部ホストにファイルをコピーする方法:Docker CPコマンドを使用:Docker CP [Options]&lt; Container Path&gt; &lt;ホストパス&gt;。データボリュームの使用:ホストにディレクトリを作成し、-vパラメーターを使用してコンテナを作成するときにディレクトリをコンテナにマウントして、双方向ファイルの同期を実現します。

Dockerによってコンテナを起動する方法 Dockerによってコンテナを起動する方法 Apr 15, 2025 pm 12:27 PM

Docker Containerの起動手順:コンテナ画像を引く:「Docker Pull [Mirror Name]」を実行します。コンテナの作成:「docker create [options] [mirror name] [コマンドとパラメーター]」を使用します。コンテナを起動します:「docker start [container name or id]」を実行します。コンテナのステータスを確認してください:コンテナが「Docker PS」で実行されていることを確認します。

Dockerを再起動する方法 Dockerを再起動する方法 Apr 15, 2025 pm 12:06 PM

Dockerコンテナを再起動する方法:コンテナID(Docker PS)を取得します。コンテナを停止します(docker stop&lt; container_id&gt;);コンテナを起動します(docker start&lt; container_id&gt;);再起動が成功していることを確認します(Docker PS)。その他の方法:Docker Compose(Docker-Compose Restart)またはDocker API(Dockerドキュメントを参照)。

Dockerコンテナの名前を確認する方法 Dockerコンテナの名前を確認する方法 Apr 15, 2025 pm 12:21 PM

すべてのコンテナ(Docker PS)をリストする手順に従って、Dockerコンテナ名を照会できます。コンテナリストをフィルタリングします(GREPコマンドを使用)。コンテナ名(「名前」列にあります)を取得します。

DockerによるMySQLを開始する方法 DockerによるMySQLを開始する方法 Apr 15, 2025 pm 12:09 PM

DockerでMySQLを起動するプロセスは、次の手順で構成されています。MySQLイメージをプルしてコンテナを作成および起動し、ルートユーザーパスワードを設定し、ポート検証接続をマップしてデータベースを作成し、ユーザーはすべての権限をデータベースに付与します。

Dockerの画像を更新する方法 Dockerの画像を更新する方法 Apr 15, 2025 pm 12:03 PM

Docker画像を更新する手順は次のとおりです。最新の画像タグ新しい画像をプルする新しい画像は、特定のタグのために古い画像を削除します(オプション)コンテナを再起動します(必要に応じて)

Docker用のコンテナを作成する方法 Docker用のコンテナを作成する方法 Apr 15, 2025 pm 12:18 PM

Dockerでコンテナを作成します。1。画像を引く:Docker Pull [ミラー名]2。コンテナを作成:Docker Run [Options] [Mirror Name] [コマンド]3。コンテナを起動:Docker Start [Container Name]

See all articles