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 ソースコード サーバーの起動プロセスの図解

推薦する

Linux 仮想化 KVM-Qemu Virtqueue の分析

[[390061]]この記事はWeChatの公開アカウント「LoyenWang」から転載したもので、...

盲目的にウェブサイトを最適化するよりも、ユーザーエクスペリエンスを良くする方が良い

昨日(2013年2月19日)BaiduのGreen Radish Algorithmがリリースされ、...

2019年に注目すべきクラウド移行の機会

クラウド コンピューティングの開発は現在、新たな段階に達しており、多くの企業がコア エンタープライズ...

litemoe: 49元/月、3ネットワークcn2 gia VPS、1Gbps帯域幅、KVM/512Mメモリ/10gSSD/512Gトラフィック

litemoe さん、ロサンゼルスのトリプルネットワーク cn2 gia vps ラインの VPS ...

gandi-.at ドメイン登録/初年度 6.25 USD

Gandi は .at ドメイン名のプロモーションを開始し、現在は元の価格から 25% 割引を提供し...

中国の化粧品トレンドに関する洞察

今年上半期が終わりに近づく中、中国の化粧品業界ではどんな新たなトレンドが生まれているのでしょうか? ...

WebAssembly + Dapr = 次世代のクラウド ネイティブ ランタイム?

クラウド コンピューティングは、デジタル経済の発展を支える重要なインフラストラクチャとなっています。...

Apple iOSプログラミング言語はC++よりも人気があり、JavaとC++に次いで2番目に人気があります。

プログラミング言語のランキングの推移(写真提供:テンセントテクノロジー)テンセントテクノロジーニュー...

アマゾン対マイクロソフト対グーグル、海外クラウド大手3社の決算報告が公開

[[324680]]この記事はLeiphone.comから転載したものです。再印刷が必要な場合は、L...

リベート ウェブサイトには良いものも悪いものもあり、その多くは中身のないものです。

ショッピングリベートが届くまで10日以上かかるオンラインショッピングは安く、リベートを利用すればさら...

ウェブサイトのユーザーエクスペリエンス分析: 画像最適化手法についての簡単な説明

ウェブサイトの最適化では、画像が適切に最適化されていれば、ページの読み込み速度が向上し、ウェブサイト...

ウェブサイトの SEO: ドメイン名を活用して力と勢いを活かす方法

最近、フォーラムでそのような代替ドメイン名について議論している投稿を偶然見ました。それが Baidu...

大手4社の決算報告から業界動向をみると、クラウドコンピューティング事業が熱い

ロイター通信によると、アマゾン、マイクロソフト、アルファベット傘下のグーグル、インテルなど米国のテク...

ミニゲームインセンティブビデオ広告が完全利用可能になりました

本日より、ミニゲームインセンティブ動画広告が正式に全面公開され、広告主は新バージョンの MP セルフ...