両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン |
linux:podman:simple-container-registry [2024/03/21 05:22] – [レジストリ構築] ともやん | linux:podman:simple-container-registry [2025/03/17 09:43] (現在) – [レジストリ構築] ともやん |
---|
<WRAP color_term> | <WRAP color_term> |
<WRAP color_command><html><pre> | <WRAP color_command><html><pre> |
<font color="#FF8700"><b>$</b></font> <font color="#26A269"><u style="text-decoration-style:single">sudo</u></font> <font color="#26A269">dnf</font> install <font color="#A347BA">-y</font> podman httpd-tools | <font color="#0087FF"><b>$</b></font> <font color="#26A269"><u style="text-decoration-style:single">sudo</u></font> <font color="#26A269">dnf</font> install <font color="#A347BA">-y</font> podman httpd-tools |
</pre></html></WRAP> | </pre></html></WRAP> |
<WRAP color_result><html><pre> | <WRAP color_result><html><pre> |
<WRAP color_term> | <WRAP color_term> |
<WRAP color_command><html><pre> | <WRAP color_command><html><pre> |
<font color="#FF8700"><b>$</b></font> <font color="#26A269"><u style="text-decoration-style:single">sudo</u></font> <font color="#26A269">mkdir</font> <font color="#A347BA">-p</font> /var/lib/registry/<font color="#12488B"><b>{</b></font>auth,certs,data<font color="#12488B"><b>}</b></font> <font color="#12488B"><b>&&</b></font> <font color="#26A269"><u style="text-decoration-style:single">sudo</u></font> <font color="#26A269">ls</font> <font color="#A347BA">-al</font> /var/lib/registry | <font color="#0087FF"><b>$</b></font> <font color="#26A269"><u style="text-decoration-style:single">sudo</u></font> <font color="#26A269">mkdir</font> <font color="#A347BA">-p</font> /var/lib/registry/<font color="#12488B"><b>{</b></font>auth,certs,data<font color="#12488B"><b>}</b></font> <font color="#12488B"><b>&&</b></font> <font color="#26A269"><u style="text-decoration-style:single">sudo</u></font> <font color="#26A269">ls</font> <font color="#A347BA">-al</font> /var/lib/registry |
</pre></html></WRAP> | </pre></html></WRAP> |
<WRAP color_result><html><pre> | <WRAP color_result><html><pre> |
<WRAP color_term> | <WRAP color_term> |
<WRAP color_command><html><pre> | <WRAP color_command><html><pre> |
<font color="#FF8700"><b>$</b></font> <font color="#26A269"><u style="text-decoration-style:single">sudo</u></font> <font color="#26A269">htpasswd</font> <font color="#A347BA">-cB</font> /var/lib/registry/auth/htpasswd tomoyan | <font color="#0087FF"><b>$</b></font> <font color="#26A269"><u style="text-decoration-style:single">sudo</u></font> <font color="#26A269">htpasswd</font> <font color="#A347BA">-cB</font> /var/lib/registry/auth/htpasswd tomoyan |
</pre></html></WRAP> | </pre></html></WRAP> |
<WRAP color_result><html><pre> | <WRAP color_result><html><pre> |
</pre></html></WRAP> | </pre></html></WRAP> |
<WRAP color_command><html><pre> | <WRAP color_command><html><pre> |
<font color="#FF8700"><b>$</b></font> <font color="#26A269"><u style="text-decoration-style:single">sudo</u></font> <font color="#26A269">bat</font> <font color="#A347BA">-n</font> <u style="text-decoration-style:single">/var/lib/registry/auth/htpasswd</u> | <font color="#0087FF"><b>$</b></font> <font color="#26A269"><u style="text-decoration-style:single">sudo</u></font> <font color="#26A269">bat</font> <font color="#A347BA">-n</font> <u style="text-decoration-style:single">/var/lib/registry/auth/htpasswd</u> |
</pre></html></WRAP> | </pre></html></WRAP> |
<WRAP color_result><html><pre> | <WRAP color_result><html><pre> |
<WRAP color_term> | <WRAP color_term> |
<WRAP color_command><html><pre> | <WRAP color_command><html><pre> |
<font color="#FF8700"><b>$</b></font> <font color="#26A269">htpasswd</font> | <font color="#0087FF"><b>$</b></font> <font color="#26A269">htpasswd</font> |
</pre></html></WRAP> | </pre></html></WRAP> |
<WRAP group> | <WRAP group> |
</WRAP><!-- tip --> | </WRAP><!-- tip --> |
| |
自己署名証明書の作成🤔\\ | 自己署名 SSL 証明書の作成🤔\\ |
| ここではファイル名 wicked-beat.crt を作成する\\ |
<WRAP color_term> | <WRAP color_term> |
<WRAP color_command><html><pre> | <WRAP color_command><html><pre> |
<font color="#FF8700"><b>$</b></font> <font color="#26A269"><u style="text-decoration-style:single">sudo</u></font> <font color="#26A269">openssl</font> req <font color="#A347BA">-newkey</font> rsa:4096 <font color="#A347BA">-nodes</font> <font color="#A347BA">-sha256</font> <font color="#A347BA">-keyout</font> <u style="text-decoration-style:single">/var/lib/registry/certs/domain.key</u> \ | <font color="#0087FF"><b>$</b></font> <font color="#26A269"><u style="text-decoration-style:single">sudo</u></font> <font color="#26A269">openssl</font> req <font color="#A347BA">-newkey</font> rsa:4096 <font color="#A347BA">-nodes</font> <font color="#A347BA">-sha256</font> <font color="#A347BA">-keyout</font> <u style="text-decoration-style:single">/var/lib/registry/certs/wicked-beat.key</u> \ |
<font color="#A347BA">-x509</font> <font color="#A347BA">-days</font> 365 <font color="#A347BA">-out</font> <u style="text-decoration-style:single">/var/lib/registry/certs/domain.crt</u> \ | <font color="#A347BA">-x509</font> <font color="#A347BA">-days</font> 365 <font color="#A347BA">-out</font> <u style="text-decoration-style:single">/var/lib/registry/certs/wicked-beat.crt</u> \ |
<font color="#A347BA">-subj</font> <font color="#A2734C">"/CN=wicked-beat,wicked-beat.fireball.local"</font> \ | <font color="#A347BA">-subj</font> <font color="#A2734C">"/CN=localhost,wicked-beat,wicked-beat.fireball.lan"</font> \ |
<font color="#A347BA">-addext</font> <font color="#A2734C">"subjectAltName=DNS:wicked-beat,DNS:wicked-beat.fireball.local"</font> | <font color="#A347BA">-addext</font> <font color="#A2734C">"subjectAltName=DNS:localhost,DNS:wicked-beat,DNS:wicked-beat.fireball.lan"</font> |
</pre></html></WRAP> | </pre></html></WRAP> |
<WRAP color_result_hlong><html><pre>..+..........+..+......+.+.........+...........+......+....+.....+.........+.+++++++++++++++++++++++++++++++++++++++++++++*......+.+..+.......+......+..+...+....+..................+..+...+.+.........+..+.........+....+...+..+.+....................+.+......+..+.......+...........+...+.+.....+......+++++++++++++++++++++++++++++++++++++++++++++*...+............+...+++++ | <WRAP color_result><html><pre>..+..........+..+......+.+.........+...........+......+....+.....+.........+.+++++++++++++++++++++++++++++++++++++++++++++*......+.+..+.......+......+..+...+....+..................+..+...+.+.........+..+.........+....+...+..+.+....................+.+......+..+.......+...........+...+.+.....+......+++++++++++++++++++++++++++++++++++++++++++++*...+............+...+++++ |
.....+.+.....+.........+......+...+..........+..+.+++++++++++++++++++++++++++++++++++++++++++++*..........+.......+..+..........+...+..+......+...+.......+.....+.......+.....+.+......+++++++++++++++++++++++++++++++++++++++++++++*....+.....+......+............+..........+...+...+..+.........+....+...........+......+...+..........+...............+............+............+.....+...+.......+...+............+.................+....+.....+.........+......+......+.+...+......+.....+.+.....+....+...+...+..+...+.......+..+.....................+.......+........+...+.+......+.................+.............+.........+...+..+........................+.......+...+..+++++ | .....+.+.....+.........+......+...+..........+..+.+++++++++++++++++++++++++++++++++++++++++++++*..........+.......+..+..........+...+..+......+...+.......+.....+.......+.....+.+......+++++++++++++++++++++++++++++++++++++++++++++*....+.....+......+............+..........+...+...+..+.........+....+...........+......+...+..........+...............+............+............+.....+...+.......+...+............+.................+....+.....+.........+......+......+.+...+......+.....+.+.....+....+...+...+..+...+.......+..+.....................+.......+........+...+.+......+.................+.............+.........+...+..+........................+.......+...+..+++++ |
----- | ----- |
</WRAP> | </WRAP> |
| |
作成された自己署名証明書の内容確認🤔\\ | 作成された自己署名 SSL 証明書の内容確認🤔\\ |
<WRAP color_term> | <WRAP color_term> |
<WRAP color_command><html><pre> | <WRAP color_command><html><pre> |
<font color="#FF8700"><b>$</b></font> <font color="#26A269"><u style="text-decoration-style:single">sudo</u></font> <font color="#26A269">openssl</font> x<font color="#999999">509 </font><font color="#A347BA">-in</font><font color="#999999"> </font><font color="#999999"><u style="text-decoration-style:single">/var/lib/registry/certs/domain.crt</u></font><font color="#999999"> </font><font color="#A347BA">-text</font><font color="#999999"> </font><font color="#A347BA">-noout</font> | <font color="#0087FF"><b>$</b></font> <font color="#26A269"><u style="text-decoration-style:single">sudo</u></font> <font color="#26A269">openssl</font> x<font color="#999999">509 </font><font color="#A347BA">-in</font><font color="#999999"> </font><font color="#999999"><u style="text-decoration-style:single">/var/lib/registry/certs/wicked-beat.crt</u></font><font color="#999999"> </font><font color="#A347BA">-text</font><font color="#999999"> </font><font color="#A347BA">-noout</font> |
</pre></html></WRAP> | </pre></html></WRAP> |
<WRAP color_result_long><html><pre>Certificate: | <WRAP color_result_long><html><pre>Certificate: |
26:86:56:c8:1a:fa:0c:32:13:7b:87:54:10:de:66:12:98:f5:b6:28 | 26:86:56:c8:1a:fa:0c:32:13:7b:87:54:10:de:66:12:98:f5:b6:28 |
Signature Algorithm: sha256WithRSAEncryption | Signature Algorithm: sha256WithRSAEncryption |
Issuer: CN = "wicked-beat,wicked-beat.fireball.local" | Issuer: CN = "localhost,wicked-beat,wicked-beat.fireball.local" |
Validity | Validity |
Not Before: Mar 20 20:16:18 2024 GMT | Not Before: Mar 20 20:16:18 2024 GMT |
Not After : Mar 20 20:16:18 2025 GMT | Not After : Mar 20 20:16:18 2025 GMT |
Subject: CN = "wicked-beat,wicked-beat.fireball.local" | <b class=DiYE>Subject: CN = "localhost,wicked-beat,wicked-beat.fireball.lan"</b> |
Subject Public Key Info: | Subject Public Key Info: |
Public Key Algorithm: rsaEncryption | Public Key Algorithm: rsaEncryption |
00:99:f1:8c:dd:3b:6e:53:8a:1d:79:47:03:d8:48: | 00:99:f1:8c:dd:3b:6e:53:8a:1d:79:47:03:d8:48: |
21:de:03:79:af:7c:0e:ff:e8:61:b2:48:45:a9:a5: | 21:de:03:79:af:7c:0e:ff:e8:61:b2:48:45:a9:a5: |
ee:bf:62:f5:c9:b3:9f:58:fd:8c:65:fa:bc:94:8c: | 〜省略〜 |
20:1e:c7:e7:3d:8b:e3:0a:79:9d:a5:9b:75:3e:bb: | |
3b:07:54:9b:0c:87:a5:c0:0c:43:c6:f9:4d:34:d0: | |
af:bc:61:7a:fc:df:2b:ac:d9:60:3b:72:40:c0:3c: | |
05:40:12:71:5c:f9:74:05:de:13:a3:0d:32:a2:cc: | |
95:d9:ea:36:cf:99:78:04:c1:95:bd:e4:68:07:1a: | |
80:26:9e:75:87:20:5d:a5:97:34:1f:2c:15:0b:cd: | |
68:99:42:35:07:aa:ec:3c:53:82:6f:f0:96:ec:de: | |
7a:65:4d:72:a9:cf:ed:28:f3:21:88:d2:2e:ec:02: | |
fd:8d:dc:39:e2:eb:a8:b3:72:6f:fa:69:09:7a:e7: | |
5e:85:97:41:f2:6b:e2:06:88:1d:6e:f7:e3:25:af: | |
4f:94:66:ca:b0:b8:4d:75:a0:12:99:53:4a:93:3e: | |
35:3c:b6:b5:bd:24:51:f8:50:a4:49:b7:63:27:98: | |
66:49:d7:cd:f5:0c:ac:73:b9:f4:bd:b1:20:dc:0b: | |
41:ff:60:dd:2b:bd:a4:74:10:3a:3b:07:ef:e2:08: | |
2a:30:41:aa:7b:07:50:54:bf:27:76:29:07:f5:c5: | |
f2:ed:0e:a1:7c:a6:43:9f:03:aa:3e:01:b4:3f:43: | |
6d:9e:61:a1:bf:5c:90:b1:2e:21:66:e8:e9:e9:0f: | |
fd:55:45:9e:a3:f8:02:f7:83:17:90:88:90:58:26: | |
52:7e:2f:26:5e:bb:58:37:03:13:65:9a:15:28:58: | |
c3:51:22:5f:88:ac:21:a7:7c:44:f5:52:bd:9a:28: | |
b9:d1:cb:10:78:5f:04:3b:0d:44:8f:39:a1:ae:0a: | |
44:a2:93:84:c0:42:88:84:f0:fc:3d:90:6f:98:b9: | |
80:40:b9:a0:51:b7:9f:d7:e1:6d:e1:0d:f3:88:e5: | |
46:6c:18:63:f3:8e:fd:84:5a:3d:05:76:16:da:25: | |
e1:39:de:11:ac:d0:fb:c2:9b:7e:6b:c0:42:59:ba: | |
0b:2a:11:9d:b4:0c:73:cb:c8:cb:e2:11:ff:9d:41: | |
49:57:56:6c:63:3c:3f:8e:3a:b1:3b:39:33:82:33: | |
0e:bb:bd:c1:0d:c6:26:fb:10:2f:cc:bd:ef:8b:b8: | |
c1:a8:b5:88:11:d1:bc:75:27:98:4b:e5:e5:13:2c: | |
55:e2:18:94:81:a8:1c:06:6f:ba:fb:be:4a:a1:a4: | |
41:f8:cb:9c:f2:98:43:85:ab:86:80:27:cc:10:b8: | 41:f8:cb:9c:f2:98:43:85:ab:86:80:27:cc:10:b8: |
ac:5b:41 | ac:5b:41 |
X509v3 Basic Constraints: critical | X509v3 Basic Constraints: critical |
CA:TRUE | CA:TRUE |
X509v3 Subject Alternative Name: | <b class=DiYE>X509v3 Subject Alternative Name: |
DNS:wicked-beat, DNS:wicked-beat.fireball.local | DNS:localhost, DNS:wicked-beat, DNS:wicked-beat.fireball.lan</b> |
Signature Algorithm: sha256WithRSAEncryption | Signature Algorithm: sha256WithRSAEncryption |
Signature Value: | Signature Value: |
68:9e:7f:a9:17:6e:86:83:16:fb:2b:45:7b:20:bb:5b:7e:7e: | 68:9e:7f:a9:17:6e:86:83:16:fb:2b:45:7b:20:bb:5b:7e:7e: |
c9:77:45:ce:f6:a2:05:c2:c5:cb:9f:22:2b:aa:90:2e:0d:e7: | c9:77:45:ce:f6:a2:05:c2:c5:cb:9f:22:2b:aa:90:2e:0d:e7: |
5a:6d:e9:09:24:3c:c8:1e:bd:43:14:c5:8c:45:0e:6d:66:93: | 〜省略〜 |
85:6c:69:c8:63:e5:9c:20:4e:77:4f:6e:eb:cc:0e:10:ea:40: | |
fb:be:41:32:e9:c9:c6:a9:93:f6:3e:9a:70:e0:57:1e:4c:2b: | |
88:23:85:d9:bd:f6:95:40:cd:5f:0f:eb:8b:77:c3:09:f2:b1: | |
f2:7d:02:0d:d6:ec:4d:eb:c4:13:b4:ba:9b:01:4a:ec:eb:79: | |
0d:da:8d:e2:cc:93:d5:d5:f5:a4:45:4b:25:6a:ee:c1:73:bd: | |
d5:f0:e7:59:1c:b5:e8:96:45:47:6e:8d:bd:ef:5b:06:19:7d: | |
25:60:f4:56:f5:4f:5e:e1:52:15:df:e2:1c:60:f4:20:5e:7e: | |
c8:7c:09:36:46:93:e8:7a:fa:3c:50:05:bc:8d:16:c6:50:f7: | |
85:e0:8b:db:f7:6c:3f:17:b3:bf:ac:1d:98:b5:15:59:f1:89: | |
4e:45:8b:ea:a5:fc:80:6f:fc:cd:da:2e:d6:4c:47:5c:5b:da: | |
51:99:7f:87:80:ec:07:05:63:17:23:f0:f0:c7:d4:87:8a:fb: | |
0d:ab:c6:c3:54:37:ad:66:a3:17:f0:27:80:99:39:70:9f:d8: | |
8e:92:18:04:03:96:3c:6d:12:8c:1c:4f:a6:d2:3d:96:95:36: | |
0f:4e:ba:12:da:fb:e9:bb:f7:27:d6:37:ce:52:98:40:2c:02: | |
5a:77:41:85:e3:45:54:2d:23:38:cf:5e:34:13:21:e7:f6:83: | |
36:1e:9b:9b:5f:bf:54:41:20:68:29:e4:1d:85:7e:8b:a3:39: | |
07:d7:b6:79:a0:bd:09:b0:31:27:ba:ee:24:ac:f7:95:c8:5c: | |
ac:e2:20:b6:8b:ea:7f:5a:45:15:76:5d:76:18:8e:b0:36:23: | |
1f:31:2f:27:17:59:6d:37:0a:ea:bf:08:bc:db:1d:2a:e7:89: | |
49:b1:7f:e8:1c:62:23:ed:cf:44:1a:97:df:d0:8b:8d:45:d1: | |
0a:f2:cc:2e:ea:97:59:4e:13:45:d2:0d:ee:57:97:b4:aa:05: | |
72:1b:29:14:47:bc:47:e4:2b:7c:73:bf:30:81:43:a2:88:e0: | |
47:81:a7:06:42:7f:7e:35:83:33:c3:08:d2:58:a3:ad:9e:48: | |
fe:45:49:e0:d3:e7:91:7c:c0:be:36:5f:c4:82:b2:90:5b:5b: | |
ae:c7:0b:d1:19:72:15:2d:67:db:fe:b7:d0:46:c0:87:dc:c1: | ae:c7:0b:d1:19:72:15:2d:67:db:fe:b7:d0:46:c0:87:dc:c1: |
aa:e9:3b:ce:e8:5c:11:e0 | aa:e9:3b:ce:e8:5c:11:e0 |
</WRAP> | </WRAP> |
| |
ホストでの証明書の信頼🤔\\ | クライアント/ホストでの SSL 証明書の信頼🤔\\ |
<WRAP color_term> | <WRAP color_term> |
<WRAP color_command><html><pre> | <WRAP color_command><html><pre> |
<font color="#FF8700"><b>$</b></font> <font color="#26A269"><u style="text-decoration-style:single">sudo</u></font> <font color="#26A269">cp</font> <u style="text-decoration-style:single">/var/lib/registry/certs/domain.crt</u> <u style="text-decoration-style:single">/etc/pki/ca-trust/source/anchors/</u> | <font color="#0087FF"><b>$</b></font> <font color="#26A269"><u style="text-decoration-style:single">sudo</u></font> <font color="#26A269">cp</font> <u style="text-decoration-style:single">/var/lib/registry/certs/wicked-beat.crt</u> <u style="text-decoration-style:single">/etc/pki/ca-trust/source/anchors/</u> |
<font color="#FF8700"><b>$</b></font> <font color="#26A269"><u style="text-decoration-style:single">sudo</u></font> <font color="#26A269">update-ca-trust</font> | <font color="#0087FF"><b>$</b></font> <font color="#26A269"><u style="text-decoration-style:single">sudo</u></font> <font color="#26A269">update-ca-trust</font> |
<font color="#FF8700"><b>$</b></font> <font color="#26A269">trust</font> list <font color="#12488B"><b>|</b></font> <font color="#26A269">grep</font> <font color="#A347BA">-i</font> <font color="#A2734C">"wicked-beat"</font> | <font color="#0087FF"><b>$</b></font> <font color="#26A269">trust</font> list <font color="#12488B"><b>|</b></font> <font color="#26A269">grep</font> <font color="#A347BA">-i</font> <font color="#A2734C">"wicked-beat"</font> |
</pre></html></WRAP> | </pre></html></WRAP> |
<WRAP color_result><html><pre> | <WRAP color_result><html><pre> |
label: <font color="#C01C28"><b>wicked-beat</b></font>,<font color="#C01C28"><b>wicked-beat</b></font>.fireball.local | label: localhost,<font color="#C01C28"><b>wicked-beat</b></font>,<font color="#C01C28"><b>wicked-beat</b></font>.fireball.lan |
</pre></html></WRAP> | </pre></html></WRAP> |
</WRAP> | </WRAP> |
<WRAP color_term> | <WRAP color_term> |
<WRAP color_command><html><pre> | <WRAP color_command><html><pre> |
<font color="#FF8700"><b>$</b></font> <font color="#26A269"><u style="text-decoration-style:single">sudo</u></font> <font color="#26A269">firewall-cmd</font> <font color="#A347BA">--add-port=5000/tcp</font> <font color="#A347BA">--zone=internal</font> <font color="#A347BA">--permanent</font> | <font color="#0087FF"><b>$</b></font> <font color="#26A269"><u style="text-decoration-style:single">sudo</u></font> <font color="#26A269">firewall-cmd</font> <font color="#A347BA">--add-port=5000/tcp</font> <font color="#A347BA">--zone=internal</font> <font color="#A347BA">--permanent</font> |
</pre></html></WRAP> | </pre></html></WRAP> |
<WRAP color_result><html><pre> | <WRAP color_result><html><pre> |
</pre></html></WRAP> | </pre></html></WRAP> |
<WRAP color_command><html><pre> | <WRAP color_command><html><pre> |
<font color="#FF8700"><b>$</b></font> <font color="#26A269"><u style="text-decoration-style:single">sudo</u></font> <font color="#26A269">firewall-cmd</font> <font color="#A347BA">--add-port=5000/tcp</font> <font color="#A347BA">--zone=public</font> <font color="#A347BA">--permanent</font> | <font color="#0087FF"><b>$</b></font> <font color="#26A269"><u style="text-decoration-style:single">sudo</u></font> <font color="#26A269">firewall-cmd</font> <font color="#A347BA">--add-port=5000/tcp</font> <font color="#A347BA">--zone=public</font> <font color="#A347BA">--permanent</font> |
</pre></html></WRAP> | </pre></html></WRAP> |
<WRAP color_result><html><pre> | <WRAP color_result><html><pre> |
</pre></html></WRAP> | </pre></html></WRAP> |
<WRAP color_command><html><pre> | <WRAP color_command><html><pre> |
<font color="#FF8700"><b>$</b></font> <font color="#26A269"><u style="text-decoration-style:single">sudo</u></font> <font color="#26A269">firewall-cmd</font> <font color="#A347BA">--reload</font> | <font color="#0087FF"><b>$</b></font> <font color="#26A269"><u style="text-decoration-style:single">sudo</u></font> <font color="#26A269">firewall-cmd</font> <font color="#A347BA">--reload</font> |
</pre></html></WRAP> | </pre></html></WRAP> |
<WRAP color_result><html><pre> | <WRAP color_result><html><pre> |
</WRAP> | </WRAP> |
| |
===== レジストリの起動 ===== | ===== レジストリの起動/停止 ===== |
| 最新バージョンは [[https://hub.docker.com/_/registry/tags|registry Tags | Docker Hub]] で確認できる🤔\\ |
| |
| レジストリの起動🤔\\ |
<WRAP color_term> | <WRAP color_term> |
<WRAP color_command><html><pre> | <WRAP color_command><html><pre> |
<font color="#FF8700"><b>$</b></font> <font color="#26A269"><u style="text-decoration-style:single">sudo</u></font> <font color="#26A269">podman</font> run <font color="#A347BA">--name</font> myregistry \ | <font color="#0087FF"><b>$</b></font> <font color="#26A269"><u style="text-decoration-style:single">sudo</u></font> <font color="#26A269">podman</font> run <font color="#A347BA">-d</font> <font color="#A347BA">--restart</font> always <font color="#A347BA">--name</font> registry \ |
<font color="#A347BA">-p</font> 5000:5000 \ | <font color="#A347BA">-p</font> 5000:5000 \ |
<font color="#A347BA">-v</font> /var/lib/registry/data:/var/lib/registry:z \ | <font color="#A347BA">-v</font> /var/lib/registry/data:/var/lib/registry:z \ |
<font color="#A347BA">-v</font> /var/lib/registry/auth:/auth:z \ | <font color="#A347BA">-v</font> /var/lib/registry/auth:/auth:z \ |
<font color="#A347BA">-e</font> <font color="#A2734C">"REGISTRY_AUTH=htpasswd"</font> \ | <font color="#A347BA">-e</font> <font color="#A2734C">'REGISTRY_AUTH=htpasswd'</font> \ |
<font color="#A347BA">-e</font> <font color="#A2734C">"REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm"</font> \ | <font color="#A347BA">-e</font> <font color="#A2734C">'REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm'</font> \ |
<font color="#A347BA">-e</font> REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \ | <font color="#A347BA">-e</font> REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \ |
<font color="#A347BA">-v</font> /var/lib/registry/certs:/certs:z \ | <font color="#A347BA">-v</font> /var/lib/registry/certs:/certs:z \ |
<font color="#A347BA">-e</font> <font color="#A2734C">"REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt"</font> \ | <font color="#A347BA">-e</font> <font color="#A2734C">'REGISTRY_HTTP_TLS_CERTIFICATE=/certs/wicked-beat.crt'</font> \ |
<font color="#A347BA">-e</font> <font color="#A2734C">"REGISTRY_HTTP_TLS_KEY=/certs/domain.key"</font> \ | <font color="#A347BA">-e</font> <font color="#A2734C">'REGISTRY_HTTP_TLS_KEY=/certs/wicked-beat.key'</font> \ |
<font color="#A347BA">-e</font> REGISTRY_COMPATIBILITY_SCHEMA1_ENABLED=true \ | <font color="#A347BA">-e</font> REGISTRY_COMPATIBILITY_SCHEMA1_ENABLED=true \ |
<font color="#A347BA">-d</font> \ | <font color="#A347BA">-e</font> REGISTRY_STORAGE_DELETE_ENABLED=true \ |
docker.io/library/registry:2.8.3 | docker.io/library/registry:2.8.3 |
</pre></html></WRAP> | </pre></html></WRAP> |
</pre></html></WRAP> | </pre></html></WRAP> |
</WRAP> | </WRAP> |
[[https://hub.docker.com/_/registry/tags|registry Tags | Docker Hub]] で最新バージョンを確認できる🤔\\ | |
| レジストリを停止する場合...🤔\\ |
| <WRAP color_term> |
| <WRAP color_command><html><pre> |
| <font color="#0087FF"><b>$</b></font> <font color="#26A269"><u style="text-decoration-style:single">sudo</u></font> <font color="#26A269">sh</font> <font color="#A347BA">-c</font> <font color="#A2734C">'podman stop registry && podman rm registry'</font> |
| </pre></html></WRAP> |
| </WRAP> |
| |
| レジストリへのアクセス確認🤔\\ |
| <WRAP color_term> |
| <WRAP color_command><html><pre> |
| <font color="#0087FF"><b>$</b></font> <font color="#26A269">curl</font><font color="#FF9999"> </font><font color="#A347BA">-u</font><font color="#FF9999"> tomoyan https://wicked-beat:5000/v2/_catalog</font> |
| </pre></html></WRAP> |
| <WRAP color_result><html><pre> |
| Enter host password for user 'tomoyan': |
| {"repositories":[]} |
| </pre></html></WRAP> |
| <WRAP color_result><html><pre> |
| registry |
| registry |
| </pre></html></WRAP> |
| </WRAP> |
| |
| 証明書の検証🤔\\ |
| <WRAP color_term> |
| <WRAP color_command><html><pre> |
| <font color="#0087FF"><b>$</b></font> <font color="#26A269">openssl</font><font color="#999999"> s_client </font><font color="#A347BA">-connect</font><font color="#999999"> wicked-beat:5000 </font><font color="#A347BA">-servername</font><font color="#999999"> wicked-beat</font> |
| </pre></html></WRAP> |
| <WRAP color_result_long><html><pre> |
| CONNECTED(00000003) |
| depth=0 CN = "localhost,wicked-beat,wicked-beat.fireball.local" |
| verify return:1 |
| --- |
| Certificate chain |
| 0 s:CN = "localhost,wicked-beat,wicked-beat.fireball.local" |
| i:CN = "localhost,wicked-beat,wicked-beat.fireball.local" |
| a:PKEY: rsaEncryption, 4096 (bit); sigalg: RSA-SHA256 |
| v:NotBefore: Mar 20 20:20:12 2024 GMT; NotAfter: Mar 20 20:20:12 2025 GMT |
| --- |
| Server certificate |
| -----BEGIN CERTIFICATE----- |
| MIIFeTCCA2GgAwIBAgIUItMtxtFJlg4OwxuJ/3QYs5TB5JEwDQYJKoZIhvcNAQEL |
| BQAwMTEvMC0GA1UEAwwmd2lja2VkLWJlYXQsd2lja2VkLWJlYXQuZmlyZWJhbGwu |
| bG9jYWwwHhcNMjQwMzIwMjAyMDEyWhcNMjUwMzIwMjAyMDEyWjAxMS8wLQYDVQQD |
| 〜省略〜 |
| I72x52OQk9dfvXp2yiXhTSjZVcqY2axwvdEm8dA7kBE+vImTbxUJYzGWetMo3n4a |
| oZEMw11w4NNmuw1fvw== |
| -----END CERTIFICATE----- |
| subject=CN = "localhost,wicked-beat,wicked-beat.fireball.local" |
| issuer=CN = "localhost,wicked-beat,wicked-beat.fireball.local" |
| --- |
| No client certificate CA names sent |
| Peer signing digest: SHA256 |
| Peer signature type: RSA-PSS |
| Server Temp Key: X25519, 253 bits |
| --- |
| SSL handshake has read 2201 bytes and written 379 bytes |
| Verification: OK |
| --- |
| New, TLSv1.3, Cipher is TLS_CHACHA20_POLY1305_SHA256 |
| Server public key is 4096 bit |
| This TLS version forbids renegotiation. |
| Compression: NONE |
| Expansion: NONE |
| No ALPN negotiated |
| Early data was not sent |
| Verify return code: 0 (ok) |
| --- |
| --- |
| Post-Handshake New Session Ticket arrived: |
| SSL-Session: |
| Protocol : TLSv1.3 |
| Cipher : TLS_CHACHA20_POLY1305_SHA256 |
| Session-ID: A930863BF5140DE8683A6A979F0BA450D05FE1871A5DF7C41B21412014C626BB |
| Session-ID-ctx: |
| Resumption PSK: 8A1A0CC8DBCD3534B4B3BD4572450A4DE453E6FB693AFCC8A371F8BAA22D33AE |
| PSK identity: None |
| PSK identity hint: None |
| SRP username: None |
| TLS session ticket lifetime hint: 604800 (seconds) |
| TLS session ticket: |
| 0000 - 43 d1 3e 3d 52 05 5d 46-04 5a 5e 6c 78 f3 be 80 C.>=R.]F.Z^lx... |
| 0010 - 13 48 4b 79 4a df 76 2b-e0 29 5f 5b e1 81 e3 f6 .HKyJ.v+.)_[.... |
| 0020 - 16 b3 4a 66 84 78 41 26-22 4b 5e a9 f6 0a 5f f6 ..Jf.xA&"K^..._. |
| 0030 - 84 45 b9 da 86 77 e2 cf-d6 ac bf c1 6b ac 9d 7d .E...w......k..} |
| 0040 - d9 5a eb 61 9c e4 f6 8f-10 8e 0e 99 37 70 a5 75 .Z.a........7p.u |
| 0050 - 38 e0 3b f3 2f fa b9 fb-60 d4 82 6e 8a cb 55 56 8.;./...`..n..UV |
| 0060 - 49 5a 21 6f 1a 25 31 ca-26 c2 ce 22 00 0e a7 e1 IZ!o.%1.&..".... |
| 0070 - 28 ( |
| |
| Start Time: 1710966295 |
| Timeout : 7200 (sec) |
| Verify return code: 0 (ok) |
| Extended master secret: no |
| Max Early Data: 0 |
| --- |
| read R BLOCK |
| </pre></html></WRAP> |
| </WRAP> |
| |
| レジストリにログインする🤔\\ |
| <WRAP color_term> |
| <WRAP color_command><html><pre> |
| <font color="#0087FF"><b>$</b></font> <font color="#26A269">podman</font> login wicked-beat:5000 |
| </pre></html></WRAP> |
| <WRAP color_result><html><pre> |
| Username: tomoyan |
| Password: |
| Login Succeeded! |
| </pre></html></WRAP> |
| </WRAP> |
| |
| ログイン中の認証情報は <html><code>/run/user/<gid>/containers/auth.json</code></html> に base64 エンコードで保存されている🤔\\ |
| <WRAP color_term> |
| <WRAP color_command><html><pre> |
| <font color="#0087FF"><b>$</b></font> <font color="#26A269">bat</font> <font color="#A347BA">-n</font> <u style="text-decoration-style:single">/run/user/1000/containers/auth.json</u> |
| </pre></html></WRAP> |
| <WRAP color_result><html><pre class=Bat> |
| <font color="#444444"> 1</font> <font color="#FFFFFF">{</font> |
| <font color="#444444"> 2</font> <font color="#FFFFFF"> </font><font color="#FF8700">"auths"</font><font color="#FFFFFF">: {</font> |
| <font color="#444444"> 3</font> <font color="#FFFFFF"> </font><font color="#FF8700">"wicked-beat:5000"</font><font color="#FFFFFF">: {</font> |
| <font color="#444444"> 4</font> <font color="#FFFFFF"> </font><font color="#FF8700">"auth"</font><font color="#FFFFFF">: </font><font color="#D7D787">"aB1cd2efghiJklMnOPQ3STUv"</font> |
| <font color="#444444"> 5</font> <font color="#FFFFFF"> }</font> |
| <font color="#444444"> 6</font> <font color="#FFFFFF"> }</font> |
| <font color="#444444"> 7</font> <font color="#FFFFFF">}</font> |
| </pre></html></WRAP> |
| </WRAP> |
| |
| レジストリからログアウトする🤔\\ |
| <WRAP color_term> |
| <WRAP color_command><html><pre> |
| <font color="#0087FF"><b>$</b></font> <font color="#26A269">podman</font> logout wicked-beat:5000 |
| </pre></html></WRAP> |
| <WRAP color_result><html><pre> |
| Removed login credentials for wicked-beat:5000 |
| </pre></html></WRAP> |
| <WRAP color_command><html><pre> |
| <font color="#0087FF"><b>$</b></font> <font color="#26A269">bat</font> <font color="#A347BA">-n</font> <u style="text-decoration-style:single">/run/user/1000/containers/auth.json</u> |
| </pre></html></WRAP> |
| <WRAP color_result><html><pre class=Bat> |
| <font color="#444444"> 1</font> <font color="#FFFFFF">{</font> |
| <font color="#444444"> 2</font> <font color="#FFFFFF"> </font><font color="#FF8700">"auths"</font><font color="#FFFFFF">: {}</font> |
| <font color="#444444"> 3</font> <font color="#FFFFFF">}</font> |
| </pre></html></WRAP> |
| </WRAP> |
| |
| ===== レジストリへのプッシュ/プル ===== |
| ログインする🤔\\ |
| <WRAP color_term> |
| <WRAP color_command><html><pre> |
| <font color="#0087FF"><b>$</b></font> <font color="#26A269">podman</font> login wicked-beat:5000 |
| </pre></html></WRAP> |
| <WRAP color_result><html><pre> |
| Username: tomoyan |
| Password: |
| Login Succeeded! |
| </pre></html></WRAP> |
| </WRAP> |
| |
| プッシュする🤔\\ |
| <WRAP color_term> |
| <WRAP color_command><html><pre> |
| <font color="#0087FF"><b>$</b></font> <font color="#26A269">podman</font> push localhost/haruo_podman:0.01 wicked-beat:5000/haruo_podman:v0.01 |
| </pre></html></WRAP> |
| <WRAP color_result><html><pre> |
| Getting image source signatures |
| Copying blob 10650e391d43 done | |
| Copying blob aacbd0b4169c done | |
| Copying blob 80f811a7d4fe done | |
| Copying blob 53f86715cdba done | |
| Copying blob eb2eb8ccdc68 done | |
| Copying config f291a9bf30 done | |
| Writing manifest to image destination |
| </pre></html></WRAP> |
| </WRAP> |
| |
| プッシュされた内容を確認する🤔\\ |
| <WRAP color_term> |
| <WRAP color_command><html><pre> |
| <font color="#0087FF"><b>$</b></font> <font color="#26A269">podman</font> search wicked-beat:5000/ |
| </pre></html></WRAP> |
| <WRAP color_result><html><pre> |
| NAME DESCRIPTION |
| wicked-beat:5000/haruo_podman |
| </pre></html></WRAP> |
| </WRAP> |
| |
| 削除してみる🤔\\ |
| <WRAP color_term> |
| <WRAP color_command><html><pre> |
| <font color="#0087FF"><b>$</b></font> <font color="#26A269">skopeo</font> <font color="#A347BA">--debug</font> delete docker://wicked-beat:5000/haruo_podman:v0.01 |
| </pre></html></WRAP> |
| <WRAP color_result><html><pre> |
| <font color="#D0CFCC">DEBU</font>[0000] Using registries.d directory /etc/containers/registries.d |
| <font color="#D0CFCC">DEBU</font>[0000] Loading registries configuration "/etc/containers/registries.conf" |
| <font color="#D0CFCC">DEBU</font>[0000] Loading registries configuration "/etc/containers/registries.conf.d/000-shortnames.conf" |
| <font color="#D0CFCC">DEBU</font>[0000] Found credentials for wicked-beat:5000/haruo_podman in credential helper containers-auth.json in file /run/user/1000/containers/auth.json |
| <font color="#D0CFCC">DEBU</font>[0000] No signature storage configuration found for wicked-beat:5000/haruo_podman:v0.01, using built-in default file:///home/tomoyan/.local/share/containers/sigstore |
| <font color="#D0CFCC">DEBU</font>[0000] Looking for TLS certificates and private keys in /etc/docker/certs.d/wicked-beat:5000 |
| <font color="#D0CFCC">DEBU</font>[0000] GET https://wicked-beat:5000/v2/ |
| <font color="#D0CFCC">DEBU</font>[0000] Ping https://wicked-beat:5000/v2/ status 401 |
| <font color="#D0CFCC">DEBU</font>[0000] GET https://wicked-beat:5000/v2/haruo_podman/manifests/v0.01 |
| <font color="#D0CFCC">DEBU</font>[0000] DELETE https://wicked-beat:5000/v2/haruo_podman/manifests/sha256:f652ef85a8862285775a01c6dd279c35debd0b581c41e209875c3ab1d3ceacd7 |
| <font color="#D0CFCC">DEBU</font>[0000] Deleting /home/tomoyan/.local/share/containers/sigstore/haruo_podman@sha256=f652ef85a8862285775a01c6dd279c35debd0b581c41e209875c3ab1d3ceacd7/signature-1 |
| </pre></html></WRAP> |
| </WRAP> |
| |
| 削除しても消えないが、配布には使える🤪\\ |
| <WRAP color_term> |
| <WRAP color_command><html><pre> |
| <font color="#0087FF"><b>$</b></font> <font color="#26A269">podman</font> search wicked-beat:5000/ |
| </pre></html></WRAP> |
| <WRAP color_result><html><pre> |
| NAME DESCRIPTION |
| wicked-beat:5000/haruo_podman |
| </pre></html></WRAP> |
| </WRAP> |
| |
| プッシュしたら二度と消せない🤪\\ |
| コンテナ起動時に REGISTRY_STORAGE_DELETE_ENABLED=true も指定してるし、docker v2 API で DELETE も実行している🤔\\ |
| <WRAP color_term> |
| <WRAP color_command><html><pre> |
| <font color="#0087FF"><b>$</b></font> <font color="#26A269">skopeo</font> <font color="#A347BA">--debug</font> delete docker://wicked-beat:5000/haruo_podman:v0.01 |
| </pre></html></WRAP> |
| <WRAP color_result><html><pre> |
| <font color="#D0CFCC">DEBU</font>[0000] Using registries.d directory /etc/containers/registries.d |
| <font color="#D0CFCC">DEBU</font>[0000] Loading registries configuration "/etc/containers/registries.conf" |
| <font color="#D0CFCC">DEBU</font>[0000] Loading registries configuration "/etc/containers/registries.conf.d/000-shortnames.conf" |
| <font color="#D0CFCC">DEBU</font>[0000] Found credentials for wicked-beat:5000/haruo_podman in credential helper containers-auth.json in file /run/user/1000/containers/auth.json |
| <font color="#D0CFCC">DEBU</font>[0000] No signature storage configuration found for wicked-beat:5000/haruo_podman:v0.01, using built-in default file:///home/tomoyan/.local/share/containers/sigstore |
| <font color="#D0CFCC">DEBU</font>[0000] Looking for TLS certificates and private keys in /etc/docker/certs.d/wicked-beat:5000 |
| <font color="#D0CFCC">DEBU</font>[0000] GET https://wicked-beat:5000/v2/ |
| <font color="#D0CFCC">DEBU</font>[0000] Ping https://wicked-beat:5000/v2/ status 401 |
| <font color="#D0CFCC">DEBU</font>[0000] GET https://wicked-beat:5000/v2/haruo_podman/manifests/v0.01 |
| <font color="#C01C28">FATA</font>[0000] Unable to delete wicked-beat:5000/haruo_podman:v0.01. Image may not exist or is not stored with a v2 Schema in a v2 registry |
| </pre></html></WRAP> |
| </WRAP> |
| |
===== 参考文献 ===== | ===== 参考文献 ===== |
[[https://www.redhat.com/sysadmin/simple-container-registry|How to implement a simple personal/private Linux container image registry for internal use | Enable Sysadmin]] [[gtr>https://www.redhat.com/sysadmin/simple-container-registry|翻訳]]\\ | [[https://www.redhat.com/sysadmin/simple-container-registry|How to implement a simple personal/private Linux container image registry for internal use | Enable Sysadmin]] [[gtr>https://www.redhat.com/sysadmin/simple-container-registry|翻訳]]\\ |
[[https://thenewstack.io/tutorial-host-a-local-podman-image-registry/|Tutorial: Host a Local Podman Image Registry - The New Stack]] [[gtr>https://thenewstack.io/tutorial-host-a-local-podman-image-registry/|翻訳]]\\ | [[https://thenewstack.io/tutorial-host-a-local-podman-image-registry/|Tutorial: Host a Local Podman Image Registry - The New Stack]] [[gtr>https://thenewstack.io/tutorial-host-a-local-podman-image-registry/|翻訳]]\\ |
| |
| [[git>quay/quay|quay/quay: Build, Store, and Distribute your Applications and Containers]]\\ |
| [[https://github.com/quay/quay/blob/master/docs/quick-local-deployment.md|quay/docs/quick-local-deployment.md at master · quay/quay]]\\ |
| [[https://access.redhat.com/docum.entation/ja-jp/red_hat_quay/2.9/html-single/deploy_red_hat_quay_-_basic/index|Deploy Red Hat Quay - Basic Red Hat Quay 2.9 | Red Hat Customer Portal]] [[gtr>https://access.redhat.com/documentation/ja-jp/red_hat_quay/2.9/html-single/deploy_red_hat_quay_-_basic/index|翻訳]]\\ |
| |