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

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

WJ
WJオリジナル
2020-06-08 17:06:382317ブラウズ

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 までご連絡ください。