
【完全保存版】Dockerイメージをリモートのレジストリにアップロードしてみよう!
0 はじめに
こちらの記事は、この動画を参考に作っています。
1 Docker Imageの作成
1 Dockerfileの作成
まずは、下のように、「Dockerfile」を作成します。
FROM alpine
CMD [ "echo", "Hello World" ]
FROM alpineの部分で、「alpine」イメージを使用することを指定してます。
「CMD」部分で「Hello World」と出力されるように指定しています。

2 imageのビルドを行う
次に、こちらのコマンドで、イメージのビルドを行います。(名前は任意です。)
docker build -t hello .
tオプションで、タグ(名前)をつけています。
また、「.」でカレントディレクトリの「Dockerfile」を使用することを指定しています。

下のように、「hello」という名前の「image」ができました。

3 imageを実行する
では、そのイメージを実行してみましょう。
docker run hello
下のように、実行ができました。

2 GithubのPATの作成について
次に、GithubのPATを作成しましょう。
作成方法は、こちらの第二章をご参照ください。
違いとしては、こちらの「write:packages」「delete:packages」の権限を与えます。
(この二つだけで大丈夫です。)

すると、PATができました。
こちらの情報は決して人に見せることなく、安全に保管してください。

3 Githubへのプッシュの実行について
1 imageへのタグ付けについて
次に、「image」に新しいタグ付けを行います。
ghcr.io は "GitHub Container Registry" の略です。
GitHubが提供するコンテナイメージのホスティングサービスのドメインです。
docker tag <image名> ghcr.io/<ユーザー名>/hello:latest
ちなみに、私は下でタイポしてしまったので、後で修正しました。

下のように、新しい名前で「image」を作成することができました。

2 Githubへのプッシュ(まだ認証していないので、失敗することの確認)
では、このイメージをGithubにプッシュしましょう。
docker push ghcr.io/ytakahashi2020/hello
すると、このようなエラーが出ます。
これは、まだ認証を行っていないので、当然の結果ではあります。
私のGithubのパッケージに突然誰かがpushをしてきたので、エラーになったということです。

(ちなみに、私はタイポしたため、このようなエラーが出ていました。)

3 認証の実行
では、こちらのコマンドで認証を行います。
<your PAT>の部分にPATを入れます。
「ghcr.io」にログインを行っています。
「--password-stdin」で「echo」からの標準入力を受け入れています。
echo <your PAT>| docker login ghcr.io -u USERNAME --password-stdin
下のように、「Login Succeeded」となり、ログインに成功したようです。

4 Githubへのプッシュの実行
では、改めて、プッシュを行ってみましょう。
下のように、「ghcr.io/ytakahashi2020/hello」で参照できることが確認できました。

「github」を確認すると、「Packages」の中に格納されていることが確認できました。

中を見てみると、下のように、格納されていることが確認できました。

今回は以上です。
いいなと思ったら応援しよう!
