Container Station v3.0.9でDocker Registryを作成する

投稿者: | 6月 11, 2025

自分は、氷河期世代のインフラ系エンジニアだったおじさんで、以前はホームラボがドーンとあったんだが、ほとんど撤去、残したマシンもほとんど電源を入れていない。QNAP TS-464が一個動いているだけ。そもそも何か確認したいときは、LXDあるいはDockerでことが済んでしまう。どうしても仮想マシンとなるとLinuxであれば最悪KVM。なんてったて、TS-464にメモリが64GBもあるので。CPUがちょっと貧弱だが。

それにしても、俗に言うインフラをやっている人はあんまり気にならないかもしれないが、コンテナの利用が加速的増えてきたような気がする。ちょっとした開発から大型の環境まで、Docker/PodmanあるいはKubernetesに。何年か前は、コンテナはまだまだかもと言っていたがもうそれどころではない。

コンテナの最初の入り口の難関は、仮想マシンの考え方があまり役に立たないことかもしれない。コンテナイメージは仮想マシンではなく、強いて言えばOSにアプリケーションが1つ入ったもの。OSもアプリケーションもバージョンが変わるので、コンテナイメージを管理しなきゃいけない。コンテナは仮想マシンじゃないので、動いているコンテナでの変更ではなく、元のイメージで変更をする。大抵元のイメージは、Docker Hubなどから持ってくるが、いざ、変更した場合、自分のストレージに持っておかなければならない。それがDocker Registryサーバ。よって、DockerやKubernetesを真剣にやるとなると、Registryサーバが必要不可欠。ただ、Registryサーバはたいてい自分で用意するものであって、インストーラーとかにはついてこない。Registryサーバは、DockerあるいはLinuxが動き、ストレージがあればいいので、いっそQNAPで動かそうということに。

 

閑話休題

 

以前、同じようなエントリを書いたのだがだいぶ変わっていたので改めて。

https://www.blog.slow-fire.net/2021/06/07/qnapでdockerレポジトリサーバの作成/

事前にQNAPにSSHでログインをして、イメージが使うディレクトリを確保しておく。config.ymlは少しカスタマイズしてある。

sudo mkdir -p /share/Share/docker/registry-v2/config
sudo mkdir -p /share/Share/docker/registry-v2/data
cat << 'EOF' > config.yml
version: 0.1

log:
level: info
formatter: text
fields:
  service: registry
accesslog:
  disabled: false
  stdout: true

storage:
delete:
  enabled: true
cache:
  blobdescriptor: inmemory
filesystem:
  rootdirectory: /var/lib/registry

http:
addr: :5000
headers:
  X-Content-Type-Options: [nosniff]
relativeurls: false

health:
storagedriver:
  enabled: true
  interval: 10s
  threshold: 3

maintenance:
uploadpurging:
  enabled: true
  age: 168h
  interval: 24h
  dryrun: false
EOF

sudo mv config.yml /share/Share/docker/registry-v2/config

Contaner Stationを立ち上げて、右上のExploreをクリック。

Registryで検索

Docker Hubからregistryを検索。App Templateから作るとv2.8.1固定だが、Docker Hubだと2.8.3や3.0.0が作れる。2.8.3を選択。3.0.0はまだやめた方がいい。

Restart policyは、Alwaysに。またポートの設定は、Hostの部分にQNAPで公開するポートを入れる。ポートを入れないと接続できない。

マウントの設定を行う。

  • /share/Share/docker/registry-v2/data
  • /var/lib/registry

-> /var/lib/registryの内容がホストの/share/Share/docker/registry-v2/dataになる。共有で言うと、/Share/docker/registry-v2/dataとなる。

 

  • /share/Share/docker/registry-v2/config
  • /etc/docker/registry

-> /etc/docker/registryの内容がホストの/share/Share/docker/registry-v2/configになる。共有で言うと、/Share/docker/registry-v2/configとなる。

config.ymlの書き換えが楽になる。

これでFinishをクリック

うまくいけばRunningになる。うまく行かないときは、config.ymlに問題がある。Logsタブでメッセージを確認

動作確認といきたいところだが、dockerの設定を変えるまえに、reg コマンドで設定確認

reg コマンドのインストール

https://github.com/genuinetools/reg/releases/tag/v0.16.1

Linuxの場合

curl -Lo reg https://github.com/genuinetools/reg/releases/download/v0.16.1/reg-linux-amd64
chmod +x reg
mv reg /usr/local/bin/

以下で接続をする。

reg ls -f <QNAPのIPアドレス>:5000

以下のメッセージが出れば成功

Container Station自体にRegistryを登録

以下のような設定をする。設定をしたら、Test Connectionをクリック。成功したらApplyをクリックする。

登録が成功するとリストに表示される。

適当なイメージをPushしてみる。

 

タグ付けされて、Pushされる。

もう一度、Regコマンドで確認する。ちゃんと登録されている。

reg ls -f <QNAPのIPアドレス>:5000

 

ちなみにGUIで見たい場合は、

reg server -f -r <QNAPのIPアドレス>:5000 -p 8080

regコマンドを実行しているホストのポート18080にブラウザでアクセス。

http://<regコマンドを実行しているホスト>:18080

別のDockerホストから繋げたい場合は、

cat /etc/docker/daemon.json
{
"insecure-registries": [
  "192.168.10.4:5000”
]
}

その後、Dockerを再起動

 

k3sから使えるようにしたい場合は

cat /etc/rancher/k3s/registries.yaml 
mirrors:
"192.168.10.4:5000”:
  endpoint:
      - "http://192.168.10.4:5000”

その後、k3sを再起動

 

RegistryサーバのイメージをDockerやKubernetesから使う方法は割愛(それがわからない人にはこのページの意味はないので。)ちなみに、なぜ、v3.0.0にしなかったかというと、テレメトリーにアクセスできないというログが出ていたので、ログが見にくいからということで諦めた。

コメントを残す