10
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Dockerイメージをレジストリに登録する(ECR含む)

Last updated at Posted at 2019-08-04

Dockerイメージの登録についてまとめておきます。

ローカルレジストリに登録

ローカルレジストリを作成

ローカル環境にdockerレジストリを作成します。
Docker Hubに公式イメージの「registry」が用意されていますので、今回はこちらを利用します。

以下コマンドで5000番ポートにレジストリを立ち上げます。

$ docker image pull registry:latest
$ docker container run -t -p 5000:5000 registry:latest

登録するDockerイメージを作成します。

今回はgo言語でHello World!!を返却するWebアプリを作成してみます。
以下2つのファイルが今回利用するgoのWebアプリケーションとDockerfileになります。

main.go
package main

import (
    "fmt"
    "net/http"
)

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "Hello World!!")
    })

    http.ListenAndServe(":8080", nil)
}
Dockerfile
FROM golang:latest

COPY main.go /go/src/
CMD ["go", "run", "/go/src/main.go"]
ビルドします
$ docker image build -t example/go:latest .
Sending build context to Docker daemon  3.072kB
Step 1/3 : FROM golang:latest
 ---> 9fe4cdc1f173
Step 2/3 : COPY main.go /go/src/
 ---> Using cache
 ---> 38b645fa14c8
Step 3/3 : CMD ["go", "run", "/go/src/main.go"]
 ---> Using cache
 ---> 273a059475c4
Successfully built 273a059475c4
Successfully tagged example/go:latest
タグをつけます

形式はdocker image tag [ローカルのイメージ名]:[タグ名] [リポジトリ名][イメージ名]:[タグ名]になります。

$ docker image tag example/go:latest localhost:5000/example/go:20190804

Dockerイメージを作成したレジストリに登録します。

以下コマンドでDockerイメージをレジストリに登録することが可能です。
docker image push [リポジトリURL][作成したタグ名]

$ docker image push localhost:5000/example/go:20190804

作成されたことを以下のコマンドで確認可能です。

$ curl http://localhost:5000/v2/_catalog
{"repositories":["example/go"]}

念のためレジストリからローカルにpullしてみます。

最初にローカルにあるタグを削除します。

$docker image rm localhost:5000/example/go:20190804
$ docker image ls | grep example/go
example/go                                                       latest              e4a2773a9830        14 minutes ago      781MB

20190804のタグは削除されました。

pullします。

$ docker pull localhost:5000/example/go:20190804
20190804: Pulling from example/go
Digest: XXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Status: Downloaded newer image for localhost:5000/example/go:20190804
localhost:5000/example/go:20190804
$ docker image ls | grep example/go
example/go                                                       latest              e4a2773a9830        15 minutes ago      781MB
localhost:5000/example/go                                        20190804            e4a2773a9830        15 minutes ago      781MB

5000番ポートに作成したレジストリからpull出来ました。

ECRに登録する

次にECRに登録してみます。
aws cliの設定は既に終わっている前提とします。

ECRにリポジトリを作成

ECRの画面からリポジトリの作成を選択します。

スクリーンショット 2019-08-04 21.20.34.png

リポジトリ名を入力してリポジトリの作成をクリックします。
今回はexampleにしてみます。

スクリーンショット 2019-08-04 21.21.46.png

リポジトリが作成されました。

スクリーンショット 2019-08-04 21.25.57.png

ECRにpushする

ECRにログイン
$(aws ecr get-login --no-include-email)
レジストリを確認します
$ aws ecr describe-repositories

{
    "repositories": [
        {
            "repositoryArn": "arn:aws:ecr:ap-northeast-1:XXXXXXXXXXXX:repository/example",
            "registryId": "XXXXXXXXXXXX",
            "repositoryName": "example",
            "repositoryUri": "XXXXXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com/example",
            "createdAt": 1564921553.0
        }
    ]
}
pushします

push先のリポジトリはECRで作成したリポジトリになります。
ECRの画面にあるURIを指定します。

$ docker image tag example/go:latest XXXXXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com/example:20190804
$ docker push XXXXXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com/example:20190804

ECRにタグが作成されました。

スクリーンショット 2019-08-04 21.37.52.png

ちなみにAWS CLIでも確認可能です。

$ aws ecr describe-images --repository-name example
{
    "imageDetails": [
        {
            "registryId": "XXXXXXXXXX",
            "repositoryName": "example",
            "imageTags": [
                "20190804"
            ],
            "imageSizeInBytes": 296164653,
            "imagePushedAt": 1564922252.0
        }
    ]
}

参考にしたもの

Docker/Kubernetes 実践コンテナ開発入門
大変分かりやすい本でした。ありがとうございました。

10
6
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?