Dockerコアテクノロジーを最も体系的に習得(概要の共有)
この記事では、Docker コア技術のコンテナー操作、Dockerfile の詳細な説明など、関連する質問をいくつか紹介します。お役に立てれば幸いです。
1. Docker
1. はじめに
- Linux の Cgroup、Namespace、Union FS テクノロジに基づくカーネル、プロセスのカプセル化と分離は、オペレーティング システム レベルの仮想テクノロジです。分離されたプロセスはホストや他の分離されたプロセスから独立しているため、コンテナと呼ばれます。
- 最初の実装は LXC に基づいていました。 LXCは0.7以降は削除されます 自社開発のLibcontainerに切り替えます 1.11からはrunCとContainerdを使用するようにさらに進化しました
- Dockerはさらにファイルシステムからコンテナベースでカプセル化しました、プロセス分離へのネットワーク相互接続などにより、コンテナの作成とメンテナンスが大幅に簡素化され、Docker テクノロジが仮想マシン テクノロジよりも軽量かつ高速になります
2. Docker の利点
- より効率的に使用する システム リソース
- 起動時間の短縮
- 一貫した動作環境
- 継続的な配信と展開
- 移行の容易化
- より簡単な保守と拡張
##2. Docker のインストール
参考記事のインストール: Ubuntu に Docker Engine をインストールする | Docker ドキュメント
3. コンテナ操作
- ##docker run:
- # -IT インタラクション -d 実行中
終了したコンテナを開始します
- ##docker start
コンテナの停止
- docker stop
コンテナプロセスの表示
##docker Inspection
## ファイルをコンテナーにコピーします
docker cp file1
docker はコンテナを閉じずにコンテナを終了します: ctrl q p
#docker はコンテナを終了し、コンテナを閉じます: exit
- ##すべての docker イメージをクエリ
#docker イメージ
##Docker イメージ ウェアハウス
-
#Docker ハブ: https://hub.docker.com
プライベート イメージ ウェアハウスの作成: docker run -d -p 5000:5000 registry
- 共通コマンド
-
: 形式:
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 ["executable","param1","param2"] (実行可能ファイルを実行、優先順位) CMD コマンド param1 param2 (シェル内部コマンドの実行) ["ethtool", "--help"] CMD echo "1111" ENTRYPOINT ["executable", "param1", "param2"] (実行ファイル、優先度) ENTRYPOINT /httpserver CMD [-c] Format:
例: 。 形式:
例:#形式:
ラベル
ENV: 環境変数を設定します
形式:
ENVEXPOSE: 外部インタラクションを指定しますポート
形式:
EXPOSEVOLUME: 永続化ディレクトリの指定に使用されます
形式:
VOLUME [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/
- # コマンドを実行している名前空間を表示します
nsenter -t
- Cgroups の詳細な説明
- Cgroup をシミュレートして制御するCPU リソース
# Set cpuquota
成功が 200% を占めることがわかります。CPU リソースは 1% に減少します。
- シミュレーション中メモリ リソースの制限を超え、OOM によって強制終了される Cgroups
- メモリを消費するプログラムを実行し、watch を使用してメモリ使用量をクエリします
プロセスを cgroups 構成グループに構成します
# OOM によってプログラムが強制終了されるのを待機しています。dmesg は強制終了情報を確認できます。
注: 自己作成した cgroup フォルダーを削除するには、cgroup-tools
# を使用する必要があります。
Docker で使用されているテクノロジーはすべて Linux テクノロジーから派生したものであり、革新的なものはなく、Docker の革新的な点はファイル システムです。
1. 概念:
- 同じ仮想ファイル システムの下に異なるディレクトリをマウントするファイル システム
- メンバー ディレクトリごとに読み取り専用、読み取り書き込み、およびなしの設定をサポートします
- ファイル システムの階層化、読み取り専用権限を持つディレクトリは論理的に変更できます。ここでの変更は増分であり、読み取り専用部分には影響しません。
- 通常の Union FS の使用: 複数のディスクが同じディレクトリにマウントされます。もう 1 つは、読み取り専用部分と書き込み可能なディレクトリを組み合わせる方法です。
2. Union FS
の図 Docker イメージの設計には、レイヤーの概念が導入されています。つまり、ユーザーのイメージ作成操作の各ステップでレイヤー、つまり増分 rootfs (ディレクトリ) が生成され、アプリケーション A とアプリケーション B が配置されているコンテナーが同じ ubuntu オペレーティング システム レイヤーとGolang 環境層 (読み取り専用層) には、それぞれ独自のアプリケーション層と書き込み可能層があります。コンテナーを起動するときに、コンテナーのルート ファイル システムとして UnionFS を介して関連するレイヤーをディレクトリにマウントします。
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
8. Docker ネットワーク
1. インストール ツール
Centos システム:
$ yum install Bridge-utils
Ubuntu システム:
$ apt-get install Bridge-utils
2. Docker ネットワーク モード
- ビルドされたin docker ネットワーク モード
- 1) ホストモード: --net=host で指定します。一連のネットをホストと共有します
Docker ネットワーク論理図ブリッジと NAT
4) コンテナ モード: --net=container:NAME_or_ID を使用して指定します。他のコンテナのネットワーク構成を利用する
- --net=none nginx を作成します
- ネットワーク名前空間の作成
- ## ネットワーク名前空間の作成リンク
-
- ## ネットワーク # を構成するための veth ペア
- を作成します
- B ネットワークを構成する
nginx Docker で eth0 ネットワーク デバイスを生成する
- eth0 の IP ゲートウェイを構成します
# nginx はアクセスできます
Windows も ip 経由でアクセスできるように nat を構成します。
#使用後に指定された nat ルールを削除します
- docker ビデオ チュートリアル
- 」
以上がDockerコアテクノロジーを最も体系的に習得(概要の共有)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











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

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

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

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

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

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

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