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 Thumbs を使用した個人的な体験談

Baidu Thumbs Up、これは SEO の世界ではやや冗談めいた名前です。これは百度自身が開...

外国貿易ウェブサイトのSEOに影響を与える要因の分析

ウェブサイトの構築を準備する際に、あなたのビジネスや会社にとって最も重要な要素は何でしょうか? それ...

建国記念日のゴールデンウィーク中、陰謀を企む広告は、あなたを楽しいものにするための新しい方法を試みている

月収10万元の起業の夢を実現するミニプログラム起業支援プラン建国記念日は常にブランドにとっての「戦場...

新しいサイト最適化におけるコンテンツ品質の問題を解決する方法

あらゆるウェブサイトの基礎はコンテンツです。サイトのコンテンツの基礎を確保しながら、外部リンクを掲載...

ヴォルテールの家

houseofvoltaire は、地元および世界的に有名な現代アーティストやデザイナーによるユニー...

予算vm-$92/E3-1230v3/16gメモリ/120gSSD/20Tトラフィック/最適化されたライン

budgetvm の最新割引コードが 2 つあります。budgetvm の特別価格のサーバーのみ対象...

A5サイズのソフト記事がウェブマスターにいくつかの考えを与える

今日、ある著者が A5 でソフト記事を書いた経験を共有しているのを見ました。その記事は非常に興味深く...

ハイブリッド クラウドへの移行が設計上安全であることをどのように保証できますか?

多くの組織は、クラウド コンピューティングの最初の経験が非常に良好であるため、プライベート クラウド...

MongoDBの株価は320億ドルを超え、最も価値のあるオープンソースソフトウェア企業となった。

[[422308]]要点: MongoDBの株価が急騰しており、その市場価値はIBMが2019年にR...

ウェブサイト運営にあたっての準備はどのようなものがありますか?

ますます多くのウェブマスターの友人が、現在、ウェブサイト、特に一部の企業ウェブサイトや個人の草の根ウ...

ピンドゥオドゥオの失敗

Pinduoduoとテスラは対立している。ピンドゥオドゥオは8月16日午後、上海のピンドゥオドゥオ共...

あらゆるクラウド | Dell + Microsoft: リファレンス アーキテクチャから Azure ハイブリッド クラウド プラットフォームへ

オープン アーキテクチャに基づき、Microsoft と連携した Dell のハイブリッド クラウド...

検索を理解する: オンライン マーケティングの効果を高める

検索方法を理解し、オンラインマーケティングの効果を高める魚を与えるよりも魚の釣り方を教える方が良い。...