Dockerコアとインストールの具体的な使い方

Dockerコアとインストールの具体的な使い方

1. Docker とは何ですか?

(1)DockerはLinuxコンテナ内でアプリケーションを実行するためのオープンソースツールです。軽量の「仮想マシン」です。

ロゴはシロナガスクジラをモチーフにデザインされています。クジラはホストマシンとして、その上のコンテナは独立したコンテナとして理解でき、それぞれに独自のアプリケーションが含まれています。

(2)Dockerと仮想マシンの違い

軽量な仮想化方式として、Docker は従来の仮想マシンに比べて大きな利点があります。

Docker に多くの利点がある理由は、オペレーティング システムの仮想化自体の特性と切り離せません。従来の仮想マシンでは追加の仮想マシン ハイパーバイザーと仮想マシン オペレーティング システム レイヤーが必要ですが、Docker コンテナーはオペレーティング システム レベルで直接仮想化されます。
図に示すように:

(3)Dockerの利用シナリオ

開発者は、クラウド プラットフォームで実行されるアプリケーションを簡単に作成できる必要があります。アプリケーションは基盤となるハードウェアから独立し、いつでもどこでもこれらのリソースにアクセスできる必要があります。これはまさに Docker が提供できるものです。 Docker のコンテナ テクノロジーを使用すると、ホスト上のあらゆるアプリケーション用の軽量でポータブルな自己完結型のコンテナを簡単に作成できます。このコンテナにアプリケーションをパッケージ化すると、再デプロイメントやデバッグなどの単純な繰り返しタスクが簡素化され、作業効率が大幅に向上します。

2. Dockerのコアコンセプトとインストール

(1)鏡

Docker のイメージ (mage) は、コンテナを作成するための基礎となります。仮想マシンのスナップショットと同様に、Docker コンテナ エンジンの読み取り専用テンプレートとして理解できます。たとえば、イメージは完全なCentOSオペレーティングシステム環境であり、CentOSと呼ばれる。
イメージ。MySQL をインストールするアプリケーション (MySQL イメージなど) などがあります。

(2)コンテナ

Dooker のコンテナは、イメージから作成された実行中のインスタンスです。開始、停止、削除が可能です。作成された各コンテナは分離されており、互いに見えなくなるため、プラットフォームのセキュリティが確保されます。コンテナは、簡略化された Linux 環境と考えることができます。Docker はコンテナを使用してアプリケーションを実行および分離します。

(3)倉庫

Docker リポジトリは、イメージを一元的に保存する場所です。独自のイメージを作成したら、push コマンドを使用して、パブリック リポジトリまたはプライベート リポジトリにアップロードできます。このようにしておけば、次回このイメージを別のマシンで使用したいときには、リポジトリからプルするだけで済みます。

(4)Dockerをインストールする

ホストがインターネットにアクセスできる場合は、直接インストールできます。

yumの設定

[root@localhost ~]# rm -rf /etc/yum.repos.d/*

[root@localhost ~]# vim /etc/yum.repos.d/a.repo
[あああ]
名前=asd
ベースURL=ファイル:///メディア
gpgcheck=0
[root@localhost ~]# /dev/cdrom /media/ をマウントします

[root@localhost ~]# yum -y dockerをインストール

インストールが完了したら、Dockerを起動し、起動時に自動的に起動するように設定できます。

[root@localhost ~]# systemctl dockerを起動します

[root@localhost ~]# systemctl docker を有効にする

/etc/systemd/system/multi-user.target.wants/docker.service から /usr/lib/systemd/system/docker.service へのシンボリックリンクを作成しました。
[root@localhost ~]# docker version //Dockerバージョンを表示 クライアント:
 バージョン: 1.13.1
 APIバージョン: 1.26
 パッケージバージョン: docker-1.13.1-75.git8633870.el7.centos.x86_64
 Goバージョン: go1.9.4
 Gitコミット: 8633870/1.13.1
 作成日: 2018年9月28日金曜日 19:45:08
 OS/アーキテクチャ: linux/amd64

サーバ:
 バージョン: 1.13.1
 API バージョン: 1.26 (最小バージョン 1.12)
 パッケージバージョン: docker-1.13.1-75.git8633870.el7.centos.x86_64
 Goバージョン: go1.9.4
 Gitコミット: 8633870/1.13.1
 作成日: 2018年9月28日金曜日 19:45:08
 OS/アーキテクチャ: linux/amd64
 実験的: 偽

サーバーとクライアントに分かれている

3.Dockerイメージの操作

(1)ミラーを検索する(前提条件:コンピュータがインターネットにアクセスできる)

[root@localhost ~]# docker search dhcp

インデックス 名前 説明 星 公式 自動化
docker.io docker.io/networkboot/dhcpd DHCP サーバーを実行するのに適しています... 43 [OK]
docker.io docker.io/joebiellik/dhcpd Alpine Linux 15 上で動作する DHCP サーバー [OK]
docker.io docker.io/gns3/dhcp dnsmasq 3 を使用した GNS3 用の DHCP コンテナ [OK]
docker.io docker.io/instantlinux/dhcpd-dns-pxe 小さな Alpi から DNS、DHCP、TFTP を提供します... 2 [OK]
docker.io docker.io/ictu/dhcpd-tftpd dhcpd tftpd コンテナ 1 [OK]
docker.io docker.io/marcelwiget/dhcptester シンプルな DHCP クライアントシミュレーション

(2)画像の取得

[root@localhost ~]# docker pull docker.io/network/dhcpd //上記の先頭にあるdhcpをダウンロードします

別の方法は、ダウンロードしたdhcpを挿入することです

CDを作成してホストに挿入する

[root@localhost ~]# /dev/cdrom /media/ をマウントします
[root@localhost ~]# cd /media/
[root@localhost メディア]# ls
DHCP
[root@localhost メディア]# cp dhcp /
[root@localhost メディア]#
[root@localhost /]# docker load < dhcp
fccbfa2912f0: レイヤーをロード中 116.9 MB/116.9 MB
e1a9a6284d0d: レイヤーをロード中 15.87 kB/15.87 kB
ac7299292f8b: レイヤーをロード中 14.85 kB/14.85 kB
a5e66470b281: レイヤー 5.632 kB/5.632 kB を読み込んでいます
a8de0e025d94: レイヤー 3.072 kB/3.072 kB を読み込んでいます
e2e29955c5aa: レイヤーをロード中 12.7 MB/12.7 MB
12e14fab4dd4: レイヤーをロード中 49.15 kB/49.15 kB
47bdfd3bbf39: レイヤー 4.096 kB/4.096 kB を読み込んでいます
ロードされたイメージ: docker.io/networkboot/dhcpd:latest

画像をローカルコンピュータにダウンロードする

(3)画像情報を見る

[root@localhost /]# docker イメージ
リポジトリ タグ イメージ ID //イメージ ID 作成サイズ
docker.io/networkboot/dhcpd 最新 6f98b6b9b486 19 か月前 125 MB
  • リポジトリ: イメージが属するリポジトリ。
  • TAG: 同じリポジトリ内の異なるイメージをマークするイメージのタグ情報。
  • 画像 ID: 画像を一意に識別する画像の一意の ID 番号。
  • CREATED: 画像が作成された時刻。
  • CREATED: 画像が作成された時刻。
[root@localhost /]# docker examine 6f98b6b9b486 \イメージIDの詳細を表示

イメージの詳細情報には、作成時間、システム バージョン、ホスト名、ドメイン名、ユーザー、ボリューム、ラベル、オペレーティング システム、デバイス ID などの情報が含まれます。

[root@localhost /]# docker タグ docker.io/networkboot/dhcpd dhcp:dhcp 
最初の dhcp: 名前 2 番目の dhcp: ラベル

(4)画像を削除する

[root@localhost /]# docker rmi dhcp:dhcp
タグなし: dhcp:dhcp

4.Dockerコンテナの操作

コンテナは Docker のもう 1 つの中核概念です。簡単に言うと、コンテナとは、イメージの実行中のインスタンス、独立して実行されるアプリケーションまたはアプリケーションのグループ、およびファイル システム、システム ライブラリ、シェル環境など、必要なオペレーティング環境です。イメージは読み取り専用テンプレートであり、コンテナはこの読み取り専用テンプレートに追加の書き込み可能なレイヤーを提供します。

(1)コンテナの作成と起動

[root@localhost /]# docker create -it docker.io/networkboot/dhcpd /bin/bash

e392026ddd186d01cbd3306acae15f2f197dc9874a84ea241d347c7fe20a0946

一般的なオプション: -i はコンテナの入力を開いたままにすることを意味します。 -t は Docker に疑似端末を割り当てさせることを意味します。

[root@localhost /]# docker ps -a \\すべてのコンテナの実行ステータスを表示します。コンテナID イメージ コマンド 作成ステータス ポート 名前
e392026ddd18 docker.io/networkboot/dhcpd "/entrypoint.sh /b..." 約 1 分前 elegant_goldwasser が作成

出力情報には、コンテナ ID 番号、ロードされたイメージ、実行中のプログラム、作成時刻、現在のステータス、ポート マッピング、コンテナ名などが表示されます。ステータス列「作成済み」は、現在のコンテナが新しく作成され、停止状態であることを示します。

[root@localhost /]# docker start e392026ddd18 \\上記のIDのコンテナを起動します
e392026ddd18

コンテナが起動すると、コンテナのステータス列が UP に変わり、コンテナが起動状態にあることがわかります。

(2)コンテナの運用と終了

[root@localhost /]# docker stop コンテナID

(3)コンテナの進入

[root@localhost /]# docker exec -it e392026ddd18 /bin/bash
ルート@e392026ddd18:/#

ユーザーは作成されたターミナルを通じてコマンドを入力し、exit コマンドを通じてコン​​テナを終了できます。

ルート@e392026ddd18:/# ls
bin core entrypoint.sh ホーム lib64 mnt proc 実行 srv tmp var
boot dev etc lib media opt root sbin sys usr
root@e392026ddd18:/# 終了
出口

(4)コンテナの輸出入

コンテナーが最小化されているため、一部のコマンドが使用できないため、構成のためにコンテナーからローカル コンピューターにエクスポートし、コンテナーにインポートする必要があります。

エクスポートコマンドは次のとおりです。

[root@localhost /]# docker export e392026ddd18>/etc/dhcp/dhcpd.conf

乱数はコンテナID番号です

設定用に dhcp メイン設定ファイルをエクスポートします。

インポートコマンドは次のとおりです。

[root@localhost /]# docker import /etc/dhcp/dhcpd.conf > e392026ddd18

(5)コンテナの削除

終了したコンテナを削除するには、dockerrm コマンドを使用できます。

イメージには複数のコンテナを含めることができます

[root@localhost /]# docker stop e392026ddd18 \\まずe392026ddd18を停止します
[root@localhost /]# docker rm e392026ddd18 \\e392026ddd18を再度削除
[root@localhost /]# docker ps -a
コンテナID イメージ コマンド 作成ステータス ポート名

5. Docker リソース制御

Cgroup は Controlgroup の略で、Linux カーネルが提供する、使用される物理リソースを制限するためのメカニズムです。これらのリソースには、主に CPU、メモリ、blkio が含まれます。 以下では、Docker がこれら 3 つの側面での管理に Cgroup メカニズムをどのように使用するかについて説明します。

(1)CPU使用率の制限

たとえば、コンテナ 60ff4594cc73 の CPU 使用率を 20000 に設定し、CPU 使用率制限を 20% に設定します。

[root@localhost ~]# echo 20000 &gt;/sys/fs/ cgroup/ cpu/ system.slice/docker-60ff4594cc73b5474477 636b25b41f 16e1 66a3606aed22 6522d420d0c296990d.scope/cpu.cfs_quota_us

(2)複数のタスクがCPUを比例して共有する

たとえば、新しく作成した 3 つのコンテナー A、B、C を実行し、CPU リソースを 1:1:2 の比率で占有するには、次のように実行します。

[root@localhost /]# docker run -tid --cpu-shares 1024 +ミラーA
[root@localhost /]# docker run -tid --cpu-shares 1024 +ミラーB
[root@localhost /]# docker run -tid --cpu-shares 2048 +image C

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • CentOS 7でのDockerのインストール方法とコマンド操作方法を詳しく解説
  • CentOS7は起動できない問題を解決するためにdockerをインストールします
  • Centos7にdockerをインストールするための詳細な手順
  • Docker に MySQL インスタンスをインストールして実行する
  • CentOS 7にDocker環境をインストールする方法と注意点
  • docker centos7にsshをインストールするための具体的な手順
  • Centos 6.5 に docker をインストールする手順 (簡潔版)
  • CentOS 7.2 で Docker バージョン 1.12.3 をインストールする詳細な方法

<<:  MySQL 8.x msi バージョンのインストール チュートリアル (画像とテキスト付き)

>>:  SQL Server の完全バックアップに関する珍しいエラーと解決策

推薦する

MySQL MyISAM デフォルト ストレージ エンジンの実装原則

デフォルトでは、MyISAM テーブルはディスク上に .frm (テーブル構造ファイル)、.MYD ...

MySQL 条件付きクエリと使用法および優先順位の例の分析

この記事では、例を使用して、MySQL 条件クエリ and or の使用方法と優先順位を説明します。...

Xampp サーバーで MySQL パスワードを変更する方法 (画像付き)

今日、PHP で作業しているときに、Xampp サーバーに付属の mysql データベースを使用する...

MySQL で distinct メソッドを使用する詳細な例

明確な意味: distinctive は、一意のレコードの数を照会するために使用されます。つまり、d...

XHTML Web ページ チュートリアル

<br />この記事は主に、初心者にXHTMLの基本知識と、XHTMLとHTMLの違いを...

MySQLのビューの詳細な説明

ビュー: MySQL のビューはテーブルと多くの類似点があります。ビューも複数のフィールドと複数のレ...

MySQL Innodb ストレージ構造と Null 値の保存の詳細な説明

背景:テーブルスペース: すべての INNODB データはテーブルスペース (共有テーブルスペース)...

Windows (x86、64 ビット) で MySQL 5.7.17 無料インストール バージョンをアップグレードするための詳細なチュートリアル

Laravel 5.4 のデフォルトの utf8mb64 文字エンコーディングをサポートするには、M...

MyCat を使用して Linux で MySQL マスター/スレーブの読み取り/書き込み分離を実装する方法

目次Linux - MyCat を使用して MySQL マスター スレーブの読み取り書き込み分離を実...

MySQL の遅いクエリを見つける方法

序文誰もが日常業務で SQL の最適化を経験したことがあると思います。したがって、最適化の前に、遅い...

Webフロントエンド開発CSS関連チームコラボレーション

フロントエンド開発部門は成長し、スタッフも増加し、技術も向上しています。 CSSer はフロントエン...

Vue+Echart 棒グラフで疫病データ統計を実現

目次1. まずプロジェクトにechartsをインストールします2. echartsに縦棒グラフテンプ...

Vueでaxiosをカプセル化する方法

目次1. インストール1. はじめに3. インターフェースルートアドレス4. 使用例4.1 ダウンロ...

MySQLのダウンロードとインストールのプロセスの詳細な説明

1: MySqlをダウンロードする公式サイトのダウンロードアドレス: https://dev.mys...

HTMLコードに基づく画像断片化読み込み機能の実装

今日は断片化された画像の読み込み効果を実装します。効果は次のとおりです。 これを 3 つのステップで...