はじめに
Dockerイメージを格納するDockerレジストリにCA証明書を設定する方法を紹介する。プライベートレジストリを構築している場合やVPNやプロキシを利用している場合に有用。
エラー内容
ケース1:プライベートレジストリにログインできない
Dockerレジストリにログインしようとすると、
docker login <your_docker_registry_host>:<your_docker_registry_port> -u <user> -p <password>
- : Dockerレジストリのホスト名(IPアドレス)
- : Dockerレジストリのポート番号
以下の、x509認証エラーが発生する。
Docker login時にx509認証エラー
Error response from daemon: Get <your_docker_registry_host>:<your_docker_registry_port>/v2/: x509: certificate signed by unknown authority
ケース2:DockerHubのレジストリからイメージをダウンロードできない
VPNやプロキシを利用している場合に、DockerHubのレジストリ(docker.io)からDockerイメージをダウンロードしようとするとx509認証エラーとなる。
docker.io に独自CAを追加する場合、プロキシが証明書を差し替えていることが前提であり、通常の環境では不要。
docker: Error response from daemon: Get “https://registry-1.docker.io/v2/ ”: tls: failed to verify certificate: x509: certificate signed by unknown authority.
動作確認環境
- Ubuntu 22.04 x86_64
- Docker
Client: Docker Engine - Community Version: 28.2.2 API version: 1.50 Go version: go1.24.3 Git commit: e6534b4 Built: Fri May 30 12:07:28 2025 OS/Arch: linux/amd64 Context: default
方法
-
CA証明書を取得
-
Dockerの設定ディレクトリにCA証明書をコピー
Dockerレジストリごとにフォルダを作成して、CA証明書をコピーする。sudo mkdir -p /etc/docker/certs.d/<your_docker_registry_host>:<your_docker_registry_port> cd /etc/docker/certs.d/<your_docker_registry_host>:<your_docker_registry_port> sudo cp <your_ca_file_path> .
- : CA証明書のダウンロードパス(例:
~/Downloads/ca.cert
)
例1:192.168.1.10:5000の場合sudo mkdir -p /etc/docker/certs.d/192.168.1.10:5000 cd /etc/docker/certs.d/192.168.1.10:5000/ sudo cp <your_ca_file_path> .
例2:docker.ioの場合sudo mkdir -p /etc/docker/certs.d/docker.io cd /etc/docker/certs.d/docker.io sudo cp <your_ca_file_path> .
- : CA証明書のダウンロードパス(例:
-
Dockerの再起動
sudo systemctl restart docker
-
Docker再起動後にエラーが解消されているか確認
まとめ
Dockerイメージを格納するDockerレジストリにCA証明書を設定する方法を紹介した。プライベートレジストリを構築している場合やVPNやプロキシを利用している場合に有用なので試してみてほしい。
参考