記事ディレクトリ
Linux 運用保守エンジニアの面接での質問 (7)
希望の仕事が見つかるよう、皆さんの幸運を祈っています。
継続的な学習がなくなることはありません。
地球は爆発しないし、私たちは休暇も取らない。
チャンスは常に準備ができている人に与えられます。
さあ、労働者を殴ってください!
1 一般的に使用される ansible モジュールとは何ですか
- ピン
- 指図
- シェル
- 脚本
- コピー
- フェッチ
- ファイル
- うーん
- サービス
- ユーザー
- グループ
- ラインインファイル
- 交換
- 設定
2 ロールを使用して Ansible によって整理されたディレクトリ構造について説明します
.travis.yml
README.md
defaults/
main.yml
files/
handlers/
main.yml
meta/
main.yml
tasks/
main.yml
templates/
tests/
inventory
test.yml
vars/
main.yml
3 docker 6 つの名前空間 名前空間
- MNT 名前空間 (マウント): ディスク マウント ポイントとファイル システムの分離機能を提供します。
- IPC 名前空間 (プロセス間通信): セマフォ、メッセージ キュー、共有メモリなどのプロセス間通信の分離機能を提供します。
- UTS 名前空間 (UNIX タイムシェアリング システム): カーネル、ホスト名、およびドメイン名の分離機能を提供します。
- PID 名前空間 (プロセス識別): プロセス分離機能を提供します。
- ネット名前空間 (ネットワーク): ネットワーク デバイス、ネットワーク スタック、ポートなどを含むネットワーク分離機能を提供します。
- ユーザー名前空間 (ユーザー): ユーザーとグループを含むユーザー分離機能を提供します。
4 cgroup の役割
cgroupsという名前は、 control groupsの略語に由来しており、CPU、メモリ、ディスク、ネットワーク帯域幅など、プロセス グループが使用できるリソースの上限を制限、制御、分離するための Linux カーネルの機能です。さらに、プロセスの優先度の設定、リソースの測定、リソースの制御(プロセスなどの動作の一時停止と再開など)も可能です。
5 runcの役割
Runc はコンテナのランタイムであり、コンテナを実行するための標準のオープンソース クライアントです。OCI (Open Container Consortium) 標準に基づいて構築されており、Linux コンテナだけでなく Windows コンテナでも使用できます。Runc の機能は、Linux および Windows でコンテナーを別のプロセスとして実行することであり、コマンド ラインまたは RPC インターフェイスを通じて制御できます。コンテナーの作成、開始、停止、強制終了などのライフサイクルを管理できます。
docker でよく使用される 6 つのコマンド
言いたいことをいくつか選んでください。すべてを言う必要はありません。面接官が何か付け加えることはないか尋ねたら、さらにいくつか言うことができます。
- build: Dockerfile からイメージをビルドします
- commit: コンテナへの変更から新しいイメージを作成します
- cp: コンテナとローカル ファイル システムの間でファイル/フォルダーをコピーします。
- 作成: 新しいコンテナを作成します
- events: サーバーからリアルタイムイベントを取得します。
- exec: 実行中のコンテナでコマンドを実行します。
- 履歴: ミラーリングの履歴を表示します。
- 画像: リスト画像
- import: tarball からコンテンツをインポートしてファイルシステムイメージを作成します
- info: システム全体の情報を表示します
- Inspection: Docker オブジェクトに関する低レベルの情報を返します。
- ロード: tarball または標準入力から画像をインポートします
- ログイン: Docker リポジトリにログインします。
- logs: コンテナのログを取得します。
- ps: コンテナのリストを表示します
- pull: リポジトリからイメージまたはリポジトリをプルします。
- Push: イメージまたはリポジトリをウェアハウスにプッシュします。
- rm: 1 つ以上のコンテナを削除します
- rmi: 1 つ以上のミラーを削除します
- run: 新しいコンテナでコマンドを実行します。
- save: 1 つ以上のイメージを tarball に保存します (デフォルトでは stdout にストリーミングします)。
- タグ: SOURCE_IMAGE を参照するタグ TARGET_IMAGE を作成します
- version: Docker バージョン情報の表示
7 Docker ストレージ エンジンとは何ですか、またその違いは何ですか
- AUFS (Another UnionFS) は、Union FS の一種で、ファイルレベルのストレージドライバーです。AUFS を簡単に理解すると、多層ファイルシステムを統合ファイルシステムに共同でマウントすることです。このファイルシステムは、ファイル層を重ね合わせたり、変更したりすることができます。レイヤーごとに、最上位レイヤーのみが書き込み可能レイヤーで、下位レイヤーはすべて読み取り専用レイヤーで、Docker に対応し、最上位レイヤーはコンテナーレイヤー、最下位レイヤーはイメージレイヤーです。
- Overlay も Union FS の一種で、AUFS マルチレイヤと比較して、Overlay には上位ファイル システムと下位ファイル システムの 2 つのレイヤしかなく、それぞれ Docker のコンテナ レイヤ (上位) とイメージ レイヤ (下位) を表します。ファイルを変更する必要がある場合、CopyWを使用して読み取り専用の下位層から書き込み可能な上位層にファイルをコピーすると、その結果も上位層に保存されます。
- デバイス マッパーは、論理デバイスから物理デバイスへのマッピング フレームワーク メカニズムを提供します。上記の AUFS と OverlayFS はどちらもファイル レベルのストレージですが、デバイス マッパーはブロック レベルのストレージです。すべての操作は、ファイルではなくブロックに対して直接実行されます。CentOS 7.2 および RHEL7.2 のカーネル バージョンは overlay2 をサポートしていないため、デフォルトのストレージ ドライバーは 100 GB のデータ容量のみをサポートしており、パフォーマンスが良くありません。現在の新しいバージョンの CentOS は既に overlay2 をサポートしているため、overlay2 を使用することをお勧めします。このストレージ エンジンは Docker Engine 18.09 で非推奨になりました。
- ZFS(Sun-2005)/btrfs(Oracle-2007): 現在広く使用されていません
- vfs: テスト環境で使用され、コピーオンライトが使用できない状況に適しています。このストレージ ドライバーはパフォーマンスが低いため、通常、運用環境での使用は推奨されません。
8 Docker コンテナに入るにはいくつかの方法がありますが、違いは何ですか
- アタッチコマンドを使用します。dockerattach コンテナ名、attach は vnc に似ており、操作は同じコンテナの複数のセッション インターフェイスで同期的に表示されます。このメソッドを使用してコンテナに入るすべての操作は同期的に表示され、コンテナは終了後に自動的に閉じますexit を使用する場合は、シェル環境のコンテナに入る必要がありますが、これは推奨されません。
- execコマンドを使用します。実行中のコンテナーが新しいプロセスを開始するとき、単一のコマンドを実行し、このメソッドを使用してコンテナー テスト環境に入ることができます。終了するには exit を使用しますが、コンテナーはまだ実行中です。これをお勧めします。
- 実行コマンドを使用します。run コマンドはコンテナーを作成して開始できます。
- コンテナにはsshを使用します。イメージ (またはコンテナー) に SSH サーバーをインストールし、ユーザーのパスワードを設定する必要がありますが、これはお勧めできません。
- nsenter コマンドを使用します。nsenter コマンドは、PID を介してコンテナーに入る必要があり、終了後も通常どおり実行されます。ただし、事前にコンテナーの PID を取得するには、docker Inspection を使用する必要があります。現在、この方法はほとんど使用されません。このツールは、 util-linux パッケージ。
9 Dockerfile の共通手順
言いたいことをいくつか選んでください。すべてを言う必要はありません。面接官が何か付け加えることはないか尋ねたら、さらにいくつか言うことができます。
- FROM: ベースイメージを指定します
- LABEL: 画像メタデータを指定します
- RUN: シェルコマンドを実行します。
- ENV: 環境変数を設定する
- コピー: テキストをコピーします
- 追加: ファイルをコピーして解凍します
- CMD:コンテナ起動コマンド
- ENTRYPOINT: エントリーポイント
- ARG: ビルドパラメータ
- ボリューム: 匿名ボリューム
- EXPOSE: ポートを公開します
- WORKDIR: 作業ディレクトリを指定します。
- ONBUILD: 子イメージが親イメージを参照するための手順
- USER: 現在のユーザーを指定します
- ヘルスチェック: ヘルスチェック
- STOPSIGNAL: コンテナから出る信号
- SHELL:指定shell
10 コンテナデータの永続保存方法
- データ ボリューム: ホスト ディレクトリをコンテナの指定されたディレクトリに直接マウントします。この方法が推奨されており、より一般的に使用されます。
- ホストのディレクトリまたはファイル形式を指定します。 -v <ホストの絶対パスのディレクトリまたはファイル>:<コンテナのディレクトリまたはファイル>[:ro]
- 匿名ボリューム。コンテナ内のパスのみを指定します: -v <コンテナ内のパス>
- ボリュームに名前を付けます: -v <ボリューム名>:<コンテナ ディレクトリ パス>
- データ ボリューム コンテナ: ホスト領域を間接的に使用するデータ ボリューム コンテナは、ホストのディレクトリを特別なデータ ボリューム コンテナにマウントし、他のコンテナがデータ ボリューム コンテナを通じてホストのデータを読み書きできるようにします。この方法は一般的には使用されません。
- --volumes-from <データ ボリューム コンテナ>
上記の面接の質問は個人的な要約です。順序に関係なく、思いついたことを自由に書いてください。文章に何か問題がある場合は、コメントしてメッセージを残してください。すぐに修正します。
元のリンク: Linux 運用保守エンジニアの面接の質問 (7)。