Docker: クイックスタート

Stackhero for Dockerの始め方

👋 Stackheroのドキュメントへようこそ!

Stackheroは、DockerクラウドCaaS (Containers as a Service) の即時利用可能なソリューションを提供し、多くの利点があります。例えば:

  • docker-compose up だけでコンテナを簡単に本番環境にデプロイ
  • HTTPSで保護されたカスタマイズ可能なドメイン名(例: https://api.your-company.com, https://www.your-company.com, https://backoffice.your-company.com)。
  • プライベートで専用のVMによる最適なパフォーマンスと強力なセキュリティ
  • ワンクリックでの簡単なアップデート

時間を節約し、生活を簡素化:StackheroのDocker CaaSクラウドホスティング ソリューションを試して、コンテナを本番環境にデプロイするのに5分しかかかりません!

Docker CLIはコンピュータにインストールされている必要があります。 まだインストールしていない場合は、こちらからダウンロードできます:https://www.docker.com/products/docker-desktop/

Stackhero for Dockerを使用すると、ローカルで作業するのと同じように、コンピュータからDockerサーバーにリモート接続できます。この設定により、通常のワークフローを維持しながら、プロダクションでコンテナを管理するための堅牢な方法を提供します。

これを実現するために、Dockerの「コンテキスト」が利用されます。Dockerコンテキストを使用すると、コンピュータ上でDocker CLIを使用し、コマンドを実行する場所を指定できます:通常のローカルDockerデーモンか、Stackhero for Dockerインスタンスです。

Stackhero for Dockerインスタンスにリモート接続するには、まずその証明書をインストールする必要があります。これらの証明書は、コンピュータとStackhero for Dockerインスタンス間の安全な認証と暗号化を保証します。

コンピュータ上で、次のコマンドを使用できます:

# HOSTはStackhero for Dockerインスタンスのドメイン名です(<XXXXXX>.stackhero-network.com)。
# SERVICE_IDはStackheroサービスIDです。
# CERTIFICATES_PASSWORDはStackhero for Docker設定で定義されたパスワードです。
(export HOST="<XXXXXX>.stackhero-network.com"
export SERVICE_ID="<SERVICE_ID>"
export CERTIFICATES_PASSWORD="<CERTIFICATES_PASSWORD>"

cd /tmp/ \
  && curl -o certificates.tar https://docker:$CERTIFICATES_PASSWORD@$HOST/stackhero/docker/certificates.tar \
  && tar -xf certificates.tar \
  && (docker context rm -f $HOST 2> /dev/null || true) \
  && docker context create $HOST \
    --description "$SERVICE_ID ($HOST)" \
    --docker "host=tcp://$HOST:2376,ca=ca.pem,cert=cert.pem,key=key.pem")

これで、サービスのドメイン名にちなんで名付けられたDockerコンテキストが作成されました。すべてのコンテキストを表示するには、docker context lsコマンドを実行できます。

警告 サービスドメインを更新すると、証明書が変更され、再インストールが必要になります。

現在、docker psコマンドでコンテナをリストすると、Docker CLIはローカルDockerデーモンを使用し、コンピュータ上で実行中のコンテナを表示します。

例えば、このコマンドを実行してDockerデーモンのパブリックIPを取得できます:docker run --rm alpine wget -q -O - ifconfig.me。コンテナがコンピュータ上で実行されているため、インターネットルーターのIPが表示されます。

Dockerコンテキストを変更して、Stackhero for Dockerインスタンスを使用しましょう。単にdocker context use <XXXXXX>.stackhero-network.comコマンドを実行します。これで、コンピュータ上で開始されたDockerコマンドは、リモートDockerデーモンで安全に実行されます。

同じコマンドを再度実行して、DockerデーモンのパブリックIPを取得します:docker run --rm alpine wget -q -O - ifconfig.me。これで、Stackhero for DockerインスタンスのパブリックIPが表示され、コンテナがサーバー上で実行されていることが確認できます。

ローカルDockerデーモンの使用に戻るには、Dockerコンテキストを「default」に切り替えるだけです:docker context use default

リモートコンテナにボリュームをマウントすると、アクセス可能なデータはリモートサーバー上のものであり、コンピュータ上のものではありません。 したがって、docker run -it -v ${PWD}:/mnt alpineのようなコマンドを実行しても、期待通りにコンピュータのディレクトリがマウントされることはありません。

Docker CLIと同様に、Docker-compose CLIも現在のコンテキストを使用します。したがって、docker context use <XXXXXX>.stackhero-network.comでリモートインスタンスに切り替えた後は、すべてのDocker-composeコマンドもリモートインスタンスで実行されます。

docker contextコマンドを使用することは効果的ですが、スクリプトやMakefileでコンテキストを扱う際には最良のアプローチではないかもしれません。 そのような場合には、DOCKER_CONTEXT環境変数の使用を検討してください。詳細は、当社の高度なドキュメントページに記載されています。