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 の完全バックアップに関する珍しいエラーと解決策

推薦する

Navicat を仮想マシン MySQL に接続する際によくあるエラーと解決策

質問1 解決するサービスを開始します: service mysqld start; /sbin/ip...

docker runとstartの違い

docker における実行と開始の違いDocker run はミラーイメージを指定します。そしてdo...

MySQL の繰り返し読み取りレベルでファントム読み取りを解決できますか?

導入データベース理論についてさらに学んでいくうちに、さまざまな分離レベルによって起こり得る問題につい...

Vueはプライベートフィルターと基本的な使用法を定義します

プライベート フィルターとグローバル フィルターのメソッドと概念は同じですが、プライベート フィルタ...

Vue Nativeを使用したモバイルアプリケーションの構築プロセスの完全な記録

目次序文Vue Nativeの機能宣言的レンダリング双方向バインディングVue.js エコシステムの...

MySQL全文検索の使用例

目次1. 環境整備2. データの準備3. ショーを始める4. 単語分割エンジン要約する参考文献1. ...

Linux で MySQL をインストールして設定する

システム: Ubuntu 16.04LTS 1\公式サイトからmysql-5.7.18-linux-...

JavaScript でオブザーバー パターンを実装する方法

目次概要オブザーバーパターンの応用シナリオオブザーバーパターンの実装要約する概要オブザーバー パター...

Apple 電卓の JS 実装

この記事の例では、Appleの電卓を実装するためのJSの具体的なコードを参考までに共有しています。具...

Linux での MySQL 5.7.18 バイナリ パッケージのインストール チュートリアル (デフォルトの構成ファイル my_default.cnf なし)

現在、MySQL を学習中です。私は完全な初心者で、Linux についてはあまり知りません。今後の作...

fileReader 使用時の落とし穴と解決策

目次fileReader に関する落とし穴iOS における FileReader の落とし穴 (イメ...

Mysql データベース ストアド プロシージャの基本構文の説明

プロシージャ sp_name を削除します//これまで、MYSQL 構文の基礎知識について説明して...

MySQL マスタースレーブレプリケーションのいくつかのレプリケーション方法の概要

非同期レプリケーションMySQL レプリケーションは、デフォルトでは非同期です。マスター スレーブ ...

CSSボックスモデルの紹介を読めば、混乱することはなくなるでしょう

Web デザインでよく耳にするプロパティ名: content、padding、border、marg...