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

推薦する

外部リンクを増やす最良の方法

最近、これまでのウェブサイトの SEO のやり方について考えてみたところ、ウェブサイトの構築は外部リ...

誇大宣伝か先見か?クラウド コンピューティングに関するこれらの予測はすべて実現したのでしょうか?

ビジネスの世界では誇大宣伝が不足することはありませんが、クラウド コンピューティングについても同様で...

SEOはユーザーエクスペリエンスを向上させる

かつて、SEO の世界でよく言われていた格言に、「コンテンツは王様、外部リンクは女王様」というものが...

dynaboot-XEN VPS 20% オフ/ドメイン名無料/512M メモリ 月額 8 ドル

dynaboot がプロモーション情報を公開する理由は、512M メモリを搭載した XEN を四半期...

検索エンジンスパイダーの習慣を理解することで、内部ページがスムーズにインデックスされるようになります。

サイトの包含は、Web サイトが健全かどうかを判断するための重要な指標として常に考えられてきました。...

dogyun: 虎の年、香港クラウド199元/年、10台のコンピュータールームのクラウドサーバー30%割引、チャージ10%増し、抽選など。

Dogyunの虎年特別新年プロモーションが始まりました:(1)香港特別価格CN2+BGP年間VPSが...

ウェブマスターネットワークからの毎日のレポート:Baidu検索がモバイルアプリケーションを追加、ウェブサイトのユーザーエクスペリエンスがより重要に

1. ユーザーエクスペリエンスは、ウェブサイトの検索エンジン評価における主要な基準となっているAdm...

陰謀の宮殿を探せ:360 が Sogou を征服し、Baidu の堀になる?

360の検索参入には必ずバックアッププランがあり、将来的にはSogouと衝突することは間違いないだろ...

共同購入による突然の死の例:Jushou.com は立ち上げから 6 か月後に倒産

インベスター・デイリーの記者、何鳳丹2011年3月、劉磊さんが起業を決意したとき、春が来たと感じまし...

人材ネットワーク活動計画のポイント

ウェブサイトの運営を成功させるには、さまざまな活動の計画が不可欠です。人材ネットワークは、人材を募集...

Baiduがアルゴリズムを変更したとき、SEO担当者はどのような心構えを持ち、どのような対策を講じるべきか

SEO担当者として、ボトルネックに陥っていると感じますか?2012年のSEO市場はますます緊張が高ま...

NetApp: 2019年、クラウドからエッジコンピューティング、コンテナまで、デジタル経済が主流になり始めました

過去 10 年間はデジタル経済の成熟期であり、特に過去 8 年間は前例のないデータ増加率を目の当たり...

合心創天:次世代クラウドデスクトップ市場を争う未来の巨人

最近、「十年の塵と土、遥かに白雲に達する」をテーマにした和信創天の次世代クラウドデスクトップVENG...

ビリビリはどのようにして二次元世界に「誘拐」されたのか?

最近、ビリビリ動画配信サービス(以下、Bステーション)が公式に主催する「南京夏祭り」が批判され話題と...