7

User DataDocker を実行している EC2 サーバーがあり、サーバーの起動時にプライベート Dockerhub イメージがプル/実行されるように、以下を追加したいと思います。

#!/bin/bash
sudo docker run -p 3333:3333 -d --name Hello myusername/hello

しかし、プライベート リポジトリにアクセスするために認証を行う方法がわかりませんmyusername/hello

Github ではデプロイ キーを作成してアップロードしますが、Dockerhub は同様のデプロイ キー オプションを提供しますか?

4

3 に答える 3

2

User Data更新:クレジットをスクリプトにハードコーディングする必要のないより良い方法については、私の他の回答を参照してください


起動時にプライベート Dockerhub リポジトリをプルするインスタンスを取得するには、コマンドの前に起動スクリプトを実行sudo docker loginするだけで認証できます。User Datasudo docker run

#!/bin/bash
sudo docker login -u <username> -p <password> -e <email>
sudo docker run -p 3333:3333 -d --name Hello myusername/hello

これには、Dockerhub クレデンシャルをUser Dataスクリプトにハードコーディングする必要があり、理想的とは言えませんが、機能します。

于 2015-01-09T22:15:08.797 に答える
2

ECS (EC2 インスタンスを作成します) を使用したいが、ソリューションでファイル ストレージを利用したくない場合は、より良い方法を見つけました。@AJB によって提案されたソリューション (「ユーザー データ」プロパティと「docker login」出力) を混合しました。プロセスについて説明します。

  1. ログインが成功すると、マシンで使用docker loginします(私が知る限り、sudoは必要ありません)cat .docker/config.json。次のような結果が得られます。

{"auths":{"https://index.docker.io/v1/":{"auth":"KEY","email":"EMAIL"}}}

  1. KEYEMAIL脇にコピー
  2. ECS で - clusterserviceおよびtask definition(イメージ プロパティを に設定してyourusername/hello) を作成すると、EC2 の構成が自動的に生成されます。
  3. EC2 メニューで - [Launch Configuration] メニューに移動しlaunch configuration、ECS によって生成されたものを選択します。
  4. ボタンをクリックしcopy launch configurationて好みに合わせて編集します (AMI を変更することもできますが、Amazon Linux AMI必要がない限りそのままにしておくことをお勧めします。新しいわかりやすい名前を設定してください)
  5. Edit Details -> Advanced Details 内で User Data プロパティを編集し、以下を追加します (KEY と EMAIL を置き換えます)。
mkdir /home/ec2-user/.docker/
echo '{"auths":{"https://index.docker.io/v1/":{"auth":"KEY","email":"EMAIL"}}}' >> /home/ec2-user/.docker/config.json
sudo stop ecs
sudo start ecs
  1. Auto Scaling Groups メニューに切り替え、ECS によって生成されたものを選択します
  2. [編集] をクリックして、作成した起動構成を選択し、保存します。
  3. インスタンスメニューに切り替え、実行中のインスタンスを終了します
  4. あなたは終わった!

Auto Scaling Group によって新しいインスタンスがまもなく起動されます。このグループは、DockerHub アカウントのプライベート リポジトリへのアクセスを許可する新しい構成を使用します。

于 2015-10-06T14:09:45.880 に答える