ドッキングステーションを使用した外部イメージのダウンロードと実行


前の文章までコンテナを勉強していましたが、今は画像を知る番です.

画像vsコンテナ



画像を使用して複数のコンテナを作成できます.印鑑はあまり違わないイメージを定義し、スタンプを作成した後、同じ内容を印刷できるように、異なるシステムとサーバ上で複数回実行できます.画像は、すべての設定コマンドとすべてのコードを含む共有可能なパッケージです.コンテナは、これらの画像の具体的な実行例です.画像に基づいてコンテナを実行します.これはダックの核心概念であり、ダックのすべてでもある.

外部イメージの実行


画像の作成とインポートには、次の2つの方法があります.1つ目の方法は、既存の画像を使用することである.たとえば、同僚が構築した、非常に一般的な、事前に構築された正式なイメージ、またはコミュニティで共有されているイメージを使用できます.そのコミュニティはDocker Hubです.
Docker Hubでnodeを検索します.ノードアプリケーションコンテナを構築するために使用できる式ノード図を見つけることができます.このイメージは、誰でも使用でき、本番ノードチームによって導入、作成、メンテナンス、管理されます.
$ docker run node
このコマンドは、ドッキングセンターで見つかったノードイメージに基づいてコンテナを作成します.
Unable to find image 'node:latest' locally
latest: Pulling from library/node
5492f66d2700: Pull complete 
540ff8c0841d: Pull complete 
a0bf850a0df0: Pull complete 
d751dc38ae51: Pull complete 
9720a112e886: Pull complete 
c0fdd5e0e250: Pull complete 
7f8aea8452c5: Pull complete 
ff64236f11e4: Pull complete 
d1c060206d96: Pull complete 
Digest: sha256:<image-id>
Status: Downloaded newer image for node:latest
表示node:latestの画像がローカルで見つからない場合は、センタの画像を入力してダウンロードする.中心のノードイメージに基づいてコンテナを作成しました.もちろん、ノードはソフトウェアにすぎません.ノードを実行してインタラクティブshellを得ることができます.ただし、既定では、コンテナは周囲の環境から隔離されています.すなわち,コンテナ内部で動作するインタラクティブシェルは,そのシェルが我々に露出するという意味ではない.
とにかく、私たちの最初の容器が作成されました.端末に次のコマンドを入力します.
$ docker ps -a
このうちpsはプロセスの略である.-aタグを使用して、ドッキングステーションによって作成されたすべてのコンテナとすべてのプロセスを表示します.
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS                       PORTS     NAMES
945a5710bb09   node           "docker-entrypoint.s…"   7 minutes ago    Exited (0) 7 minutes ago               hopeful_diffie
9621be7a75a0   8a7a53128083   "docker-entrypoint.s…"   54 minutes ago   Exited (137) 9 minutes ago             nervous_cerf
bbad01a8ebcf   8a7a53128083   "docker-entrypoint.s…"   11 hours ago     Exited (137) 11 hours ago              condescending_margulis
最後に生成されたnode画像.名前が自動的に取得され、Exitedに停止しました.後で、名前の設定方法と一般的なコンテナの構成方法について詳しく説明します.
とにかく、何が起こったのか、それはもう実行されません.前述したように、容器は隔離運転されているからです.ノードイメージに基づいてコンテナを作成して実行しましたが、これは意味がありません.では、次のコマンドを入力します.
$ docker run -it node
これは、ホストを介してインタラクティブなセッションをコンテナから露出することを意味します.これで、ノードコマンドを実際に実行できるインタラクティブなノード端末に入ります.たとえば、Shellが1+1と入力すると、次のようになります.
Welcome to Node.js v17.7.2.
Type ".help" for more information.
> 1+1
2
> 
ここでは、ノードAPIを使用して結果を得ることができます.ここで重要なのは、ノードが作成されたコンテナで実行されていることです.-itを追加することで、ターミナルに入り、コンテナとコンテナで実行されているノードと対話することができます.しかし、ノードは私たちのコンピュータで実行されていません.上のShellから,ノードが17.7.2バージョンで対話していることが分かる.Ctrl + Cをダブルクリックしてプロセスを終了し、node -vを使用してコンピュータノードのバージョンを表示します.
$ node -v
v16.14.0
私のコンピュータノードのバージョンは16.14です.つまり、さっきのノードは絶対に私のコンピュータのノードを使うのではなく、私のコンピュータにノードがインストールされていなくても、同じ結果が得られます.これが容器を使う方法です.これはコンテナ操作の最初のステップであり、画像とコンテナの開始でもある.
すなわち、画像は、コンテナに必要なすべてのコンテンツを保存するために使用され、runコマンドを使用して画像インスタンスを作成する.これにより、画像ベースの特定のコンテナが作成されます.docker ps -aコマンドを再度入力します.
CONTAINER ID   IMAGE          COMMAND                  CREATED             STATUS                        PORTS     NAMES
72fc81d7af38   node           "docker-entrypoint.s…"   10 minutes ago      Exited (0) 5 minutes ago                hardcore_swanson
945a5710bb09   node           "docker-entrypoint.s…"   26 minutes ago      Exited (0) 26 minutes ago               hopeful_diffie
9621be7a75a0   8a7a53128083   "docker-entrypoint.s…"   About an hour ago   Exited (137) 27 minutes ago             nervous_cerf
bbad01a8ebcf   8a7a53128083   "docker-entrypoint.s…"   12 hours ago        Exited (137) 11 hours ago               condescending_margulis
うーん、同じノードイメージで作成されたコンテナがまた現れ、閉じました.runコマンドを使用して、同じ画像に基づく異なるコンテナを作成および実行できることがわかります.