ホームページ 運用・保守 Docker Dockerをインストールして設定する方法

Dockerをインストールして設定する方法

Jun 08, 2020 pm 05:06 PM
docker

Dockerをインストールして設定する方法

Docker をインストールして構成するにはどうすればよいですか?

この記事は、クラウドでのコンテナ化されたワークロードのデプロイと管理に関するウェビナー シリーズを補足するものです。このシリーズでは、コンテナのライフサイクル管理、マルチコンテナ アプリケーションのデプロイ、ワークロードのスケーリング、Kubernetes の理解など、コンテナの基本を紹介するとともに、ステートフル アプリケーションを実行するためのベスト プラクティスについても紹介します。

このチュートリアルでは、このシリーズの最初の部分「コンテナーの概要」で紹介された概念とコマンドについて説明します。

#はじめに

Docker は、コンテナ化されたアプリケーションをデプロイおよび管理するためのプラットフォームです。コンテナーは、その柔軟性により開発者、管理者、devops エンジニアの間で人気があります。

Docker には 3 つの基本コンポーネントがあります。

Docker エンジン Docker ツール Docker レジストリ

Docker エンジンは、コンテナーを管理するためのコア機能を提供します。基盤となる Linux オペレーティング システムと連携して、コンテナのライフサイクルを処理するための単純な API を公開します。

Docker Tools は、Docker Engine によって公開される API と対話する一連のコマンド ライン ツールです。これらは、コンテナーの実行、新しいイメージの作成、ストレージとネットワークの構成、およびコンテナーのライフサイクルに影響を与えるその他の多くの操作の実行に使用されます。

Docker Registry は、コンテナー イメージが保存される場所です。各イメージには、一意のタグによって識別される複数のバージョンを含めることができます。ユーザーはレジストリから既存のイメージをプルし、新しいイメージをプッシュします。 Docker Hub は、Docker, Inc. によって管理されるマネージド レジストリです。レジストリを独自の環境で実行して、イメージをエンジンに近づけることも可能です。

このチュートリアルが終わるまでに、DigitalOcean Droplet に Docker をインストールし、コンテナーを管理し、イメージを処理し、永続性を追加し、プライベート レジストリをセットアップすることができます。

前提条件

このチュートリアルに従うには、次のものが必要です。

Ubuntu 16.04 初期サーバー セットアップ チュートリアルに従って、Ubuntu 16.04 ドロップレットをセットアップします。これには、sudo 非 root ユーザーが含まれます。そしてファイアウォール。

Docker Hub アカウント。この Docker Hub の概要は、開始するのに役立ちます。

デフォルトでは、docker コマンドには root 権限が必要です。ただし、docker グループの docker ユーザーとして docker を実行すると、sudo プレフィックスなしでコマンドを実行できます。

この方法でドロップレットを構成するには、コマンド sudo usermod -aG docker ${USER} を実行します。これにより、現在のユーザーが docker グループに追加されます。次に、コマンド su - ${USER} を実行して、新しいグループ メンバーシップを適用します。

このチュートリアルでは、サーバーが sudo プレフィックスなしで docker コマンドを実行するように構成されていることを想定しています。

ステップ 1 - Docker のインストール

ドロップレットに SSH 接続した後、次のコマンドを実行して、インストールされている可能性のあるすべての Docker 関連パッケージを削除してから、Docker をインストールします公式リポジトリから:

sudo apt-get remove docker docker-engine docker.io
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -sudo apt-key fingerprint 0EBFCD88sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"sudo apt-get update
sudo apt-get install -y docker-ce
ログイン後にコピー

Docker をインストールした後、次のコマンドを使用してインストールを確認します。

docker info
ログイン後にコピー

上記のコマンドは、環境にデプロイされた Docker エンジンの詳細を表示します。次のコマンドは、Docker ツールがインストールされ、正しく構成されていることを確認します。 Docker エンジンとツールのバージョンが出力されるはずです。

docker version
ログイン後にコピー

ステップ 2 - コンテナの起動

Docker コンテナは、レジストリに保存されている既存のイメージから起動されます。 Docker 内のイメージは、プライベートまたはパブリックのリポジトリに保存できます。プライベート リポジトリでは、イメージをプルする前にユーザーの認証が必要です。公開画像には誰でもアクセスできます。

hello-world という名前のイメージを検索するには、次のコマンドを実行します。

docker search hello-world
ログイン後にコピー

名前 hello-world に一致するイメージが複数存在する可能性があります。最大の星を選択します。これは画像のポップさを示します。

次のコマンドを使用して、ローカル環境で利用可能なイメージを確認します。

docker images
ログイン後にコピー

まだコンテナをロールアウトしていないため、イメージはありません。これで、イメージをダウンロードしてローカルで実行できるようになりました。

docker pull hello-world
docker run hello-world
ログイン後にコピー

イメージをドラッグせずに docker run コマンドを実行すると、Docker エンジンは最初にイメージをプルしてから実行します。 docker image コマンドを再度実行すると、ローカルで使用可能な hello-world イメージがあることがわかります。

もっと意味のあるコンテナ、Apache Web サーバーを起動しましょう。

docker run -p 80:80 --name web -d httpd
ログイン後にコピー

docker run コマンドに追加のオプションが渡されることに気づくかもしれません。これらのスイッチの説明は次のとおりです。

-p – これは、コンテナのポート 80 をホストのポート 80 に公開するように Docker エンジンに指示します。 Apache はポート 80 でリッスンするため、ホスト ポートで公開する必要があります。 --name - このスイッチは、実行中のコンテナに名前を割り当てます。これを省略すると、Docker Engine はランダムな名前を割り当てます。

-d - このオプションは、コンテナーをデタッチ モードで実行するように Docker エンジンに指示します。これがないと、コンテナーがフォアグラウンドで起動し、シェルへのアクセスがブロックされます。コンテナーをバックグラウンドにプッシュすることで、コンテナーの実行中もシェルを使用し続けることができます。

要验证我们的容器是否确实在后台运行,请尝试以下命令:

docker ps
ログイン後にコピー

输出显示名为web的容器正在运行,端口80映射到主机端口80 。

现在访问Web服务器:

curl localhost
ログイン後にコピー

让我们停止并用下面的命令删除正在运行的容器:

docker stop web
docker rm web
ログイン後にコピー

运行docker ps再次确认容器已被终止。

第3步 - 添加存储到容器

容器是短暂的,这意味着当容器终止时,存储在容器内的任何东西都将丢失。 要将数据保存在容器的寿命之外,我们需要将容器附加到容器中。 卷是主机文件系统的目录。

首先在主机上创建一个新目录:

mkdir htdocs
ログイン後にコピー

现在,让我们用一个新开关启动容器来挂载htdocs目录,并将其指向Apache Web服务器的文档根目录:

docker run -p 80:80 --name web -d -v $PWD/htdocs:/usr/local/apache2/htdocs httpd
ログイン後にコピー

-v开关将容器中的htdocs目录指向主机的文件系统。 对这个目录所做的任何更改都将在两个位置都可见。

通过运行以下命令从容器中访问目录:

docker exec -it web /bin/bash
ログイン後にコピー

该命令以交互模式将我们的终端连接到容器的外壳。 你应该看到你现在被丢在容器内。

导航到htdocs文件夹并创建一个简单的HTML文件。 最后退出shell返回主机:

cd /usr/local/apache2/htdocs
echo &#39;<h1>Hello World from Container</h1>&#39; > index.htmlexit
ログイン後にコピー

再次执行curl localhost命令显示Web服务器正在返回我们创建的页面。

我们不仅可以从主机访问这个文件,但我们也可以修改它:

cd htdocs
cat index.html
echo &#39;<h1>Hello World from Host</h1>&#39; | sudo tee index.html >/dev/null
ログイン後にコピー

再次运行curl localhost ,确认Web服务器正在提供从主机创建的最新页面。

使用以下命令终止容器。 ( -f迫使Docker先停止而不停止。)

docker rm -f web
ログイン後にコピー

第4步 - 建立图像

除了从注册表中运行现有的图像,我们可以创建自己的图像,并将其存储在注册表中。

您可以从现有的容器中创建新的图像。 首先提交对容器所做的更改,然后将图像标记并推送到注册表。

让我们再次启动httpd容器并修改默认文档:

docker run -p 80:80 --name web -d httpd
docker exec -it web /bin/bash
cd htdocs
echo &#39;<h1>Welcome to my Web Application</h1>&#39; > index.htmlexit
ログイン後にコピー

该容器现在运行一个自定义的index.html 。 你可以使用curl localhost来验证它。

在我们提交更改后的容器之前,最好停止它。 停止后,我们将运行commit命令:

docker stop web
docker commit web doweb
ログイン後にコピー

使用docker images命令确认图像的创建。 它显示了我们刚刚创建的doweb图像。

要在Docker Hub中标记和存储此映像,请运行以下命令将映像推送到公共注册表:

docker login
docker tag your_docker_hub_username/doweb
docker push
ログイン後にコピー

您可以通过从浏览器或命令行在Docker Hub中搜索来验证新映像。

第5步 - 启动私人注册表

可以在私人环境中运行注册表以保持图像更加安全。 它也减少了Docker引擎和映像库之间的延迟。

Docker Registry是一个可以像任何其他容器一样启动的容器。 由于注册表拥有多个图像,因此最好将存储卷附加到该图像上。

docker run -d -p 5000:5000 --restart=always --name registry -v $PWD/registry:/var/lib/registry registry
ログイン後にコピー

请注意,容器是在后台启动的,端口5000暴露, registry目录映射到主机文件系统。 您可以通过执行docker ps命令来验证容器正在运行。

我们现在可以标记一个本地图像,并将其推送到私人注册表。 我们首先从Docker Hub中取出busybox容器并对其进行标记。

docker pull busybox
docker tag busybox localhost:5000/busybox
docker images
ログイン後にコピー

以前的命令确认busybox容器现在用localhost:5000标记,所以将图像推送到私有注册表。

docker push localhost:5000/busybox
ログイン後にコピー

将图像推送到本地注册表,让我们尝试从环境中删除它,并从注册表中拉回。

docker rmi -f localhost:5000/busybox
docker images
docker pull localhost:5000/busybox
docker images
ログイン後にコピー

我们经历了拉动图像,标记,推送到本地注册表,最后拉回来的整个圈子。

可能有些情况下您想要在专用主机中运行私有注册表。 在不同的机器上运行的Docker引擎会与远程注册表进行通信,以获取和推送图像。

由于注册表不安全,我们需要修改Docker引擎的配置以启用对不安全注册表的访问。 为此,编辑位于/etc/docker/daemon.json的daemon.json文件。 创建文件,如果它不存在。

添加以下条目:

编辑/etc/docker/daemon.json

{
 "insecure-registries" : ["REMOTE_REGISTRY_HOST:5000"]}

REMOTE_REGISTRY_HOST替换为远程注册表的主机名或IP地址。 重新启动Docker引擎以确保应用配置更改。

结论

本教程帮助您开始使用Docker。 它涵盖了安装,容器管理,映像管理,存储和私有注册表等基本概念。 本系列即将发布的会议和文章将帮助您超越Docker的基础知识。

相关参考:docker教程

以上がDockerをインストールして設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

pycharmでプロジェクトをパッケージ化する方法 pycharmでプロジェクトをパッケージ化する方法 Apr 25, 2024 am 03:54 AM

PyCharm でプロジェクトをパッケージ化するには 4 つの方法があります。 別個の実行可能ファイルとしてパッケージ化する: EXE 単一ファイル形式にエクスポートする。インストーラーとしてパッケージ化されています: Setuptools Makefile を生成してビルドします。 Docker イメージとしてパッケージ化する: イメージ名を指定し、ビルド オプションを調整してビルドします。コンテナとしてパッケージ化する: ビルドするイメージを指定し、ランタイム オプションを調整して、コンテナを起動します。

PIノードティーチング:PIノードとは何ですか? PIノードをインストールしてセットアップする方法は? PIノードティーチング:PIノードとは何ですか? PIノードをインストールしてセットアップする方法は? Mar 05, 2025 pm 05:57 PM

ピン張りのノードの詳細な説明とインストールガイドこの記事では、ピネットワークのエコシステムを詳細に紹介します - PIノードは、ピン系生態系における重要な役割であり、設置と構成の完全な手順を提供します。 Pinetworkブロックチェーンテストネットワークの発売後、PIノードは多くの先駆者の重要な部分になり、テストに積極的に参加し、今後のメインネットワークリリースの準備をしています。まだピン張りのものがわからない場合は、ピコインとは何かを参照してください。リストの価格はいくらですか? PIの使用、マイニング、セキュリティ分析。パインワークとは何ですか?ピン競技プロジェクトは2019年に開始され、独占的な暗号通貨PIコインを所有しています。このプロジェクトは、誰もが参加できるものを作成することを目指しています

PHPマイクロサービスコンテナ化のアジャイル開発と運用 PHPマイクロサービスコンテナ化のアジャイル開発と運用 May 08, 2024 pm 02:21 PM

回答: PHP マイクロサービスは、アジャイル開発のために HelmCharts でデプロイされ、分離とスケーラビリティのために DockerContainer でコンテナ化されます。詳細説明: HelmCharts を使用して PHP マイクロサービスを自動的にデプロイし、アジャイル開発を実現します。 Docker イメージを使用すると、マイクロサービスの迅速な反復とバージョン管理が可能になります。 DockerContainer 標準はマイクロサービスを分離し、Kubernetes がコンテナの可用性とスケーラビリティを管理します。 Prometheus と Grafana を使用して、マイクロサービスのパフォーマンスと健全性を監視し、アラームと自動修復メカニズムを作成します。

golangプログラムの起動方法 golangプログラムの起動方法 Apr 21, 2024 am 12:47 AM

Go プログラムを開始するには、次の 4 つの方法があります。 コマンド ラインを使用する: go run main.go IDE の [実行] または [デバッグ] メニューから開始する コンテナ オーケストレーション ツール (Docker や Kubernetes など) を使用してコンテナを開始する systemd またはUnix システム上のスーパーバイザ システム サービスとして実行

Docker が LLama3 オープンソース大規模モデルのローカル展開を 3 分で完了 Docker が LLama3 オープンソース大規模モデルのローカル展開を 3 分で完了 Apr 26, 2024 am 10:19 AM

概要 LLaMA-3 (LargeLanguageModelMetaAI3) は、Meta Company が開発した大規模なオープンソースの生成人工知能モデルです。前世代のLLaMA-2と比べてモデル構造に大きな変更はありません。 LLaMA-3 モデルは、さまざまなアプリケーションのニーズやコンピューティング リソースに合わせて、小規模、中規模、大規模などのさまざまな規模のバージョンに分割されています。小型モデルのパラメータ サイズは 8B、中型モデルのパラメータ サイズは 70B、大型モデルのパラメータ サイズは 400B に達します。ただし、トレーニング中の目標は、マルチモーダルおよび複数言語の機能を達成することであり、その結果は GPT4/GPT4V に匹敵することが期待されます。 Ollama をインストールするOllama は、オープンソースの大規模言語モデル (LL) です。

DeepSeekをインストールする方法 DeepSeekをインストールする方法 Feb 19, 2025 pm 05:48 PM

DeepSeekをインストールするには、Dockerコンテナ(最も便利な場合は、互換性について心配する必要はありません)を使用して、事前コンパイルパッケージ(Windowsユーザー向け)を使用してソースからコンパイル(経験豊富な開発者向け)を含む多くの方法があります。公式文書は慎重に文書化され、不必要なトラブルを避けるために完全に準備します。

PHP 分散システムのアーキテクチャと実践 PHP 分散システムのアーキテクチャと実践 May 04, 2024 am 10:33 AM

PHP 分散システム アーキテクチャは、ネットワークに接続されたマシン全体にさまざまなコンポーネントを分散することで、スケーラビリティ、パフォーマンス、およびフォールト トレランスを実現します。このアーキテクチャには、アプリケーション サーバー、メッセージ キュー、データベース、キャッシュ、ロード バランサーが含まれます。 PHP アプリケーションを分散アーキテクチャに移行する手順は次のとおりです。 サービス境界の特定 メッセージ キュー システムの選択 マイクロサービス フレームワークの採用 コンテナ管理への展開 サービスの検出

Dockerコンテナを使用したJavaEEアプリケーションのデプロイ Dockerコンテナを使用したJavaEEアプリケーションのデプロイ Jun 05, 2024 pm 08:29 PM

Docker コンテナを使用した Java EE アプリケーションのデプロイ: Dockerfile を作成してイメージを定義し、イメージを構築し、コンテナを実行してポートをマップし、ブラウザでアプリケーションにアクセスします。サンプル JavaEE アプリケーション: REST API はデータベースと対話し、Docker 経由でデプロイ後にローカルホストでアクセスできます。

See all articles