この記事は,2.0 CircleCIのリリース後に発表した記事を补足する内容です.2.0のリリースでは泊坞执行人を使用したビルドのサポートが実装されました。しかしリリース后,CircleCIユーザーにとって泊坞の使用経験が少ないことが特に大きな障壁になっていることが判明しました。私も実际に,何人もの开発者とのやり取りや,コミュニティ,各种イベントでそのような意见を耳にしています。多くの开発者が,継続的インテグレーションのパイプラインでコンテナテクノロジーを利用する方法を十分に把握していないというのです。

そこで今回は前回の記事の延长として,さらに便利な泊坞コマンドについて详しく说明していきます。

码头工人とは

前回の記事では码头工人について以下のように簡単に説明しました。

码头工人は開発者とシステム管理者がコンテナを使用してアプリケーションを開発,デプロイ,実行するためのプラットフォームです。

码头工人は,アプリケーションを構成して码头工人イメージにパッケージ化するアプリケーションパッケージングツールでもあります。码头工人イメージを基に,アプリケーションインスタンスを実行する码头工人コンテナを作成できます.Dockerを使用すると,ランタイム环境の隔离,コードの一贯性や移植性の确保など,多くのメリットがあります.Dockerコンテナは,泊坞窗引擎をサポートするあらゆるオペレーティングシステムで実行可能です。

码头工人の基本用語

ここでは,基本的な码头工人コマンドと码头工人関連の用語を紹介します。リンク先のページではさらに詳細を確認できます。このセクションをお読みになれば,码头工人についてさらに理解し,遗嘱执行人を自在に制御できるようになります。コマンドは,码头工人引擎がインストールされている任意のコンピューター上でローカルに実行可能です。

码头工人イメージのビルド

  • Dockerfileは,イメージをアセンブルするためにコマンドラインで呼び出せるすべてのコマンドが含まれているテキストドキュメントです。

Dockerfileは,码头工人イメージ作成のブループリントとなるファイルです。Dockerfileテンプレートには、基盤として使用するベース オペレーティングシステム イメージのような要素と、依存関係をインストールまたは構成する実行コマンド、ローカルのソースコードやアーティファクトをターゲットの Docker イメージにプッシュするコピー コマンドが含まれます。以下に、シンプルな Node.js アプリケーションの Dockerfile の例を示します。

安装应用程序依赖项使用一个通配符来确保两个包。json和package-lock。json被复制#在可用的地方(npm@5+)复制包*。运行npm install—only=生产#如果你正在为生产#构建代码运行npm install—only=生产# Bundle应用程序源拷贝。暴露5000 CMD ["npm", "start"]
  • 泊坞窗图片は,ローカルで見つかった码头工人イメージの一覧を表示します。

このコマンドを使用すると,すべての码头工人イメージと,現在ローカルマシン上にある関連データの一覧を確認できます。ターミナルにディレクトリの中身を表示するLinuxのLSのコマンドや窗口dirコマンドに相当します。このコマンドは,码头工人イメージをローカルで管理、メンテナンス、ビルドする方法を把握するのに非常に有用です。以下に、泊坞窗图片の実行結果のサンプルを示します。

库标签影像ID创建大小ariv3ra / nodejs-circleci最新f419e4a6b1b8 11天前943 mb节点10 01 b816051d34 2周前911 mb circleci / python第3.7.6 0 d2975896c73 5周前1.43 gb ariv3ra / infrastructure-as-code101最新cb21a36a2973 8周前929 mb python第3.7.6 879165535 a54 2个月前919 mb circleci /生锈1-buster 218329 b929cf 2个月前1.68 gb锈1-buster f5fde092a1cd 2个月前1.19 gb python 3.7.4 9 fa56d0addae 6个月前918 mb

码头工人命名規則:上记のコマンドは,有效なDockerfileを组み合わせることで,Dockerfileに定义されている実行コマンドに基づいて泊坞イメージを构筑します。イメージを构筑し,コンテナを実行するうえで非常に重要なのは,泊坞命名规则を理解することです。このコマンドで码头工人イメージを構築するときは,ターゲットとなる码头工人イメージの名前を指定します。码头工人イメージは,スラッシュで区切られた名前コンポーネントから成る命名規則に従います。アルファベットの小文字,数字,区切り文字も使用できます。区切り文字には,ピリオド,アンダースコア(1個または2個),ダッシュ(1個以上)があります。名前コンポーネントの先頭文字または終了文字として区切り文字を使用することはできません。码头工人タグの名前は,英数字,アンダースコア,ピリオド,ダッシュといった有效なASCII文字で构成されている必要があります。タグ名は最大128文字で,先头文字にはピリオドやダッシュを使用できません。名前とタグを使用してイメージをグループ化することができます。今回はこの命名规则を使用します。

命名规则についてご理解いただけたところで,ここからは上记の例のDockerfileに基づいて码头工人イメージを構築していきます。今回は,punkdata / nodejs-circleciGit的リポジトリを使用します。ローカルにコピーし,$ cdでプロジェクトディレクトリに移動しましょう。

次に以下のコマンドを実行して,プロジェクトのソースコードとサンプルのDockerfileを基に新しい码头工人イメージをビルドします。

docker build -t tutorial/circleci-node:10。

ビルドコマンドを実行すると,次のような结果が表示されます。

发送生成上下文多克尔守护程序98.07MB步骤1/7:从节点:10 ---> 01b816051d34步骤2/7:WORKDIR / usr / src目录/应用--->使用高速缓存---> 12b2edc2b97c步骤3/7:COPY包*上传.json ./ --->使用高速缓存---> 53b5b8e4e654步骤4/7:RUN NPM --only安装=生产--->使用高速缓存---> eefdf560bc4d步骤5/7:COPY。。---> aa7d54e955c6步骤6/7:公开5000 --->运行中cc427dbafdcc卸下中间容器cc427dbafdcc ---> 4ce9084e39eb步骤7/7:CMD [ “NPM”, “启动”] --->在f6e854599ddc运行除去中间容器f6e854599ddc ---> 79a8d94cbf42成功地建立79a8d94cbf42成功标记的教程/ circleci节点:10

泊坞窗图片コマンドを実行すると,结果の一覧に新しく作成された泊坞イメージが表示されます。

$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE tutorial/circleci-node 10 79a8d94cbf42 4分钟前1.03GB

码头工人イメージが完成しました。この码头工人イメージはすぐに使い始めることができます。次のセクションでは,Docker容器の形式で,この码头工人イメージの新しいインスタンスを作成します。

码头工人コンテナ

  • 码头工人コンテナは,アプリケーションを隔离して大规模に実行できるように设计されています.Dockerコンテナを使用すると,アプリケーションの管理と実装を合理化することができます。

泊坞窗コンテナの作成と実行に取り挂かる前に,コンテキストを追加しておきましょう.Dockerコンテナは泊坞イメージを基に作成されたオブジェクトです.Dockerイメージはテンプレートであり,クッキー型のようなものです。この型によって,クッキー生地から同じ形のクッキーを简単に作成することができます。そうして作られる1つひとつのクッキーが泊坞コンテナです。クッキーは,成形に使用するクッキー型(泊坞イメージ)の种类によって形が変わります。私の比喩にならうなら,多克尔イメージはクッキー型であり,そのクッキー型で成形された个々のクッキーは泊坞コンテナということになります。

ちょっとおなかが空いてきたところで,いよいよコンテナの実行を开始します。

このコマンドは,多克尔コンテナを作成して実行する役目を持つ,多克尔ランタイムの最重要コマンドです。

nodetest01という名前の新しいコンテナを実行します。

docker run -d -p 5000:5000——name nodetest01 tutorial/circleci-node:10

5000年これで,ポートを使用して,作成したばかりの新しいコンテナ内でnode . jsイメージを実行できるようになりました。Webブラウザーで,HTTP://本地主机:5000を開きます。すると,このアプリケーションにより,Webページに“欢迎使用CircleCI CI / CD 101 !”という静的なテキストが表示されます。ターミナルで码头工人psコマンドを実行して,コンテナが実行されていることを確認します。これについては,次のセクションで説明します。その前に,別のコンテナを実行して,新たにアプリケーションインスタンスを開始しましょう。

先ほどのコンテナにはnodetest01という名前を付けました。コンテナ名は一意である必要があるので,次のコンテナにはnodetest02という名前を付けます。さらに,新しいコンテナではポート番号も変更しなければなりません。复数のアプリケーションが同じネットワークインターフェイス上の同じポートを使用することはできないので,50005001に変更します。

ターミナルで次のように搬运工人运行コマンドを実行します。

搬运工运行-d -p 5001:5000 --name nodetest02教程/ circleci节点:10

完璧です!これで,ローカルマシンで2つのコンテナを実行していることになります。ブラウザーのアドレスバーにHTTP://本地主机:5001と入力して,2つ目の泊坞コンテナでアプリが実行されていることを确认します。

搬运工人运行コマンドは非常に堅牢性が高く,多くのプロパティフラグと構成フラグが使用できますが,今回は詳しくは取り上げません。码头工人コンテナのさまざまな実行方法についてご自分でドキュメントに目を通し、知識を蓄えることを強くお勧めします。Docker コンテナ コマンドの詳細については、こちらのドキュメントをご覧ください。

  • 码头工人psを実行すると,実行中の泊坞コンテナの一覧が表示されます。このコマンドは码头工人形象コマンドとよく似ていて,実行中のアクティブなコンテナを表示します。-一种フラグを指定すると,実行中のコンテナと実行中でないコンテナがすべて表示されます。

ターミナルでこのコマンドを実行すると,ここまでに作成した2つの実行中のコンテナを确认できるはずです。

码头工人ps

node01コンテナとnode02コンテナはどちらも実行中なので,次のような结果が表示されます。

容器ID图像命令创建的状态端口名称dfd30181e15c tutorial/circleci-node:10 "docker-entrypoint。>5000/tcp nodetest02 0efaf7f11780 tutorial/circleci-node:10”docker-entrypoint。上升28分钟0.0.0.0:5000->5000/tcp nodetest01

このコマンドは,搬运工人运行コマンドで作成した既存のコンテナを起动する目的でのみ使用します。搬运工人运行コマンドの実行時に——rm = trueフラグを指定していない限り,新しく作成されたコンテナは永続化し,码头工人开始コマンドや码头工人停止コマンドによって再利用できます。

次のコマンドを実行して,実行中のコンテナを停止してみましょう。

docker停止nodetest01

実行中だったコンテナが非アクティブになり,停止します。これらのコンテナは停止しているので,泊坞窗PS -aコマンドを実行すると,次のようにコンテナが停止しているという结果が表示されます。

容器ID IMAGE命令创建状态端口NAMES dfd30181e15c教程/ circleci节点:10 “搬运工-entrypoint.s ...” 32分钟前结束(0)38秒前nodetest02 0efaf7f11780教程/ circleci节点:10“搬运工-entrypoint.s ...“大约一小时前结束(0)38秒前nodetest01

これらのコンテナは停止していますが,永続化されているので,码头工人开始コマンドで再起動できます。

nodetest01コンテナを起動して,码头工人日志机能の使い方を绍介する次のセクションへと进みましょう。

码头工人开始nodetest01

ここで泊坞窗PS -aコマンドを実行すると,このコンテナのステータスは最多约30秒的のように実行中として表示されます。

このコマンドを実行すると,開発者は実行時のログを表示できます。アプリケーションはコンテナ内で実行されているので,日志コマンドは重要なアプリ出力を確認するのに便利です。アプリの実行状況を把握し,必要に応じてデバッグやトラブルシューティングを行うのに役立ちます。

nodetest01コンテナに対して码头工人日志コマンドを実行してみましょう。

搬运工日志nodetest01

このコマンドを実行すると,次のような结果が表示され,コンテナ内のアプリが実行中であることがわかります。

节点服务器正在运行。>节点app.js节点服务器正在运行。

永続的な码头工人コンテナは,ホストのディスクスペースとリソースを消費します。ほとんどの場合,コンテナは使い捨てです。したがって,すべてのコンテナをディスク上に永続化する必要はありません。コンテナが不要になったら,ホストから永久に削除しましょう。码头工人rmコマンドを実行すれば,ホストからコンテナを永久に削除できます。nodetest02コンテナはもう不要なので,削除してディスクスペースを節約しましょう。なお,このコマンドでは,停止している非アクティブなコンテナのみを削除できます。実行中のアクティブなコンテナに対して実行するとエラーが発生するので注意してください。

nodetest02コンテナに対して码头工人rmコマンドを実行します。

码头工人rm nodetest02

この後泊坞窗PS -aコマンドを実行すると,nodetest02コンテナがホストから削除されたことが確認できます。このコマンドのその他のプロパティとフラグについては,こちらのドキュメントを参照してください。

  • 码头工人rmiは,ローカルの码头工人イメージを削除します。

このコマンドは,ホストから泊坞イメージを削除するときに使用します。ホスト上に特定のイメージに基づくコンテナが复数ある场合,同じイメージに基づくコンテナを削除することはできません。まず,対象のコンテナを停止し,削除する必要があります。その后,码头工人rmiコマンドで泊坞イメージを削除できるようになります.docker RMIコマンドの详细についてはこちらのドキュメントをご覧ください。

泊坞窗イメージのデプロイ

多くの码头工人イメージは公開されており,码头工人イメージのオンラインセントラルホスティングソリューションである码头工人中心注册でホスティングされています。码头工人中心では、インターネット接続さえあればだれでも、公開されているイメージをレジストリから自身のローカル マシンまたはサーバーにプルすることができます。ユーザーとして登録すれば、作成したコンテナをアップロードして一般にシェアすることも可能です。こうすれば、そのコンテナをだれでも码头工人中心からイメージをプルできるようになります。

ここからは,码头工人中心の关连コマンドをいくつか绍介していきます。

  • 搬运工人拉は,レジストリからイメージまたはリポジトリをプルします。

このコマンドを使用すると,码头工人中心から有効な码头工人イメージをダウンロードできます。公開されている码头工人イメージは認証不要です。レジストリが非公開の場合は,割り当て済みの認証情報(通常はユーザー名とパスワード)を使用して認証を行う必要があります。

このコマンドでは泊坞レジストリに対して认证を行うことができます。このログインコマンドを使用する场合は,泊坞枢纽アカウントのユーザー名とパスワードを. txtファイルに入力し,認証情報の漏えいを防止する必要があります。

  • 搬运工推は,イメージまたはレポジトリをレジストリにプッシュします。

このコマンドでは码头工人レジストリにイメージをアップロードできます。アップロードには,有効な認証情報が必要です。

まとめ

これですべての手顺が完了しました。今回は,多克尔の用语とコマンド,コンテナとその使用方法について少し详しく解说しました。绍介したコマンドは,多克尔ランタイムで使用する最も一般的なコマンドです.Dockerとコンテナのスキルを磨きたい场合は,これらのコマンドとそのプロパティおよびフラグについてさらに详しく学习することをお勧めします。

基本的なコマンドについて知識を身につけておけば,CircleCIを使い始めたばかりのユーザーの前に立ちはだかる大きな障壁も,乗り越えられるようになります。

CircleCIについてもっと详しく知りたいという方は,ドキュメントサイトをご覧ください。どうしても解決できない問題にぶつかったときには,https://discuss.www.drag240sx.com/からCircleCIコミュニティやフォーラムサイトにアクセスしてみてください。