Docker は、安全で繰り返し可能な環境でソフトウェアを自動的にデプロイする方法を提供し、コンピューティング プラットフォームの開発方法に革命をもたらします。現在、Docker はインターネット企業で広く使用されています。この記事を読めば、10 分で Docker を使い始めることができます。 Dockerとは Dockerとは何ですか? 公式サイトでの紹介:
Baidu 百科事典には次のように書かれています。
最初の DOCKER ブックの紹介:
Docker が特別な理由: Docker は、起動速度が速い軽量の仮想化テクノロジーです (ほとんどの Docker コンテナは 1 秒未満で起動できます)。 単一のハードウェア上で数百または数千のコンテナを同時に実行できるため、迅速な拡張と柔軟なスケーリングが容易になります。 2016年、JD.comは618の高同時実行シナリオでシステムの安定性を確保するために15万のDockerクラスターを使用したと言われています。 Docker はクロスプラットフォームであり、Windows、Macos、Linux をサポートしています。「一度ビルドすればどこでも実行」できるため、開発環境と本番環境の不整合によって生じる一連の問題を解決し、開発者と運用保守担当者が調和して生活できるようになります。 Docker はオープンソースであり、GitHub でホストされています。 Dockerのアイデア DockerのロゴからDockerのコアコンセプトを関連付ける Docker のロゴはコンテナを運ぶ大きなクジラで、これは間違いなく Docker を最も鮮明に表現し説明しているものです。 運送業界とは対照的に、コンテナが登場する前は、商品を統一された標準的な方法で取り扱うことができませんでした。たとえば、壊れやすい商品には注意して取り扱う必要がありましたが、他の商品はそうではありませんでした。そのため、鉄道、道路、海上などさまざまな輸送手段間での貨物の移送には多くの人手が必要となり、非常に非効率でコストがかかります。コンテナの登場により、この問題は解決しました。この魔法の箱にはどんな商品でも入れることができます。そして、道路、鉄道、海など、あらゆる輸送シーンにおいて、輸送中は箱が密閉されます。さらに、中間の移送作業は大型機械で行うことができるため、効率が大幅に向上しました。 Docker は標準コンテナのアイデアを正式に借用し、コンテナのアイデアをソフトウェア分野に適用しました。 Docker は、コード用の標準化されたコンテナベースの転送システムを提供します。これにより、あらゆるアプリケーションとその依存環境 (コード、構成ファイル、JDK、Tomcat など) を、ほぼすべてのオペレーティング システムで実行できるコンテナにパッケージ化できます。 Docker コアコンセプト 鏡 ミラーリングは Docker の基礎であり、ユーザーはミラーリングに基づいて独自のコンテナを実行できます。 イメージの基盤は Docker のユニオン ファイル システムであり、階層化されており、各イメージがレイヤーになっています。各レイヤーの上には他のレイヤーが存在するため、他のイメージ (ベース イメージ) の上にイメージを作成できます。理解を助けるために、写真を使って説明します。画像はインターネットからのものです。著作権を侵害している場合は削除してください。 倉庫 ウェアハウスはユーザーイメージが保存される場所です。公式の Docker ウェアハウス アドレスは https://hub.docker.com です。 Docker Hub には、最もシンプルな hello-world や MySQL など、多くのイメージがあります。もちろん、専用の倉庫を持つこともできます。 容器 コンテナはアプリケーションに分離されたランタイムを提供します。各コンテナには完全かつ排他的なユーザー環境が含まれており、1 つのコンテナの動作環境を変更しても他のコンテナの動作環境には影響しないため、アプリケーションをほぼどこでも同じように実行できます。 コンテナはイメージに基づいて起動され、コンテナ内で 1 つ以上のプロセスを実行できます。コンテナ プロセスを作成するときに、プロセスに必要な名前空間パラメータが指定され、コンテナは現在の名前空間によって制限されたリソース、ファイル、デバイス、ステータス、または構成のみを「表示」できるようになります。したがって、コンテナは単なる特別なプロセスであり、コンテナの本質はプロセスです。 Dockerのインストール CentOS 7 を例にして Docker をインストールします。 システムカーネルのバージョンを確認する Docker は CentOS 7 上で実行されます。CentOS 7 では、64 ビット オペレーティング システムとカーネル バージョン 3.10 以上が必要です。 このマシンに要件を満たす Linux カーネルがインストールされていることを確認します。カーネルのバージョン情報を確認するには、 [root@localhost ~]# uname -r 3.10.0-957.el7.x86_64 CentOS 7にDockerをインストールする Docker をインストールするには、 Dockerサービスを起動し、起動時に自動的に起動するように設定します。 次のコマンドを使用します。 systemctl で docker.service を起動します。 systemctl で docker.service を有効にする
[root@localhost ~]# docker バージョン クライアント: バージョン: 1.13.1 APIバージョン: 1.26 パッケージバージョン: docker-1.13.1-96.gitb2f74b2.el7.centos.x86_64 Goバージョン: go1.10.3 Gitコミット: b2f74b2/1.13.1 作成日: 2019年5月1日水曜日 14:55:20 OS/アーキテクチャ: linux/amd64 サーバ: バージョン: 1.13.1 API バージョン: 1.26 (最小バージョン 1.12) パッケージバージョン: docker-1.13.1-96.gitb2f74b2.el7.centos.x86_64 Goバージョン: go1.10.3 Gitコミット: b2f74b2/1.13.1 作成日: 2019年5月1日水曜日 14:55:20 OS/アーキテクチャ: linux/amd64 実験的: 偽 Docker の実践 - Hello World 古典的な「Hello World」から何を学ぶことができるでしょうか? 画像をプルする 実際、このイメージは「hello-world」という名前ですでに DockerHub に存在しています。 DockerHubから直接イメージをプルします。コマンドはGitに似ています: [root@localhost docker]# docker pull hello-world デフォルトタグの使用: 最新 リポジトリ docker.io/library/hello-world をプルしようとしています... 最新: docker.io/library/hello-world からプル 1b930d010525: プル完了 ダイジェスト: sha256:41a65640635299bab090f783209c1e3a3f11934cf7756b09cb2f1e02147c6ed8 ステータス: docker.io/hello-world:latest の新しいイメージをダウンロードしました ミラーを見る プルした Docker イメージを表示する: [root@localhost ~]# docker イメージ リポジトリ タグ イメージ ID 作成 サイズ docker.io/hello-world 最新 fce289e99eb9 5 か月前 1.84 kB 画像を実行する イメージを実行します: [root@localhost docker]# docker run hello-world Dockerからこんにちは! このメッセージは、インストールが正常に動作していることを示しています。 このメッセージを生成するために、Docker は次の手順を実行します。 1. Docker クライアントが Docker デーモンに接続しました。 2. Docker デーモンは Docker Hub から「hello-world」イメージを取得しました。 (amd64) 3. Dockerデーモンは、そのイメージから新しいコンテナを作成し、 現在読んでいる出力を生成する実行可能ファイル。 4. Dockerデーモンはその出力をDockerクライアントにストリーミングし、Dockerクライアントはそれを 端末に。 もっと野心的なことに挑戦するには、次のコマンドで Ubuntu コンテナを実行できます。 $ docker run -it ubuntu bash 無料の Docker ID を使用して、イメージを共有したり、ワークフローを自動化したりすることができます。 参考: その他の例やアイデアについては、以下をご覧ください。 詳しくはこちら Docker 共通コマンド docker images : ローカルイメージを一覧表示する docker pull image_name: イメージをプルします。特定のイメージ タグが指定されていない場合は、最新のタグが付いたイメージが自動的にプルされます。 docker search image_name: Docker Hub でイメージを検索 docker start container: コンテナを起動して実行する docker run [OPTIONS] image_name: イメージに基づいてコンテナを作成して起動します 一般的なオプション: docker logs container: コンテナのログ情報を取得する docker アタッチコンテナ: コンテナに入る exit: コンテナを終了する docker exec コンテナコマンド: 実行中のコンテナでコマンドを実行する docker stop container: コンテナを停止します docker rm container: コンテナを削除する docker save -o image_name.tar image_name: イメージをエクスポートする docker ps: 実行中のコンテナを表示する docker ps -a: システム内のコンテナのリストを表示します docker top container: コンテナ内のプロセスを表示する docker stop daemon_dave: デーモンコンテナを停止します Dockerビルドイメージ イメージを構築するにはどうすればいいですか? 独自のイメージを構築するには、次の 2 つの手順が必要です。 Dockerfile を記述します。 Dockerfile は、イメージの作成方法と各ステップの内容について Docker に指示します。
Dockerfileの作成 すべての Dockerfile の最初のコマンドは FROM である必要があります。 FROM 命令は既存のイメージを指定し、後続の命令がこのイメージに基づいていることを Docker に伝えます。例: MAINTAINER ディレクティブは、イメージの所有者と連絡先情報を識別するために使用されます。例: VOLUME 命令は、イメージから作成されたコンテナにボリュームを追加するために使用されます。ボリュームは、1 つ以上のコンテナー内に存在する特定のディレクトリです。このディレクトリは、ユニオン ファイル システムをバイパスし、共有データとデータ永続性機能を提供できます。 CMD 命令は、コンテナの起動時に実行されるコマンドを指定するために使用されます。 ENTRYPOINT 命令は CMD 命令と非常によく似ています。 WORKDIR 命令は、イメージから新しいコンテナを作成するときに、コンテナ内で作業コマンドを設定するために使用されます。ENTRYPOINT または CMD 命令で指定されたプログラムは、このディレクトリで実行されます。 ENV 命令は、イメージ構築プロセス中に環境変数を設定するために使用されます。例: RUN 命令は、現在のイメージで指定されたコマンドを実行するために使用されます。例えば: EXPOSE 命令は、コンテナ内のアプリケーションがコンテナの指定されたポートを使用することを Docker に伝えるために使用されます。例: ADD 命令は、ビルド環境からイメージにファイルとディレクトリをコピーするために使用されます。 例: COPY 命令は ADD と似ていますが、COPY はビルド コンテキスト内でローカル ファイルをコピーすることのみを対象とし、ファイルを抽出または解凍することは行いません。 LABEL 命令は、Docker イメージにメタデータを追加するために使用されます。例: Dockerfile の例: java:8より メンテナー James "×××@example.com" ボリューム /tmp docker-0.0.1-SNAPSHOT.jar app.jarを追加します。 ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] docker buildを実行する
要約する この記事では、Docker とは何か、Docker の考え方、Docker のコア概念、Docker のインストールなどについて紹介します。この記事を読んだ後、Docker を使い始めることができますが、これは長い旅の最初の一歩を踏み出したに過ぎません。学習に終わりはありませんので、お互いに励まし合いましょう。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Linux での MySQL 5.6.24 (バイナリ) 自動インストール スクリプト
この記事では、例を使用して、MySQL で複数のトリガー操作を作成する方法について説明します。ご参考...
目次概要1. NULL値のテスト2. ユーザー入力を読み取る導入事実の根源はどこにあるのでしょうか?...
HTML <dl> タグ#定義と使用法<dl> タグは定義リストを定義します...
1. Flexレイアウトの紹介Flex は Flexible Box の略で、「柔軟なレイアウト」を...
この記事に誤りがあったり、ご提案がありましたら、お気軽にご連絡ください。よろしくお願いいたします。は...
目次1. グローバルガード1.1 グローバルフロントガード1.2 グローバルポストルートガード1.3...
イメージが正常にビルドされると、Docker 環境があれば使用できますが、イメージを Docker ...
目次1. はじめに2. 解決すべきいくつかの重要な問題3.最後に書く1. はじめに最近、Cocos ...
序文フロントエンドで非常に便利な、小さなアイコン付きの検索ボックスを作成する方法をご紹介します。エフ...
2つの目的のためのリソースの結合と圧縮httpリクエストの数を減らす要求されたリソースのサイズを縮小...
シナリオ1. ID番号のフィールドを備えた市民システムを維持する2. ビジネス コードでは、重複する...
この記事では主にボタンのスタイルについて説明します。 1. オプション2. サイズ3. 活動状況4....
mongoイメージを取得する sudo docker pull mongo mongodbサービスを...
序文この章では、基本的な Linux 関数と epoll 呼び出しを使用して、Linux 上で実行で...
ナビゲーションバーのサブメニューを再帰的に生成すると、メニューは正常に生成できるが、マウスをホバーす...