Dockerの始め方からプロジェクトのデプロイまでお話しましょう

Dockerの始め方からプロジェクトのデプロイまでお話しましょう

Docker の概念

Docker は、Go 言語をベースにしたオープンソースのアプリケーション コンテナ エンジンであり、Apache 2.0 プロトコルに準拠したオープンソースです。 Docker を使用すると、開発者はアプリケーションと依存パッケージを軽量でポータブルなコンテナーにパッケージ化し、一般的な Linux マシンに公開したり、仮想化を実装したりすることができます。コンテナを使用すると、高速かつ便利で、プラットフォームから分離された自動デプロイメントが可能になります。デプロイする環境に関係なく、コンテナ内のアプリケーションは同じ環境で実行されます。そして、互いに分離されたサンドボックス メカニズムを完全に使用します。さらに重要なのは、コンテナのパフォーマンスのオーバーヘッドが非常に低いことです。

軽量仮想化テクノロジーとして、Docker には継続的インテグレーション、バージョン管理、移植性、分離性、セキュリティなどの利点があります。

Dockerはバージョン17.03以降、「CE(コミュニティエディション)」と「EE(エンタープライズエディション)」に分かれています。

「Docker はコンテナ技術であり、主に環境間でのソフトウェア移行の問題を解決するために使用されます。」

Dockerをインストールする

DockerはMac、Windows、Linux、その他のオペレーティングシステムで実行できます。

Macを例に挙げましょう

Homebrewを使用してインストールする

brew install --cask docker

デスクトップインストール

端末の使用に加えて、デスクトップ版も使用でき、操作がより便利です

手動でダウンロードする必要がある場合は、次のリンクをクリックして Docker Desktop for Mac をダウンロードしてください。

インストールが成功したか確認する

docker -v

写真

Nginxサーバーを実行してみる

docker run -d -p 80:80 --name webserver nginx

写真

nginx イメージがローカルに見つからない場合は、リモート リポジトリに移動してそれをプルします。サービスが起動したら、localhost経由でアクセスできるようになります。

写真

ミラー加速

使用中にイメージのプルが非常に遅い場合は、Dockerサーバーが海外にあるためですが、Docker国内イメージを構成することで高速化できます。

画像アクセラレータ

画像アクセラレータアドレス

Docker China 公式イメージ

https://registry.docker-cn.com

DaoCloud ミラーサイト

出典:

アズールチャイナミラー

https://dockerhub.azk8s.cn

HKUST ミラーサイト

https://docker.mirrors.ustc.edu.cn

アリババクラウド

https://ud6340vz.mirror.aliyuncs.com

七牛雲

https://reg-mirror.qiniu.com

ネットイースクラウド

https://hub-mirror.c.163.com

テンセントクラウド

https://mirror.ccs.tencentyun.com

タスクバーの Docker Desktop アプリケーション アイコンをクリックし、[設定...] をクリックして、左側のナビゲーション メニューで Docker Engine を選択し、右側の json ファイルを次のように編集します。

 { "registry-mirrors": [ "https://registry.docker-cn.com", "https://hub-mirror.c.163.com" ] }

変更が完了したら、「適用と再起動」ボタンをクリックすると、Docker が再起動し、構成されたイメージ アドレスが適用されます。

設定後、docker info を実行してアクセラレータが有効かどうかを確認できます。

 docker info

写真

Dockerの3つの要素

写真

画像

「Docker イメージ」は特殊なファイルシステムです。コンテナ ランタイムに必要なプログラム、ライブラリ、リソース、構成、およびその他のファイルを提供することに加えて、ランタイム用に用意されたいくつかの構成パラメータ (匿名ボリューム、環境変数、ユーザーなど) も含まれています。イメージには動的なデータは含まれておらず、ビルド後にその内容は変更されません。

容器

イメージとコンテナの関係は、オブジェクト指向プログラミングにおけるクラスとインスタンスの関係に似ています。イメージは静的な定義であり、コンテナはイメージの実行時のエンティティです。コンテナは作成、開始、停止、削除、一時停止などが可能です。

簡単に言うと、「コンテナはイメージの実行インスタンスです。イメージを実行すると、コンテナが作成されます。」

リポジトリ

イメージがビルドされると、現在のホスト上で簡単に実行できます。ただし、このイメージを他のサーバーで使用する必要がある場合は、イメージを集中的に保存および配布するサービスが必要になります。 Docker Registry はそのようなサービスです。

ミラーの使用

画像をプルする

Docker Hub には、高品質のイメージが多数用意されています。 docker pull を使用して、イメージ リポジトリから対応するイメージをプルできます。

形式は次のとおりです。

 docker pull [选项] [docker Registry 地址[:端口号]/]仓库名[:标签]

具体的なオプションは、docker pull --help コマンドで確認できます。ここでは画像名の形式について説明します。

  • Docker イメージ リポジトリ アドレス: アドレスの形式は通常、<ドメイン名/IP>[:ポート番号] です。デフォルトのアドレスは Docker Hub (docker.io) です。
  • ウェアハウス名: ここでのウェアハウス名は 2 つの部分から構成される名前です (つまり、<ユーザー名>/<ソフトウェア名>)。 Docker Hub の場合、ユーザー名が指定されていない場合、デフォルトは公式イメージである library になります。

たとえば、ノード イメージをプルします。

 docker pull node:18-alpine

写真

ここで、イメージをプルするときに、イメージ名(ウェアハウス名 + ラベル)(node:18-alpine)のみを指定し、Dockerイメージのウェアハウスアドレスを指定しないため、デフォルトのアドレスdocker.ioからイメージがプルされます。

上の図から、docker pull コマンドの出力にはイメージの完全な名前、つまり docker.io/library/node:18-alpine が示されていることがわかります。

ミラーを見る

ローカルにダウンロードしたイメージを表示したい場合は、docker image lsコマンドを使用します。

写真

リストには、リポジトリ名、タグ、イメージ ID、作成時間、占有スペースが含まれます。

もちろん、Docker デスクトップで直接表示することもできます。

写真

画像の削除

ローカルイメージを削除する場合は、docker image rmコマンドを使用します。

形式は次のとおりです。

 docker image rm [选项] <镜像1> [<镜像2>...]

<image> には、イメージの短い ID、イメージの長い ID、イメージ名、またはイメージの概要を指定できます。

例えば、先ほど取得したノードイメージを削除します

docker image rm node:18-alpine

イメージを一括で削除したい場合は、docker image ls -qとdocker image rmを組み合わせて使用​​します。

たとえば、リポジトリ名が redis であるすべてのイメージを削除する必要があります。

 docker image rm $(docker image ls -q redis)

または、mongo:3.2 より前のすべてのイメージを削除します。

 docker image rm $(docker image ls -q -f before=mongo:3.2)

詳しい手順はdocker image --helpで確認できます。

コンテナ作戦

コンテナを表示

実行中のコンテナを表示します。

 docker ps

すべてのコンテナを表示

docker ps -a

コンテナを起動する

コンテナを起動する状況は一般的に 2 つあります。

  • イメージに基づいて新しいコンテナを作成し、起動します
  • 終了した既存のコンテナを再起動する

作成して開始

使用するコマンドはdocker runです

docker run -it node

パラメータの説明:

  • -i: 対話型操作
  • -t: ターミナル
  • ノード: ノードイメージ

終了したコンテナを起動する

まずすべてのコンテナをチェックする

docker ps -a

その後、docker startを使用して停止したコンテナを起動できます。

 docker start 7e7ff4af478f

コンテナの再起動

docker restart a03b0445b82d

バックグラウンド操作

ほとんどの場合、Docker をバックグラウンドで実行する必要があります。ここで、-dを使用してコンテナの実行モードを指定できます。

 docker run -d node:latest

コンテナを停止する

コンテナを停止するコマンドは次のとおりです。

 docker stop <容器id>

最初にすべてのコンテナを表示

写真

コンテナを再度停止する

docker stop 3c275da2f36d

写真

コンテナに入る

-d パラメータを使用すると、コンテナが起動してバックグラウンドになります。コンテナに入るには、次のコマンドを使用できます。

「exec」(推奨)

 docker exec -it a03b0445b82d /bin/bash

写真

「注意:」このコンテナを終了してもコンテナは停止しないため、「docker exec」を使用することをお勧めします。

「添付」(非推奨)

 docker attach a03b0445b82d

「注意:」このコンテナから出るとコンテナが停止します。

コンテナの削除

コンテナを削除するには、docker rm コマンドを使用します。

 docker rm a03b0445b82d

終了したコンテナをすべて削除する場合は、次のコマンドを使用できます。

 docker container prune

試してみる(フロントエンドプロジェクトをデプロイする)

まず、vueプロジェクトを準備し、Dockerfileファイルをプロジェクトのルートパスに追加します。

Dockerfileの作成

# 指定node镜像FROM node:16-alpine as builder # 指定工作目录WORKDIR /code # 代码复制到容器中ADD . /code # 安装依赖RUN npm install --registry=https://registry.npm.taobao.org # 打包RUN npm run build # RUN ls # 指定nginx镜像FROM nginx:latest # 复制打包后的代码到nginx容器中COPY --from=builder /code/dist /usr/share/nginx/html # 暴露端口EXPOSE 80

パッケージ画像

docker build -t web-nanjiu .

写真

コンテナを起動する

イメージがパッケージ化されたら、そのイメージを使ってコンテナを起動することができます。

 docker run -itd -p 0.0.0.0:9090:80 web-nanjiu

ここでの -p は、コンテナのポートをホストのポートにマッピングすることを意味します。ここでのホストはローカルマシンです。

先頭の0.0.0.0:9090はホストポートを示します

次の80はコンテナのポートを示します

起動後、http://localhost:9090/ を使って直接アクセスします。

写真

このページが表示されたら、Docker のデプロイが成功したことを意味します。

もちろん、docker psを使用して、この時点で実行中のコンテナを表示することもできます。

写真

<<:  5 分間の技術講演 |クラウドコンピュータビデオストリーミングフレームレートネゴシエーションメカニズム

>>:  Kafka ソースコード サーバーの起動プロセスの図解

推薦する

完璧なインデックスメカニズムを備えた Baidu が、なぜ私たちの Web ページをインデックスしようとするのでしょうか?

Baidu への組み込みは、すべての SEO 担当者とウェブマスターが懸念しているトピックです。特に...

さまざまな業界向けのウェブサイトタイトルの書き方の例

ウェブマスターは、ウェブサイトのページに対する検索エンジンのクロール メカニズムを詳細に研究する必要...

ローカルカーウェブサイト共同購入プランプロモーション実践

建国記念日の前夜、4S ストアから 10 月 1 日の共同購入イベントの提案を受け、そのプロモーショ...

タオバオの悪評を覆すライター:一団のオオカミが新規出品者を包囲し、月に1万元以上を稼ぐ

「彼らは毎日、潜在的な犠牲者を探し、彼らを『肉』と呼んでいます。一度誰かを見つけると、グループで手配...

最も安全な電子メールサービスはどれですか?

電子メールは、最も基本的なネットワーク通信サービスの 1 つです。その重要性は疑う余地がありません。...

チェン・ユー: 2012 年 Web マスター年次会議記録 - 登場人物

著者は、ウェブマスター年次会議の協力メディアゲストとして、2012 年第 7 回中国インターネット ...

ガートナーのマジック・クアドラントによると、GoogleとMicrosoftはパブリッククラウドストレージで大きな進歩を遂げている。

ガートナーのパブリッククラウドストレージプロバイダーに関するマジッククアドラントによると、AWS は...

VPC の簡単な紹介

VPC の正式名称は Virtual Private Cloud で、中国語では仮想プライベートクラ...

共同購入業界は再編を加速させている。何百ものウェブサイトがサービス商品を放棄している。

中小規模の共同購入ウェブサイトは、サービスを放棄して物理的な共同購入に重点を置きたいと考えていますが...

NetEase Cloud: 企業はクラウドに移行しており、PaaS は 2018 年に爆発的な成長を遂げる見込み

クラウドコンピューティングの概念が提唱されてから約10年が経ちました。この 10 年間で、クラウド ...

SEOトレーニングは疑問視され、反映される:SEO思考の技術を養うことが鍵となる

現在、インターネット上ではさまざまな SEO トレーニングが提供されています。しかし、全体的に見ると...

トップ 15 のクラウド コンピューティング ホスティング プロバイダー

クラウド コンピューティングの時代において、マネージド サービス プロバイダーが極めて重要な位置を占...

初心者が必ず学ぶべきこと: Google AdWords 分析ツールに関する新たな調査

Google AdWords のクリック課金キャンペーンを開始するとき、新しいウェブマスターは混乱し...

SEO業界の5つの不健全な傾向をチェック

SEO というかっこいい名前は、確かに近年中国のインターネットで人気が出てきました。 Baidu の...