目的
https通信で通信可能なDocker registoryをDockerコンテナで作成する
cri-oやdockerからpullできることを確認する
作業手順概要
以下の作業を行いDocker registoryを立てる
- サーバーを構築するサーバのIPを固定
- オレオレ証明書を作成
- Dockerを使用してDocker registoryサーバ構築
- アクセスするPCに証明書を登録
作業詳細
1. サーバーを構築するサーバのIPを固定
やり方は省略しますが、サーバのIPは192.168.223.201
とする
2. オレオレ証明書を作成
以下手順を行い証明を作成する
$ mkdir certs
$ openssl req -newkey rsa:2048 -nodes -keyout certs/domain.key -x509 -days 365 -out certs/domain.crt
Generating a RSA private key
..................+++++
.......+++++
writing new private key to 'certs/domain.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:
3. Dockerを使用してDocker registoryサーバ構築
以下のコマンドを実行してDokcer registoryサーバーを構築する
docker run -d -p 443:443 \
--rm --name registry \
-v `pwd`/certs:/certs \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
-v $(pwd)/regist:/var/lib/registry \
-e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
registry:2
再起動後も有効にする場合は--rm
オプションを外して--restart=always
のオプションを追加する
4. アクセスする機器に証明書を登録
- dockerの場合
レジストリサーバで使用したcerts/domain.crt
をコピー後以下のコマンドを実行する
sudo mkdir -p /etc/docker/certs.d/192.168.223.201/
sudo cp domain.crt /etc/docker/certs.d/192.168.223.201/ca.crt
- cri-oの場合
レジストリサーバで使用したcerts/domain.crt
をコピー後以下のコマンドを実行する
sudo mkdir -p /etc/containers/certs.d/192.168.223.201/
sudo cp domain.crt /etc/containers/certs.d/192.168.223.201/ca.crt
動作確認
dockerによるコンテナ登録
nginxをdockerhubからpullし、名前を変更してローカルのdocker registoryに登録する
docker pull nginx
docker tag nginx:latest 192.168.223.201/test/nginx:latest
docker push 192.168.223.201/test/nginx:latest
crulコマンドで動作確認数
以下のコマンドを実行する
curl https://192.168.223.201/v2/_catalog -k
先ほど登録した test/nginx
が返ってくる