beta

Gitlabの2段階認証下でコンテナレジストリにPushする方法

Gitlabの2段階認証下で今まで通りにコンテナレジストリにPushしようとしたら、エラーが出てPush出来なかったので、対応方法をまとめました。

公開日:2020年12月23日

普通にpushすると、、、

これまで通りに、Gitlabのコンテナレジストリにpushしようとすると、

unauthorized: HTTP Basic: Access denied\nYou must use a personal access token with 'api' scope for Git over HTTP.\nYou can generate one at https://gitlab.com/-/profile/personal_access_tokens

こんなエラーが出てpush出来ません。

エラー文言の通り、2段階認証をオンにしている場合は、パーソナル・アクセストークンを使った方式でしかログインが出来ません。

対応方法

Personal Access Tokensを発行する

アカウントページ(レポジトリページではない)の左メニューに「Access Tokens」というメニューがあるので、そこからアクセストークンを発行します。

レポジトリも含めてフルアクセスのトークンを発行してもいいですが、docker環境下で使うだけなら、

  • read_registry
  • write_registry

の二つだけを許可したトークンを発行しておくと、色々と管理が便利です。

発行したトークンコードは二度と表示されないので、きちんとコピーしておきます。

Gitlabのコンテナレジストリにログインする

続いて、docker pushするために、docker環境(ローカルPC、リモートサーバーなど)でGitlabのコンテナレジストリにログインします。

docker login registry.gitlab.com -u ユーザー名 -p アクセストークン

下記のコマンドが出ればログイン完了です。

Login Succeeded

Gitlabコンテナレジストリにプッシュする

ここまできたらこれまで通り、レジストリにDockerイメージをプッシュできます。

docker push registry.gitlab.com/ユーザー名/レポジトリ名

Gitlabの管理画面でコンテナイメージが更新されていればOKです。

ちなみに、Gitlab CI/CDから同一レポジトリのDockerイメージを読む場合は認証は不要です。


Gitlabの2段階認証下でコンテナレジストリにPushする方法を見てきました。

ネットで調べてもCI/CD環境下から設定などしかなかったので、リモートで使う場合はこちらの方法で行けると思います。

: gitlab