最近、CTFd プラットフォームを構築した後、Docker を使用して動的なフラグの練習場を作成する必要がありましたので、別のローカルマシンを立ち上げて、Docker プライベートリポジトリにしました。その過程を記録します。
リポジトリの作成とイメージのプッシュ#
プライベートリポジトリを作成するには、docker registry
ツールが必要です。公式の registry イメージを取得します。
docker pull registry:2
- -v オプションは、リポジトリのローカル保存場所を指定します。
docker run -d -v C:\Users\lca\Desktop\tools\registry:/var/lib/registry -p 5000:5000 --name ctfregistry registry:2
上記の 2 つのコマンドで、プライベートリポジトリが作成されました。これでイメージをプライベートリポジトリにアップロードし、プライベートリポジトリからイメージをプル、検索、アップロードすることができます。
まず、hub.docker にアップロード済みのイメージをプルします。
docker pull liangchenga/dedecms5.7:v1
プルしたイメージに新しいタグを付けます。
docker tag liangchenga/dedecms5.7:v1 127.0.0.1:5000/dedecms5.7:v1
イメージをプライベートリポジトリにプッシュします。
プライベートリポジトリの registry には、先ほどプッシュしたイメージが表示されます。
http://127.0.0.1:5000/v2/_catalog
にアクセスしても表示されます。
プライベートイメージをアップロードした後、ローカルからイメージをプルすることができます。
docker pull 127.0.0.1/イメージID:バージョン
- リポジトリアドレスを内部ネットワークアドレスに設定する
🫥:クライアントの設定ファイル、つまり自分のホスト(コンピュータ)の設定ファイルを変更する必要があります。ここで私はハマりました。
Linux システムの場合、/etc/docker/daemon.json に以下の内容を追加します。
{
"registry-mirror": [
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
],
"insecure-registries": [
"192.168.100.156:5000"
]
}
Windows と Mac の場合は、Docker Engine に上記の設定を追加します(ここでの IP は異なります)。
{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"experimental": false,
"features": {
"buildkit": true
},
"insecure-registries": [
"172.17.5.106:5000"
]
}
Docker commit でイメージをコミット#
既存のイメージを変更した後、リポジトリにイメージをコミットしたい場合は、docker commit を使用してイメージをコミットします。docker commit は、元のイメージに新しいレイヤーを追加します。
まず、タグを作成します。
docker commit -a "lca" -m "this is a dedecms5.7 website test" 2733a49a020d 127.0.0.1:5000/mydedecms5.7:v2
-a:イメージ作成者の名前
-m:コメント
2733a49a020d:元のイメージ名
127.0.0.1:5000/mydedecms5.7:v2(新しいタグ)
その後、プッシュします。
docker push 127.0.0.1:5000/mydedecms5.7:v2
参考#
mac 搭建 docker 私有仓库
docker 镜像的发布
https://blog.csdn.net/atzqtzq/article/details/115701143
画像はこちらから取得しました:https://wallhaven.cc/w/5g56p1