web-dev-qa-db-ja.com

リモートubuntuサーバーにDockerコンテナをデプロイする方法は?

Dockerコンテナ内にAPIを実装しました。このコンテナをリモートubuntuサーバーにデプロイします。どうすれば正確にできますか?私のAPIは多くのリソースを使用し、MLDBフレームワークを使用して実装しました。このリモートubuntuサーバーにAPIを含むコンテナをデプロイしたい。これまで、AWSとDigitalOceanにAPIをデプロイするための多くのガイドを見つけましたが、リモートubuntuサーバーにアクセスできるので、それらの権利は必要ありませんか?では、他の誰かが自分のAPIをテストできるように、どのようにコンテナをデプロイできますか?私のAPIを展開するより良い方法がある場合(できれば無料または安価で)、私に知らせてください。

前もって感謝します。

16
sniper71
  1. セットアップ パスワードレスSSH ターゲットマシンで

  2. 次のコマンドを実行して、ターゲットのDockerをリモートで管理しますVM(必要に応じてDockerもインストールします):

docker-machine create --driver generic --generic-ip-address = 10.123.2.74 --generic-ssh-user = docker --generic-ssh-key〜/ .ssh/id_rsa some_name

汎用ドライバーに関する詳細情報を見つけることができます ここ

  1. 新しく構成されたDockerマシンに必要な環境変数を設定します。

eval $(docker-machine env some_name)

  1. この端末/ cmdウィンドウで実行されるDockerコマンドは、リモートマシンで実行されます。テスト実行するには:

ドッカーps

これで、ローカルで行うのとまったく同じようにdockerコンテナーを実行できます。

PS-Windowsで実行されているDockerインスタンスをDocker Toolboxを介してリモートで管理する必要がある場合、少し複雑になります。 (Docker linux VM(ssh、docker engine、container ports)の必要なポートへのネットワークアクセスを解決する必要があります。VirtualBoxのブリッジネットワークアダプターまたはポートフォワーディングを介して。Windowsファイアウォールの問題も解決します。 )

9
Sergiu Indrie

Docker 18.09. のリリース以来、これは非常に簡単になりました。このリリースでは、sshプロトコルのサポートがDOCKER_Host環境変数に、-H引数がdocker ...コマンドにそれぞれ追加されました。

まず、 ターゲットマシンへのSSHアクセス が必要です(これはおそらく、どのアプローチでも必要になります)。

次に、次のいずれか:

# Re-direct to remote environment.
export DOCKER_Host="ssh://my-user@remote-Host"

# Run a container. To prove that we are on remote-Host, this will print its hostname.
docker run --rm --net Host busybox hostname -f

# All docker commands here will be run on remote-Host.

# Switch back to your local environment.
unset DOCKER_Host

または、必要に応じて、1つのコマンドだけですべてを一度に実行できます。

docker -H "ssh://my-user@remote-Host" run --rm --net Host busybox hostname -f

これはdocker-compose v.1.23.1(執筆時点の最新バージョン)以降ではまだサポートされていないことに注意してください。ただし、 次のリリースの一部になります

7
Dirk

ローカル開発環境にdocker-machineをインストールし、generic driverを使用してremote_serverを追加することをお勧めします。eval $(docker-machine env remote_server)を使用してそれに接続し、APIをデプロイできます。

ドライバーは作成時にタスクのリストを実行します。

  • Dockerがホストで実行されていない場合、自動的にインストールされます。
  • ホストパッケージを更新します(apt-get update、yum update…)。
  • Dockerデーモンを保護する証明書を生成します。
  • Dockerデーモンが再起動されるため、実行中のすべてのコンテナーが停止します。
  • ホスト名はマシン名に合わせて変更されます。

リモートコンテナへのローカルコンテナの展開:

remote_serverを介してdocker-machinegeneric driverに追加したら、次を実行してAPIをデプロイします。

  • サーバーの環境を取得:docker-machine env remote_server

  • シェルをサーバーに接続します:eval $(docker-machine env remote_server)

  • ビルドAPIイメージ:docker build -t api_image .。 (Dockerfile DIR)

  • コンテナを実行:docker run -d -p 1111:1111 api_image

  • curlを使用:curl $(docker-machine ip remote_server):1111

これがあなたのお役に立てば幸いです。

3
thoba