{"id":35042,"date":"2024-10-21T13:53:50","date_gmt":"2024-10-21T06:53:50","guid":{"rendered":"http:\/\/jupitek.maudemo.vip\/index.php\/2024\/10\/21\/how-to-build-a-cloud-native-private-registry-with-quay\/"},"modified":"2024-10-21T13:53:50","modified_gmt":"2024-10-21T06:53:50","slug":"how-to-build-a-cloud-native-private-registry-with-quay","status":"publish","type":"post","link":"https:\/\/jupitek.maudemo.vip\/index.php\/2024\/10\/21\/how-to-build-a-cloud-native-private-registry-with-quay\/","title":{"rendered":"X\u00e2y d\u1ef1ng Cloud Native Private Registry v\u1edbi Quay"},"content":{"rendered":"<p>Docker kh\u00f4ng cung c\u1ea5p kh\u1ea3 n\u0103ng l\u01b0u tr\u1eef ho\u1eb7c ph\u00e2n ph\u1ed1i h\u00ecnh \u1ea3nh d\u00e0i h\u1ea1n, do \u0111\u00f3 c\u00e1c nh\u00e0 ph\u00e1t tri\u1ec3n c\u1ea7n th\u1ee9 g\u00ec \u0111\u00f3 nhi\u1ec1u h\u01a1n.&nbsp;<a href=\"https:\/\/docs.docker.com\/registry\/\" target=\"_blank\" rel=\"noreferrer noopener\">Docker Registry<\/a>&nbsp;th\u1ef1c hi\u1ec7n c\u00e1c t\u00e1c v\u1ee5 n\u00e0y v\u00e0 vi\u1ec7c s\u1eed d\u1ee5ng n\u00f3 \u0111\u1ea3m b\u1ea3o c\u00f9ng m\u1ed9t m\u00f4i tr\u01b0\u1eddng th\u1eddi gian ch\u1ea1y \u1ee9ng d\u1ee5ng th\u00f4ng qua \u1ea3o h\u00f3a. Tuy nhi\u00ean, vi\u1ec7c x\u00e2y d\u1ef1ng m\u1ed9t h\u00ecnh \u1ea3nh c\u00f3 th\u1ec3 li\u00ean quan \u0111\u1ebfn vi\u1ec7c \u0111\u1ea7u t\u01b0 th\u1eddi gian \u0111\u00e1ng k\u1ec3, \u0111\u00f3 l\u00e0 l\u00fac&nbsp;<a href=\"https:\/\/www.redhat.com\/en\/resources\/quay-datasheet\" target=\"_blank\" rel=\"noreferrer noopener\">Quay<\/a>&nbsp;(ph\u00e1t \u00e2m l\u00e0&nbsp;<em>kway<\/em>&nbsp;) xu\u1ea5t hi\u1ec7n. M\u1ed9t s\u1ed5 \u0111\u0103ng k\u00fd nh\u01b0 Quay c\u00f3 th\u1ec3 v\u1eeba x\u00e2y d\u1ef1ng v\u1eeba l\u01b0u tr\u1eef c\u00e1c container. Sau \u0111\u00f3, b\u1ea1n c\u00f3 th\u1ec3 tri\u1ec3n khai c\u00e1c container n\u00e0y trong th\u1eddi gian ng\u1eafn h\u01a1n v\u00e0 \u00edt n\u1ed7 l\u1ef1c h\u01a1n so v\u1edbi vi\u1ec7c s\u1eed d\u1ee5ng Docker Registry. H\u01b0\u1edbng d\u1eabn n\u00e0y gi\u1ea3i th\u00edch c\u00e1ch Quay c\u00f3 th\u1ec3 l\u00e0 m\u1ed9t ph\u1ea7n thi\u1ebft y\u1ebfu c\u1ee7a quy tr\u00ecnh ph\u00e1t tri\u1ec3n v\u00e0 chi ti\u1ebft c\u00e1ch tri\u1ec3n khai s\u1ed5 \u0111\u0103ng k\u00fd Quay.<\/p>\n<h2 id=\"what-is-red-hat-quay\">Red Hat Quay l\u00e0 g\u00ec?<a href=\"https:\/\/www.linode.com\/docs\/guides\/build-a-cloud-native-private-registry-with-quay\/#what-is-red-hat-quay\"><\/a><\/h2>\n<p>Red Hat Quay l\u00e0 m\u1ed9t s\u1ed5 \u0111\u0103ng k\u00fd c\u00f3 kh\u1ea3 n\u0103ng ch\u1ecbu l\u1ed7i v\u00e0 \u0111\u1ed9 tin c\u1eady cao, \u0111\u01b0\u1ee3c trang b\u1ecb ch\u1ee9c n\u0103ng c\u1ea7n thi\u1ebft \u0111\u1ec3 ho\u1ea1t \u0111\u1ed9ng trong c\u00e1c m\u00f4i tr\u01b0\u1eddng quy m\u00f4 l\u1edbn. Quay cung c\u1ea5p m\u1ed9t n\u1ec1n t\u1ea3ng s\u1ed5 \u0111\u0103ng k\u00fd c\u00f3 m\u1ee5c \u0111\u00edch c\u1ee5 th\u1ec3, t\u1eadp trung v\u00e0 c\u00f3 th\u1ec3 m\u1edf r\u1ed9ng, ho\u1ea1t \u0111\u1ed9ng trong m\u00f4i tr\u01b0\u1eddng \u0111a c\u1ee5m tr\u1ea3i d\u00e0i tr\u00ean nhi\u1ec1u trang web. Quay c\u0169ng ph\u00e2n t\u00edch c\u00e1c h\u00ecnh \u1ea3nh container \u0111\u1ec3 t\u00ecm l\u1ed7 h\u1ed5ng b\u1ea3o m\u1eadt tr\u01b0\u1edbc khi b\u1ea1n ch\u1ea1y ch\u00fang. \u0110i\u1ec1u n\u00e0y \u0111\u1ea3m b\u1ea3o r\u1eb1ng c\u00e1c tri\u1ec3n khai tr\u1ea3i d\u00e0i tr\u00ean c\u00e1c khu v\u1ef1c \u0111\u1ecba l\u00fd t\u00e1ch bi\u1ec7t kh\u00f4ng g\u1eb7p ph\u1ea3i nhi\u1ec1u d\u1ea1ng h\u1ecfng th\u1ef1c thi kh\u00e1c nhau. C\u0169ng l\u00e0 m\u1ed9t ph\u1ea7n c\u1ee7a ch\u1ee9c n\u0103ng b\u1ea3o m\u1eadt, Quay cung c\u1ea5p quy\u1ec1n ki\u1ec3m so\u00e1t truy c\u1eadp chi ti\u1ebft. \u0110i\u1ec1u n\u00e0y c\u00f3 ngh\u0129a l\u00e0 c\u00e1c nh\u00e0 ph\u00e1t tri\u1ec3n l\u00e0m vi\u1ec7c tr\u00ean m\u1ed9t d\u1ef1 \u00e1n tu\u00e2n th\u1ee7 nguy\u00ean&nbsp;<a href=\"https:\/\/www.paloaltonetworks.com\/cyberpedia\/what-is-the-principle-of-least-privilege\" target=\"_blank\" rel=\"noreferrer noopener\">t\u1eafc \u0111\u1eb7c quy\u1ec1n t\u1ed1i thi\u1ec3u<\/a>&nbsp;, nh\u01b0ng v\u1eabn c\u00f3 c\u00e1c quy\u1ec1n c\u1ea7n thi\u1ebft \u0111\u1ec3 c\u1ed9ng t\u00e1c v\u00e0o c\u00e1c nhi\u1ec7m v\u1ee5.<\/p>\n<h2 id=\"quay-features\">T\u00ednh n\u0103ng c\u1ee7a Quay<a href=\"https:\/\/www.linode.com\/docs\/guides\/build-a-cloud-native-private-registry-with-quay\/#quay-features\"><\/a><\/h2>\n<p>Quay cung c\u1ea5p nhi\u1ec1u t\u00ednh n\u0103ng, \u0111\u01b0\u1ee3c chia th\u00e0nh c\u00e1c danh m\u1ee5c sau:<\/p>\n<ul>\n<li><strong>B\u1ea3o v\u1ec7<\/strong>&nbsp;:\n<ul>\n<li>Kho l\u01b0u tr\u1eef container an to\u00e0n cung c\u1ea5p c\u00e1c thi\u1ebft l\u1eadp x\u00e1c th\u1ef1c v\u00e0 truy c\u1eadp.<\/li>\n<li>Qu\u00e9t container \u0111\u1ec3 t\u0103ng c\u01b0\u1eddng b\u1ea3o m\u1eadt.<\/li>\n<li>Li\u00ean t\u1ee5c qu\u00e9t n\u1ed9i dung h\u00ecnh \u1ea3nh v\u00e0 cung c\u1ea5p b\u00e1o c\u00e1o v\u1ec1 c\u00e1c v\u1ea5n \u0111\u1ec1 l\u1ed7 h\u1ed5ng ti\u1ec1m \u1ea9n.<\/li>\n<li>S\u1eed d\u1ee5ng c\u00e1c nh\u00e0 cung c\u1ea5p x\u00e1c th\u1ef1c hi\u1ec7n c\u00f3 d\u1ef1a tr\u00ean Lightweight Directory Access Protocol (LDAP) ho\u1eb7c OpenID Connect (OIDC).<\/li>\n<li>Ghi nh\u1eadt k\u00fd v\u00e0 ki\u1ec3m tra m\u1ecdi s\u1ef1 ki\u1ec7n li\u00ean quan \u0111\u1ebfn b\u1ea3o m\u1eadt trong h\u1ec7 th\u1ed1ng b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng b\u1ed9 l\u01b0u tr\u1eef nh\u1eadt k\u00fd d\u00e0i h\u1ea1n.<\/li>\n<\/ul>\n<\/li>\n<li><strong>T\u00ednh linh ho\u1ea1t<\/strong>&nbsp;:\n<ul>\n<li>S\u1eed d\u1ee5ng c\u00e1c quy t\u1eafc truy c\u1eadp chi ti\u1ebft cho ph\u00e9p b\u1ea1n ph\u00e2n l\u1eadp c\u00e1c nh\u00f3m ng\u01b0\u1eddi d\u00f9ng kh\u00e1c nhau ho\u1eb7c cho ph\u00e9p c\u1ed9ng t\u00e1c gi\u1eefa c\u00e1c nh\u00f3m khi c\u1ea7n.<\/li>\n<li>Cho ph\u00e9p m\u1ed9t d\u1ef1 \u00e1n b\u1eaft \u0111\u1ea7u \u1edf quy m\u00f4 nh\u1ecf v\u00e0 m\u1edf r\u1ed9ng l\u00ean quy m\u00f4 l\u1edbn h\u01a1n nhi\u1ec1u m\u00e0 kh\u00f4ng c\u1ea7n thay \u0111\u1ed5i l\u1edbn trong d\u1ef1 \u00e1n.<\/li>\n<li>H\u1ed7 tr\u1ee3 tri\u1ec3n khai ph\u00e2n t\u00e1n theo \u0111\u1ecba l\u00fd v\u1edbi m\u1ed9t \u0111i\u1ec3m truy c\u1eadp m\u00e1y kh\u00e1ch duy nh\u1ea5t \u0111\u1ec3 t\u0103ng hi\u1ec7u su\u1ea5t.<\/li>\n<li>Cung c\u1ea5p b\u1ed9 nh\u1edb \u0111\u1ec7m trong su\u1ed1t c\u1ee7a c\u00e1c h\u00ecnh \u1ea3nh \u0111\u01b0\u1ee3c l\u01b0u tr\u1eef trong c\u00e1c s\u1ed5 \u0111\u0103ng k\u00fd ch\u1ee9a kh\u00e1c.<\/li>\n<li>Ho\u1ea1t \u0111\u1ed9ng v\u1edbi c\u1ea3 m\u00f4i tr\u01b0\u1eddng \u0111\u00e1m m\u00e2y v\u00e0 ngo\u1ea1i tuy\u1ebfn ho\u1eb7c k\u1ebft h\u1ee3p c\u1ea3 hai.<\/li>\n<li>K\u1ebft h\u1ee3p h\u1ed7 tr\u1ee3 cho nhi\u1ec1u d\u1ecbch v\u1ee5 l\u01b0u tr\u1eef \u0111\u1ed1i t\u01b0\u1ee3ng v\u00e0 h\u1ec7 th\u1ed1ng c\u01a1 s\u1edf d\u1eef li\u1ec7u c\u1ee7a b\u00ean th\u1ee9 ba.<\/li>\n<\/ul>\n<\/li>\n<li><strong>N\u0103ng su\u1ea5t c\u1ee7a nh\u00e0 ph\u00e1t tri\u1ec3n<\/strong>&nbsp;:\n<ul>\n<li>Gi\u1ea3m l\u01b0\u1ee3ng c\u00f4ng vi\u1ec7c c\u1ea7n thi\u1ebft \u0111\u1ec3 x\u00e2y d\u1ef1ng v\u00e0 tri\u1ec3n khai container m\u1edbi.<\/li>\n<li>Gi\u00fap qu\u1ea3n l\u00fd vi\u1ec7c t\u0103ng tr\u01b0\u1edfng dung l\u01b0\u1ee3ng l\u01b0u tr\u1eef d\u1ec5 d\u00e0ng h\u01a1n th\u00f4ng qua qu\u1ea3n l\u00fd h\u1ea1n ng\u1ea1ch.<\/li>\n<li>Cung c\u1ea5p t\u00edch h\u1ee3p qu\u1ea3n l\u00fd m\u00e3 ngu\u1ed3n b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng c\u00e1c quy tr\u00ecnh T\u00edch h\u1ee3p li\u00ean t\u1ee5c (CI) \u0111\u01b0\u1ee3c \u0111\u01a1n gi\u1ea3n h\u00f3a.<\/li>\n<li>Duy tr\u00ec t\u00ednh n\u0103ng \u201cc\u1ed7 m\u00e1y th\u1eddi gian\u201d \u0111\u1ec3 b\u1ea3o v\u1ec7 ch\u1ed1ng l\u1ea1i vi\u1ec7c x\u00f3a nh\u1ea7m.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Th\u01b0\u1eddng b\u1ecb b\u1ecf qua trong c\u00e1c b\u00e0i \u0111\u00e1nh gi\u00e1 v\u1ec1 Quay l\u00e0 n\u00f3 ho\u1ea1t \u0111\u1ed9ng v\u1edbi nhi\u1ec1u th\u1ee9 h\u01a1n l\u00e0 ch\u1ec9 Docker. N\u00f3 c\u0169ng ho\u1ea1t \u0111\u1ed9ng v\u1edbi c\u00e1c s\u1ea3n ph\u1ea9m nh\u01b0&nbsp;<a href=\"https:\/\/www.rancher.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Rancher<\/a>&nbsp;,&nbsp;<a href=\"https:\/\/learn.microsoft.com\/en-us\/windows-server\/virtualization\/hyper-v\/hyper-v-technology-overview\" target=\"_blank\" rel=\"noreferrer noopener\">Hyper-V<\/a>&nbsp;,&nbsp;<a href=\"https:\/\/codefresh.io\/\" target=\"_blank\" rel=\"noreferrer noopener\">Codefresh<\/a>&nbsp;v\u00e0&nbsp;<a href=\"https:\/\/github.com\/containers\/skopeo\" target=\"_blank\" rel=\"noreferrer noopener\">Skopeo<\/a>&nbsp;.<\/p>\n<h3 id=\"when-should-you-use-quay\">Khi n\u00e0o b\u1ea1n n\u00ean s\u1eed d\u1ee5ng Quay?<a href=\"https:\/\/www.linode.com\/docs\/guides\/build-a-cloud-native-private-registry-with-quay\/#when-should-you-use-quay\"><\/a><\/h3>\n<p>Quay c\u00f3 th\u1ec3 g\u00e2y ra m\u1ed9t s\u1ed1 v\u1ea5n \u0111\u1ec1 khi s\u1eed d\u1ee5ng l\u1ea7n \u0111\u1ea7u. V\u00ed d\u1ee5, vi\u1ec7c c\u1ea5u h\u00ecnh c\u00e1c t\u00ednh n\u0103ng b\u1ea3o m\u1eadt c\u00f3 th\u1ec3 t\u1ed1n th\u1eddi gian v\u00e0 d\u1ec5 x\u1ea3y ra l\u1ed7i. M\u1ed9t trong nh\u1eefng v\u1ea5n \u0111\u1ec1 l\u1edbn nh\u1ea5t l\u00e0 Quay kh\u00f4ng th\u1ef1c s\u1ef1 l\u00e0 m\u1ed9t s\u1ea3n ph\u1ea9m duy nh\u1ea5t v\u00e0 vi\u1ec7c bi\u1ebft n\u00ean ch\u1ecdn lo\u1ea1i Quay n\u00e0o c\u00f3 th\u1ec3 g\u00e2y nh\u1ea7m l\u1eabn. Sau \u0111\u00e2y l\u00e0 t\u1ed5ng quan nhanh v\u1ec1 c\u00e1c lo\u1ea1i Quay kh\u00e1c nhau:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.projectquay.io\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Project Quay<\/strong><\/a>&nbsp;: \u0110\u00e2y l\u00e0 kho l\u01b0u tr\u1eef container \u0111\u1ed9c l\u1eadp, m\u00e3 ngu\u1ed3n m\u1edf, t\u01b0\u01a1ng t\u1ef1 nh\u01b0<a href=\"https:\/\/www.sonatype.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">&nbsp;Sonatype<\/a>&nbsp;,<a href=\"https:\/\/www.sonatype.com\/products\/sonatype-nexus-oss\" target=\"_blank\" rel=\"noreferrer noopener\">&nbsp;Nexus Repository OSS<\/a>&nbsp;ho\u1eb7c<a href=\"https:\/\/goharbor.io\/\" target=\"_blank\" rel=\"noreferrer noopener\">&nbsp;Harbor<\/a>&nbsp;.<\/li>\n<li><a href=\"https:\/\/quay.io\/plans\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Red Hat Quay.io<\/strong><\/a>&nbsp;: \u0110\u00e2y l\u00e0 phi\u00ean b\u1ea3n Quay c\u1ea5p doanh nghi\u1ec7p \u0111\u01b0\u1ee3c \u0111\u1ecbnh gi\u00e1 theo s\u1ed1 l\u01b0\u1ee3ng kho l\u01b0u tr\u1eef ri\u00eang t\u01b0 b\u1ea1n t\u1ea1o. Tuy nhi\u00ean, kho l\u01b0u tr\u1eef c\u00f4ng c\u1ed9ng l\u00e0 mi\u1ec5n ph\u00ed.<\/li>\n<li><a href=\"https:\/\/www.redhat.com\/en\/technologies\/cloud-computing\/quay\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Red Hat Quay<\/strong><\/a>&nbsp;: \u0110\u00e2y l\u00e0 phi\u00ean b\u1ea3n c\u1ea5p doanh nghi\u1ec7p c\u00f3 s\u1eb5n th\u00f4ng qua<a href=\"https:\/\/www.redhat.com\/en\/technologies\/cloud-computing\/openshift\" target=\"_blank\" rel=\"noreferrer noopener\">&nbsp;Red Hat OpenShift<\/a>&nbsp;\u0111\u1ec3 s\u1eed d\u1ee5ng trong vi\u1ec7c t\u1ea1o kho l\u01b0u tr\u1eef ri\u00eang t\u01b0.<\/li>\n<\/ul>\n<p>\u0110\u1ea7u ti\u00ean, b\u1ea1n c\u1ea7n ch\u1ecdn \u0111\u00fang h\u01b0\u01a1ng v\u1ecb Quay cho lo\u1ea1i d\u1ef1 \u00e1n b\u1ea1n mu\u1ed1n t\u1ea1o. Ti\u1ebfp theo, c\u1ea5u h\u00ecnh m\u00f4i tr\u01b0\u1eddng Quay \u0111\u00fang c\u00e1ch tr\u01b0\u1edbc khi b\u1ea1n b\u1eaft \u0111\u1ea7u s\u1eed d\u1ee5ng. B\u1ea1n mu\u1ed1n gi\u1edbi h\u1ea1n vi\u1ec7c s\u1eed d\u1ee5ng Project Quay cho m\u1ee5c \u0111\u00edch th\u1eed nghi\u1ec7m ho\u1eb7c c\u00e1c d\u1ef1 \u00e1n nh\u1ecf, trong khi Red Hat Quay ph\u00f9 h\u1ee3p h\u01a1n cho c\u00e1c d\u1ef1 \u00e1n l\u1edbn.<\/p>\n<h2 id=\"before-you-begin\">Tr\u01b0\u1edbc khi b\u1ea1n b\u1eaft \u0111\u1ea7u<a href=\"https:\/\/www.linode.com\/docs\/guides\/build-a-cloud-native-private-registry-with-quay\/#before-you-begin\"><\/a><\/h2>\n<ol>\n<li>N\u1ebfu b\u1ea1n ch\u01b0a th\u1ef1c hi\u1ec7n, h\u00e3y t\u1ea1o m\u1ed9t t\u00e0i kho\u1ea3n Linode v\u00e0 Compute Instance. S\u1eed d\u1ee5ng t\u1ed1i thi\u1ec3u g\u00f3i Linode 4 GB \u0111\u1ec3 t\u1ea1o thi\u1ebft l\u1eadp Quay tr\u00ean CentOS Stream. Xem h\u01b0\u1edbng d\u1eabn&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/products\/platform\/get-started\/\">B\u1eaft \u0111\u1ea7u v\u1edbi Linode<\/a>&nbsp;v\u00e0&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/products\/compute\/compute-instances\/guides\/create\/\">T\u1ea1o Compute Instance<\/a>&nbsp;c\u1ee7a ch\u00fang t\u00f4i .<\/li>\n<li>L\u00e0m theo h\u01b0\u1edbng d\u1eabn&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/products\/compute\/compute-instances\/guides\/set-up-and-secure\/\">Thi\u1ebft l\u1eadp v\u00e0 B\u1ea3o m\u1eadt Phi\u00ean b\u1ea3n Compute<\/a>&nbsp;c\u1ee7a ch\u00fang t\u00f4i \u0111\u1ec3 c\u1eadp nh\u1eadt h\u1ec7 th\u1ed1ng c\u1ee7a b\u1ea1n. B\u1ea1n c\u0169ng c\u00f3 th\u1ec3 mu\u1ed1n \u0111\u1eb7t m\u00fai gi\u1edd, c\u1ea5u h\u00ecnh t\u00ean m\u00e1y ch\u1ee7, t\u1ea1o t\u00e0i kho\u1ea3n ng\u01b0\u1eddi d\u00f9ng gi\u1edbi h\u1ea1n v\u00e0 t\u0103ng c\u01b0\u1eddng quy\u1ec1n truy c\u1eadp SSH.<\/li>\n<li>H\u01b0\u1edbng d\u1eabn n\u00e0y s\u1eed d\u1ee5ng Docker \u0111\u1ec3 ch\u1ea1y c\u00e1c container Quay. \u0110\u1ec3 c\u00e0i \u0111\u1eb7t Docker, h\u00e3y l\u00e0m theo h\u01b0\u1edbng d\u1eabn trong h\u01b0\u1edbng d\u1eabn&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/guides\/installing-and-using-docker-on-centos-and-fedora\/\">C\u00e0i \u0111\u1eb7t v\u00e0 s\u1eed d\u1ee5ng Docker tr\u00ean CentOS v\u00e0 Fedora<\/a>&nbsp;c\u1ee7a ch\u00fang t\u00f4i th\u00f4ng qua ph\u1ea7n&nbsp;<em>Qu\u1ea3n l\u00fd Docker v\u1edbi Ng\u01b0\u1eddi d\u00f9ng kh\u00f4ng ph\u1ea3i Root<\/em>&nbsp;. X\u00e1c minh r\u1eb1ng Docker \u0111\u00e3 s\u1eb5n s\u00e0ng \u0111\u1ec3 s\u1eed d\u1ee5ng b\u1eb1ng&nbsp;<code>docker version<\/code>l\u1ec7nh. H\u01b0\u1edbng d\u1eabn n\u00e0y s\u1eed d\u1ee5ng&nbsp;<a href=\"https:\/\/www.ibm.com\/docs\/en\/db2\/11.5?topic=docker-downloading-installing-editions\" target=\"_blank\" rel=\"noreferrer noopener\">Docker Community Edition (CE) 24.0.7<\/a>&nbsp;, nh\u01b0ng c\u00e1c phi\u00ean b\u1ea3n m\u1edbi h\u01a1n v\u00e0 Docker Enterprise Edition (EE) s\u1ebd ho\u1ea1t \u0111\u1ed9ng.<\/li>\n<li>H\u01b0\u1edbng d\u1eabn n\u00e0y s\u1eed d\u1ee5ng c\u01a1 s\u1edf d\u1eef li\u1ec7u PostgreSQL \u0111\u1ec3 l\u01b0u tr\u1eef si\u00eau d\u1eef li\u1ec7u d\u00e0i h\u1ea1n b\u1eaft bu\u1ed9c c\u1ee7a Quay (c\u01a1 s\u1edf d\u1eef li\u1ec7u n\u00e0y kh\u00f4ng \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng cho h\u00ecnh \u1ea3nh). \u0110\u1ec3 c\u00e0i \u0111\u1eb7t PostgreSQL, h\u00e3y l\u00e0m theo h\u01b0\u1edbng d\u1eabn&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/guides\/centos-install-and-use-postgresql\/\">C\u00e0i \u0111\u1eb7t v\u00e0 s\u1eed d\u1ee5ng PostgreSQL tr\u00ean CentOS 8<\/a>&nbsp;c\u1ee7a ch\u00fang t\u00f4i (h\u01b0\u1edbng d\u1eabn n\u00e0y c\u0169ng ho\u1ea1t \u0111\u1ed9ng v\u1edbi CentOS Stream 9) cho \u0111\u1ebfn ph\u1ea7n&nbsp;<em>S\u1eed d\u1ee5ng PostgreSQL<\/em>&nbsp;. \u0110\u1ea3m b\u1ea3o b\u1ea1n c\u1ea5u h\u00ecnh PostgreSQL \u0111\u1ec3 t\u1ef1 \u0111\u1ed9ng kh\u1edfi \u0111\u1ed9ng sau khi m\u00e1y ch\u1ee7 kh\u1edfi \u0111\u1ed9ng l\u1ea1i.C\u1ea3nh b\u00e1oTr\u00e1nh s\u1eed d\u1ee5ng MariaDB cho c\u00e0i \u0111\u1eb7t c\u1ee7a b\u1ea1n v\u00ec vi\u1ec7c s\u1eed d\u1ee5ng MariaDB \u0111\u00e3 l\u1ed7i th\u1eddi trong c\u00e1c phi\u00ean b\u1ea3n Quay g\u1ea7n \u0111\u00e2y. Sau khi c\u00e0i \u0111\u1eb7t v\u00e0 b\u1ea3o m\u1eadt PostgreSQL, h\u00e3y t\u1ea1o c\u01a1 s\u1edf d\u1eef li\u1ec7u Quay.<\/li>\n<li>Quay s\u1eed d\u1ee5ng Redis \u0111\u1ec3 l\u01b0u tr\u1eef ng\u1eafn h\u1ea1n c\u00e1c s\u1ef1 ki\u1ec7n th\u1eddi gian th\u1ef1c. \u0110\u1ec3 c\u00e0i \u0111\u1eb7t Redis, h\u00e3y l\u00e0m theo h\u01b0\u1edbng d\u1eabn&nbsp;<a href=\"https:\/\/www.linode.com\/docs\/guides\/install-and-configure-redis-on-centos-7\/\">C\u00e0i \u0111\u1eb7t v\u00e0 C\u1ea5u h\u00ecnh Redis tr\u00ean CentOS 7<\/a>&nbsp;c\u1ee7a ch\u00fang t\u00f4i (c\u0169ng ho\u1ea1t \u0111\u1ed9ng v\u1edbi CentOS Stream 8 v\u00e0 9) th\u00f4ng qua ph\u1ea7n&nbsp;<em>X\u00e1c minh C\u00e0i \u0111\u1eb7t<\/em>&nbsp;.<\/li>\n<\/ol>\n<p>Ghi ch\u00faH\u01b0\u1edbng d\u1eabn n\u00e0y \u0111\u01b0\u1ee3c vi\u1ebft cho ng\u01b0\u1eddi d\u00f9ng kh\u00f4ng ph\u1ea3i root. C\u00e1c l\u1ec7nh y\u00eau c\u1ea7u quy\u1ec1n n\u00e2ng cao \u0111\u01b0\u1ee3c th\u00eam ti\u1ec1n t\u1ed1&nbsp;<\/p>\n<p><code>sudo<\/code>. N\u1ebfu b\u1ea1n kh\u00f4ng quen v\u1edbi&nbsp;<\/p>\n<p><code>sudo<\/code>l\u1ec7nh n\u00e0y, h\u00e3y xem h\u01b0\u1edbng d\u1eabn&nbsp;<\/p>\n<p><a href=\"https:\/\/www.linode.com\/docs\/guides\/linux-users-and-groups\/\">Ng\u01b0\u1eddi d\u00f9ng v\u00e0 Nh\u00f3m<\/a>&nbsp;.<\/p>\n<h2 id=\"creating-a-quay-setup-on-top-of-centos-stream-on-a-server\">T\u1ea1o Quay Setup tr\u00ean CentOS Stream tr\u00ean Server<a href=\"https:\/\/www.linode.com\/docs\/guides\/build-a-cloud-native-private-registry-with-quay\/#creating-a-quay-setup-on-top-of-centos-stream-on-a-server\"><\/a><\/h2>\n<p>Ph\u1ea7n n\u00e0y h\u01b0\u1edbng d\u1eabn t\u1ea1o m\u1ed9t thi\u1ebft l\u1eadp Quay nh\u1ecf \u0111\u1ec3 s\u1eed d\u1ee5ng cho m\u1ee5c \u0111\u00edch th\u1eed nghi\u1ec7m ho\u1eb7c m\u1ed9t d\u1ef1 \u00e1n nh\u1ecf. Th\u1ef1c hi\u1ec7n c\u1eadp nh\u1eadt h\u1ec7 th\u1ed1ng tr\u01b0\u1edbc khi ti\u1ebfp t\u1ee5c.<\/p>\n<h2 id=\"deploying-a-database\">Tri\u1ec3n khai c\u01a1 s\u1edf d\u1eef li\u1ec7u<a href=\"https:\/\/www.linode.com\/docs\/guides\/build-a-cloud-native-private-registry-with-quay\/#deploying-a-database\"><\/a><\/h2>\n<p>Th\u1ef1c hi\u1ec7n theo c\u00e1c b\u01b0\u1edbc d\u01b0\u1edbi \u0111\u00e2y \u0111\u1ec3 t\u1ea1o v\u00e0 c\u1ea5u h\u00ecnh c\u01a1 s\u1edf d\u1eef li\u1ec7u PostgreSQL cho Quay:<\/p>\n<p>1.M\u1edf&nbsp;<code>psql<\/code>l\u1eddi nh\u1eafc b\u1eb1ng&nbsp;<code>postgres<\/code>t\u00e0i kho\u1ea3n qu\u1ea3n tr\u1ecb:<\/p>\n<pre class=\"wp-block-code\"><code>sudo -u postgres psql<\/code><\/pre>\n<p>N\u1ebfu \u0111\u01b0\u1ee3c nh\u1eafc, h\u00e3y cung c\u1ea5p m\u1eadt kh\u1ea9u b\u1ea1n \u0111\u00e3 cung c\u1ea5p khi b\u1ea3o m\u1eadt PostgreSQL:<\/p>\n<pre class=\"wp-block-code\"><code>postgres=#<\/code><\/pre>\n<p>2.T\u1ea1o m\u1ed9t&nbsp;<code>quay_registry<\/code>c\u01a1 s\u1edf d\u1eef li\u1ec7u m\u1eabu m\u1edbi:<\/p>\n<pre class=\"wp-block-code\"><code>CREATE DATABASE quay_registry;<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>CREATE DATABASE<\/code><\/pre>\n<p>3.X\u00e1c minh c\u01a1 s\u1edf d\u1eef li\u1ec7u c\u00f3 t\u1ed3n t\u1ea1i:<\/p>\n<pre class=\"wp-block-code\"><code>\\l<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>                                    List of databases\n     Name      |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges\n---------------+----------+----------+-------------+-------------+-----------------------\n postgres      | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |\n quay_registry | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |\n template0     | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c\/postgres          +\n               |          |          |             |             | postgres=CTc\/postgres\n template1     | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c\/postgres          +\n               |          |          |             |             | postgres=CTc\/postgres\n(4 rows)<\/code><\/pre>\n<p>4.T\u1ea1o m\u1ed9t ng\u01b0\u1eddi d\u00f9ng m\u1eabu m\u1edbi&nbsp;<code>quay_registry<\/code>v\u00e0 cung c\u1ea5p cho ng\u01b0\u1eddi d\u00f9ng \u0111\u00f3 m\u1ed9t m\u1eadt kh\u1ea9u:<\/p>\n<pre class=\"wp-block-code\"><code>CREATE USER quay_registry WITH encrypted password 'EXAMPLE_PASSWORD';<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>CREATE ROLE<\/code><\/pre>\n<p>5.\u0110\u1ea3m b\u1ea3o ng\u01b0\u1eddi d\u00f9ng Quay c\u00f3 m\u1eb7t:<\/p>\n<pre class=\"wp-block-code\"><code>\\du<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>                                     List of roles\n   Role name   |                         Attributes                         | Member of\n---------------+------------------------------------------------------------+-----------\n postgres      | Superuser, Create role, Create DB, Replication, Bypass RLS | {}\n quay_registry |                                                            | {}<\/code><\/pre>\n<p>6.C\u1ea5p cho ng\u01b0\u1eddi d\u00f9ng Quay quy\u1ec1n \u0111\u1ed1i v\u1edbi c\u01a1 s\u1edf d\u1eef li\u1ec7u Quay:<\/p>\n<pre class=\"wp-block-code\"><code>GRANT ALL PRIVILEGES ON DATABASE quay_registry TO quay_registry;<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>GRANT<\/code><\/pre>\n<p>7.X\u00e1c minh r\u1eb1ng c\u00e1c quy\u1ec1n \u0111\u00e3 \u0111\u01b0\u1ee3c \u00e1p d\u1ee5ng:<\/p>\n<pre class=\"wp-block-code\"><code>\\l quay_registry\n\n                                      List of databases\n     Name      |  Owner   | Encoding |   Collate   |    Ctype    |     Access privileges\n---------------+----------+----------+-------------+-------------+----------------------------\n quay_registry | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =Tc\/postgres              +\n               |          |          |             |             | postgres=CTc\/postgres     +\n               |          |          |             |             | quay_registry=CTc\/postgres\n(1 row)<\/code><\/pre>\n<p>8.Nh\u1eadp&nbsp;<code>quay_registry<\/code>c\u01a1 s\u1edf d\u1eef li\u1ec7u:<\/p>\n<pre class=\"wp-block-code\"><code>\\c quay_registry<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>You are now connected to database \"quay_registry\" as user \"postgres\".<\/code><\/pre>\n<p>9.C\u00e0i \u0111\u1eb7t&nbsp;<code>pg_tgrm<\/code>ti\u1ec7n \u00edch m\u1edf r\u1ed9ng:<\/p>\n<pre class=\"wp-block-code\"><code>CREATE EXTENSION pg_trgm;<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>CREATE EXTENSION<\/code><\/pre>\n<p>10.Ki\u1ec3m tra xem&nbsp;<code>pg_trgm<\/code>ti\u1ec7n \u00edch m\u1edf r\u1ed9ng \u0111\u00e3 \u0111\u01b0\u1ee3c c\u00e0i \u0111\u1eb7t ch\u01b0a:<\/p>\n<pre class=\"wp-block-code\"><code>SELECT * FROM pg_extension WHERE extname <strong>=<\/strong> 'pg_trgm';<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>  oid  | extname | extowner | extnamespace | extrelocatable | extversion | extconfig | extcondition\n-------+---------+----------+--------------+----------------+------------+-----------+--------------\n 16396 | pg_trgm |       10 |         2200 | t              | 1.5        |           |\n(1 row)<\/code><\/pre>\n<p>11.Tho\u00e1t kh\u1ecfi&nbsp;<code>psql<\/code>shell:<\/p>\n<pre class=\"wp-block-code\"><code>\\q<\/code><\/pre>\n<p>12.M\u1edf&nbsp;<code>pg_hba.conf<\/code>t\u1ec7p, th\u01b0\u1eddng n\u1eb1m t\u1ea1i&nbsp;<code>\/var\/lib\/pgsql\/data\/<\/code>, trong tr\u00ecnh so\u1ea1n th\u1ea3o v\u0103n b\u1ea3n c\u00f3 quy\u1ec1n qu\u1ea3n tr\u1ecb:<\/p>\n<pre class=\"wp-block-code\"><code>sudo nano \/var\/lib\/pgsql\/data\/pg_hba.conf<\/code><\/pre>\n<p>S\u1eeda \u0111\u1ed5i&nbsp;<code>pg_hba.conf<\/code>t\u1ec7p \u0111\u1ec3 cho ph\u00e9p k\u1ebft n\u1ed1i t\u1eeb xa b\u1eb1ng c\u00e1ch ch\u1ec9nh s\u1eeda&nbsp;<code># IPv4 local connections:<\/code>d\u00f2ng n\u00e0y sao cho gi\u1ed1ng nh\u01b0 sau:<\/p>\n<pre class=\"wp-block-code\"><code># IPv4 local connections:\nhost    all             all          0.0.0.0\/0               md5<\/code><\/pre>\n<p>Khi ho\u00e0n t\u1ea5t, nh\u1ea5n&nbsp;<kbd>CTRL<\/kbd>+&nbsp;<kbd>X<\/kbd>, ti\u1ebfp theo l\u00e0&nbsp;<kbd>Y<\/kbd>then&nbsp;<kbd>Enter<\/kbd>\u0111\u1ec3 l\u01b0u t\u1ec7p v\u00e0 tho\u00e1t&nbsp;<code>nano<\/code>.<\/p>\n<p>13.B\u00e2y gi\u1edd h\u00e3y m\u1edf&nbsp;<code>postgresql.conf<\/code>t\u1ec7p, th\u00f4ng th\u01b0\u1eddng n\u1eb1m \u1edf&nbsp;<code>\/var\/lib\/pgsql\/data\/<\/code>:<\/p>\n<pre class=\"wp-block-code\"><code>sudo nano \/var\/lib\/pgsql\/data\/postgresql.conf<\/code><\/pre>\n<p>S\u1eeda \u0111\u1ed5i&nbsp;<code>postgresql.conf<\/code>t\u1ec7p \u0111\u1ec3 l\u1eafng nghe tr\u00ean t\u1ea5t c\u1ea3 c\u00e1c \u0111\u1ecba ch\u1ec9 b\u1eb1ng c\u00e1ch s\u1eeda \u0111\u1ed5i&nbsp;<code>listen_addresses<\/code>d\u00f2ng nh\u01b0 sau:<\/p>\n<pre class=\"wp-block-code\"><code>listen_addresses = '*'<\/code><\/pre>\n<p>Khi ho\u00e0n t\u1ea5t, nh\u1ea5n&nbsp;<kbd>CTRL<\/kbd>+&nbsp;<kbd>X<\/kbd>, ti\u1ebfp theo l\u00e0&nbsp;<kbd>Y<\/kbd>then&nbsp;<kbd>Enter<\/kbd>\u0111\u1ec3 l\u01b0u t\u1ec7p v\u00e0 tho\u00e1t&nbsp;<code>nano<\/code>.<\/p>\n<p>14.Kh\u1edfi \u0111\u1ed9ng l\u1ea1i m\u00e1y ch\u1ee7 \u0111\u1ec3 nh\u1eefng thay \u0111\u1ed5i n\u00e0y c\u00f3 hi\u1ec7u l\u1ef1c:<\/p>\n<pre class=\"wp-block-code\"><code>sudo systemctl restart postgresql\n<\/code><\/pre>\n<h3 id=\"configuring-redis\">C\u1ea5u h\u00ecnh Redis<a href=\"https:\/\/www.linode.com\/docs\/guides\/build-a-cloud-native-private-registry-with-quay\/#configuring-redis\"><\/a><\/h3>\n<p>Th\u1ef1c hi\u1ec7n c\u00e1c t\u00e1c v\u1ee5 c\u1ea5u h\u00ecnh Redis b\u1ed5 sung sau cho Quay.<\/p>\n<p>1.T\u1ea1o t\u1ec7p c\u1ea5u h\u00ecnh Redis:<\/p>\n<pre class=\"wp-block-code\"><code>sudo nano \/etc\/redis\/redis.conf\n<\/code><\/pre>\n<p>B\u00ecnh lu\u1eadn d\u00f2ng c\u00f3 n\u1ed9i dung nh\u01b0 sau&nbsp;<code>bind 127.0.0.1 ::1<\/code>v\u00e0 th\u00eam m\u1ed9t d\u00f2ng m\u1edbi b\u00ean d\u01b0\u1edbi c\u00f3 n\u1ed9i dung&nbsp;<code>bind 0.0.0.0<\/code>:<\/p>\n<pre class=\"wp-block-code\"><code>#bind 127.0.0.1 -::1\nbind 0.0.0.0<\/code><\/pre>\n<p>Khi ho\u00e0n t\u1ea5t, nh\u1ea5n&nbsp;<kbd>CTRL<\/kbd>+&nbsp;<kbd>X<\/kbd>, ti\u1ebfp theo l\u00e0&nbsp;<kbd>Y<\/kbd>then&nbsp;<kbd>Enter<\/kbd>\u0111\u1ec3 l\u01b0u t\u1ec7p v\u00e0 tho\u00e1t&nbsp;<code>nano<\/code>:<\/p>\n<p>2.\u0110\u1ea3m b\u1ea3o thay \u0111\u1ed5i c\u00f3 hi\u1ec7u l\u1ef1c:<\/p>\n<pre class=\"wp-block-code\"><code>sudo systemctl restart redis<\/code><\/pre>\n<p>3.X\u00e1c nh\u1eadn Redis \u0111\u00e3 s\u1eb5n s\u00e0ng \u0111\u1ec3 s\u1eed d\u1ee5ng:<\/p>\n<pre class=\"wp-block-code\"><code>systemctl status redis<\/code><\/pre>\n<p>4.X\u00e1c minh r\u1eb1ng Redis \u0111ang l\u1eafng nghe t\u1ea1i c\u1ed5ng&nbsp;<code>6379<\/code>:<\/p>\n<pre class=\"wp-block-code\"><code>ss -tunelp | grep 6379<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>tcp   LISTEN 0      511          0.0.0.0:6379      0.0.0.0:*    uid:992 ino:73370 sk:1001 cgroup:\/system.slice\/redis.service &lt;-&gt;\n<\/code><\/pre>\n<h3 id=\"generating-the-quay-configuration\">T\u1ea1o c\u1ea5u h\u00ecnh Quay<a href=\"https:\/\/www.linode.com\/docs\/guides\/build-a-cloud-native-private-registry-with-quay\/#generating-the-quay-configuration\"><\/a><\/h3>\n<p>\u0110\u00e3 \u0111\u1ebfn l\u00fac c\u00e0i \u0111\u1eb7t b\u1ea3n sao Quay. H\u01b0\u1edbng d\u1eabn n\u00e0y s\u1eed d\u1ee5ng phi\u00ean b\u1ea3n Project Quay mi\u1ec5n ph\u00ed v\u00e0 m\u00e3 ngu\u1ed3n m\u1edf \u0111\u00e3 th\u1ea3o lu\u1eadn tr\u01b0\u1edbc \u0111\u00f3.<\/p>\n<p>1.Nh\u1eadn m\u1ed9t b\u1ea3n sao c\u1ee7a Quay:<\/p>\n<pre class=\"wp-block-code\"><code>docker pull quay.io\/projectquay\/quay:v3.9.0<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>v3.9.0: Pulling from projectquay\/quay\n57168402cb72: Pull complete\n3d50b44561f0: Pull complete\ne42a14c55ca9: Pull complete\n2d3027ebf95a: Pull complete\n0422499b4b00: Pull complete\n27f2a5fad2e5: Pull complete\n60b93bda04c7: Pull complete\n15f0806a68f5: Pull complete\nDigest: sha256:633818d2122a463e3aad8febbdc607a2e4df95db38b308fad8c071a60518f0a5\nStatus: Downloaded newer image for quay.io\/projectquay\/quay:v3.9.0\nquay.io\/projectquay\/quay:v3.9.0<\/code><\/pre>\n<p>2.X\u00e1c minh qu\u00e1 tr\u00ecnh t\u1ea3i xu\u1ed1ng b\u1eb1ng c\u00e1ch ch\u1ea1y&nbsp;<code>echo<\/code>b\u00ean trong v\u00f9ng ch\u1ee9a:<\/p>\n<pre class=\"wp-block-code\"><code>docker run quay.io\/projectquay\/quay:v3.9.0 \/bin\/echo \"Welcome to the Docker World!\"<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>\"Welcome to the Docker World!\"\n   __   __\n  \/  \\ \/  \\     ______   _    _     __   __   __\n \/ \/\\ \/ \/\\ \\   \/  __  \\ | |  | |   \/  \\  \\ \\ \/ \/\n\/ \/  \/ \/  \\ \\  | |  | | | |  | |  \/ \/\\ \\  \\   \/\n\\ \\  \\ \\  \/ \/  | |__| | | |__| | \/ ____ \\  | |\n \\ \\\/ \\ \\\/ \/   \\_  ___\/  \\____\/ \/_\/    \\_\\ |_|\n  \\__\/ \\__\/      \\ \\__\n                  \\___\\ by Red Hat\n Build, Store, and Distribute your Containers\nRunning '\/bin\/echo'\nWelcome to the Docker World!<\/code><\/pre>\n<p>3.Kh\u1edfi \u0111\u1ed9ng \u1ee9ng d\u1ee5ng \u0111\u1ec3 cho ph\u00e9p truy c\u1eadp v\u00e0o c\u00e0i \u0111\u1eb7t c\u1ea5u h\u00ecnh. V\u00ec h\u1ec7 th\u1ed1ng kh\u00f4ng c\u00f3 kh\u00f3a c\u00f4ng khai \u0111\u01b0\u1ee3c c\u1ea5u h\u00ecnh n\u00ean thi\u1ebft l\u1eadp n\u00e0y s\u1eed d\u1ee5ng c\u1ed5ng&nbsp;<code>8080<\/code>v\u00e0&nbsp;<code>http<\/code>k\u1ebft n\u1ed1i.<\/p>\n<pre class=\"wp-block-code\"><code>docker run -p 8080:8080 quay.io\/projectquay\/quay:v3.9.0 config EXAMPLE_PASSWORD<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>   __   __\n  \/  \\ \/  \\     ______   _    _     __   __   __\n \/ \/\\ \/ \/\\ \\   \/  __  \\ | |  | |   \/  \\  \\ \\ \/ \/\n\/ \/  \/ \/  \\ \\  | |  | | | |  | |  \/ \/\\ \\  \\   \/\n\\ \\  \\ \\  \/ \/  | |__| | | |__| | \/ ____ \\  | |\n \\ \\\/ \\ \\\/ \/   \\_  ___\/  \\____\/ \/_\/    \\_\\ |_|\n  \\__\/ \\__\/      \\ \\__\n                  \\___\\ by Red Hat\n Build, Store, and Distribute your Containers\n\nStartup timestamp:\nFri Nov 10 02:00:57 UTC 2023\n\nRunning all default config services\n2023-11-10 02:00:58,247 INFO RPC interface 'supervisor' initialized\n2023-11-10 02:00:58,247 CRIT Server 'unix_http_server' running without any HTTP authentication checking\n2023-11-10 02:00:58,247 INFO supervisord started with pid 8\n2023-11-10 02:00:59,250 INFO spawned: 'stdout' with pid 25\n2023-11-10 02:00:59,252 INFO spawned: 'config-editor' with pid 26\n2023-11-10 02:00:59,254 INFO spawned: 'quotaregistrysizeworker' with pid 27\n2023-11-10 02:00:59,257 INFO spawned: 'quotatotalworker' with pid 28\n2023-11-10 02:01:00,321 INFO success: stdout entered RUNNING state, process has stayed up for &gt; than 1 seconds (startsecs)\n2023-11-10 02:01:00,322 INFO success: config-editor entered RUNNING state, process has stayed up for &gt; than 1 seconds (startsecs)\n2023-11-10 02:01:00,322 INFO success: quotaregistrysizeworker entered RUNNING state, process has stayed up for &gt; than 1 seconds (startsecs)\n2023-11-10 02:01:00,322 INFO success: quotatotalworker entered RUNNING state, process has stayed up for &gt; than 1 seconds (startsecs)\nconfig-editor stdout | time=\"2023-11-10T02:00:59Z\" level=warning msg=\"An error occurred loading TLS: No public key provided for HTTPS. Server falling back to HTTP.\"\nconfig-editor stdout | time=\"2023-11-10T02:00:59Z\" level=info msg=\"Running the confi<\/code><\/pre>\n<p>4.M\u1edf tr\u00ecnh duy\u1ec7t web v\u00e0 s\u1eed d\u1ee5ng \u0111\u1ecbnh d\u1ea1ng \u0111\u1ecba ch\u1ec9 sau \u0111\u1ec3 truy c\u1eadp Quay:&nbsp;<code>http:\/\/YOUR_IP_ADDRESS:8080\/<\/code>.<\/p>\n<p>5.Khi \u0111\u01b0\u1ee3c y\u00eau c\u1ea7u, h\u00e3y cung c\u1ea5p&nbsp;<code>quayconfig<\/code>t\u00ean ng\u01b0\u1eddi d\u00f9ng c\u00f9ng v\u1edbi m\u1eadt kh\u1ea9u b\u1ea1n \u0111\u00e3 ch\u1ecdn \u1edf b\u01b0\u1edbc ba.<\/p>\n<p>6.B\u1ea1n c\u1ea7n \u0111i\u1ec1n v\u00e0o b\u1ea3y tr\u01b0\u1eddng trong c\u00e1c ph\u1ea7n&nbsp;<strong>C\u1ea5u h\u00ecnh m\u00e1y ch\u1ee7<\/strong>&nbsp;,&nbsp;<strong>C\u01a1 s\u1edf d\u1eef li\u1ec7u<\/strong>&nbsp;v\u00e0&nbsp;<strong>Redis<\/strong>&nbsp;:<\/p>\n<p>Trong ph\u1ea7n&nbsp;<strong>C\u1ea5u h\u00ecnh m\u00e1y ch\u1ee7<\/strong>&nbsp;, h\u00e3y nh\u1eadp \u0110\u1ecba ch\u1ec9 IPv4 c\u00f4ng khai c\u1ee7a Akamai Cloud Compute Instance cho tr\u01b0\u1eddng&nbsp;<strong>T\u00ean m\u00e1y ch\u1ee7 m\u00e1y ch\u1ee7<\/strong>&nbsp;:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.linode.com\/docs\/guides\/build-a-cloud-native-private-registry-with-quay\/project-quay-setup-server-configuration_hu31d1ad9f7cbdf1bcea36bffd03af649f_28124_1388x0_resize_q71_bgfafafc_catmullrom_3.jpg\" alt=\"The Server Configuration section of the Project Quay setup screen.\"><\/p>\n<p>Trong ph\u1ea7n&nbsp;<strong>C\u01a1 s\u1edf d\u1eef li\u1ec7u<\/strong>&nbsp;, ch\u1ecdn&nbsp;<strong>Postgres<\/strong>&nbsp;t\u1eeb menu th\u1ea3 xu\u1ed1ng&nbsp;<strong>Lo\u1ea1i c\u01a1 s\u1edf d\u1eef li\u1ec7u<\/strong>&nbsp;:<img decoding=\"async\" src=\"https:\/\/www.linode.com\/docs\/guides\/build-a-cloud-native-private-registry-with-quay\/project-quay-setup-database_huc4d60288abf602986c7a1879fc74cf2a_59255_1388x0_resize_q71_bgfafafc_catmullrom_3.jpg\" alt=\"The Database section of the Project Quay setup screen.\">Nh\u1eadp \u0110\u1ecba ch\u1ec9 IPv4 c\u00f4ng khai c\u1ee7a Akamai Cloud Compute Instance cho tr\u01b0\u1eddng&nbsp;<strong>M\u00e1y ch\u1ee7 c\u01a1 s\u1edf d\u1eef li\u1ec7u<\/strong>&nbsp;. Nh\u1eadp&nbsp;<code>quay_registry<\/code>cho c\u1ea3 tr\u01b0\u1eddng&nbsp;<strong>T\u00ean ng\u01b0\u1eddi d\u00f9ng<\/strong>&nbsp;v\u00e0&nbsp;<strong>T\u00ean c\u01a1 s\u1edf d\u1eef li\u1ec7u<\/strong>&nbsp;. \u0110\u1ed1i v\u1edbi tr\u01b0\u1eddng&nbsp;<strong>M\u1eadt kh\u1ea9u<\/strong>&nbsp;, nh\u1eadp m\u1eadt kh\u1ea9u b\u1ea1n \u0111\u00e3 ch\u1ecdn \u1edf b\u01b0\u1edbc ba.<\/p>\n<p>Trong ph\u1ea7n&nbsp;<strong>Redis<\/strong>&nbsp;, h\u00e3y nh\u1eadp \u0110\u1ecba ch\u1ec9 IPv4 c\u00f4ng khai c\u1ee7a Akamai Cloud Compute Instance cho tr\u01b0\u1eddng&nbsp;<strong>T\u00ean m\u00e1y ch\u1ee7 Redis<\/strong>&nbsp;:<img decoding=\"async\" src=\"https:\/\/www.linode.com\/docs\/guides\/build-a-cloud-native-private-registry-with-quay\/project-quay-setup-redis_hu337c24c360dd031ea366da337a2f5d0d_36607_1388x0_resize_q71_bgfafafc_catmullrom_3.jpg\" alt=\"The Redis section of the Project Quay setup screen.\"><\/p>\n<p class=\"has-background\" style=\"background-color:#74f78c33\">Ghi ch\u00fa: Xem&nbsp;<a href=\"https:\/\/access.redhat.com\/documentation\/en-us\/red_hat_quay\/3.3\/html\/deploy_red_hat_quay_-_basic\/configuring_red_hat_quay\" target=\"_blank\" rel=\"noreferrer noopener\">Ch\u01b0\u01a1ng 4. C\u1ea5u h\u00ecnh Red Hat Quay<\/a>&nbsp;trong t\u00e0i li\u1ec7u ch\u00ednh th\u1ee9c \u0111\u1ec3 bi\u1ebft th\u00eam c\u00e1c t\u00f9y ch\u1ecdn c\u1ea5u h\u00ecnh phi\u00ean b\u1ea3n Quay c\u1ee7a b\u1ea1n.<\/p>\n<p>7.Khi ho\u00e0n t\u1ea5t, h\u00e3y nh\u1ea5p v\u00e0o n\u00fat&nbsp;<strong>X\u00e1c th\u1ef1c thay \u0111\u1ed5i c\u1ea5u h\u00ecnh<\/strong>&nbsp;\u1edf cu\u1ed1i m\u00e0n h\u00ecnh. N\u1ebfu th\u00e0nh c\u00f4ng, h\u00e3y nh\u1ea5p v\u00e0o n\u00fat&nbsp;<strong>T\u1ea3i xu\u1ed1ng<\/strong>&nbsp;\u0111\u1ec3 t\u1ea3i xu\u1ed1ng&nbsp;<code>quay-config.tar.gz<\/code>t\u1ec7p.<\/p>\n<p>8.Quay l\u1ea1i terminal v\u00e0 t\u1eaft m\u00e1y ch\u1ee7 Quay \u0111ang ch\u1ea1y b\u1eb1ng c\u00e1ch nh\u1ea5n t\u1ed5 h\u1ee3p ph\u00edm&nbsp;<kbd>CTRL<\/kbd>+&nbsp;<kbd>C<\/kbd>.<\/p>\n<p>9.Chuy\u1ec3n t\u1ec7p&nbsp;<code>quay-config.tar.gz<\/code>\u0111\u1ebfn th\u01b0 m\u1ee5c g\u1ed1c c\u1ee7a ng\u01b0\u1eddi d\u00f9ng (&nbsp;<code>~\/<\/code>) tr\u00ean Akamai Cloud Compute Instance c\u1ee7a b\u1ea1n.<\/p>\n<p>10.T\u1ea1o th\u01b0 m\u1ee5c l\u01b0u tr\u1eef v\u00e0 c\u1ea5u h\u00ecnh, sau \u0111\u00f3 sao ch\u00e9p t\u1ec7p&nbsp;<code>quay-config.tar.gz<\/code>v\u00e0o th\u01b0 m\u1ee5c c\u1ea5u h\u00ecnh:<\/p>\n<pre class=\"wp-block-code\"><code>sudo mkdir -p \/data\/quay\/storage\nsudo mkdir -p \/data\/quay\/config\nsudo cp quay-config.tar.gz \/data\/quay\/config\/<\/code><\/pre>\n<p>11.Chuy\u1ec3n \u0111\u1ebfn th\u01b0 m\u1ee5c c\u1ea5u h\u00ecnh v\u00e0 gi\u1ea3i n\u00e9n d\u1eef li\u1ec7u c\u1ea5u h\u00ecnh c\u1ea7n thi\u1ebft kh\u1ecfi&nbsp;<code>quay-config.tar.gz<\/code>t\u1ec7p:<\/p>\n<pre class=\"wp-block-code\"><code>cd \/data\/quay\/config\/\nsudo tar xvf quay-config.tar.gz<\/code><\/pre>\n<p>12.Kh\u1edfi \u0111\u1ed9ng l\u1ea1i m\u00e1y ch\u1ee7 Quay v\u1edbi c\u1ea5u h\u00ecnh m\u1edbi:<\/p>\n<pre class=\"wp-block-code\"><code>docker run --restart=always -p 8080:8080 \\\n  --sysctl net.core.somaxconn=4096 \\\n  -v \/data\/quay\/config:\/conf\/stack:Z \\\n  -v \/data\/quay\/storage:\/datastorage:Z \\\n  quay.io\/projectquay\/quay:v3.9.0<\/code><\/pre>\n<p>Kh\u1edfi \u0111\u1ed9ng Quay nh\u01b0 th\u1ebf n\u00e0y s\u1ebd cung c\u1ea5p cho b\u1ea1n m\u00e0n h\u00ecnh c\u1eadp nh\u1eadt li\u00ean t\u1ee5c \u0111\u1ec3 b\u1ea1n c\u00f3 th\u1ec3 theo d\u00f5i ho\u1ea1t \u0111\u1ed9ng c\u1ee7a s\u1ed5 \u0111\u0103ng k\u00fd.<\/p>\n<h2 id=\"deploying-a-quay-registry\">Tri\u1ec3n khai m\u1ed9t Quay Registry<a href=\"https:\/\/www.linode.com\/docs\/guides\/build-a-cloud-native-private-registry-with-quay\/#deploying-a-quay-registry\"><\/a><\/h2>\n<p>1.V\u1edbi m\u00e1y ch\u1ee7 hi\u1ec7n \u0111\u01b0\u1ee3c c\u1ea5u h\u00ecnh \u0111\u1ec3 ho\u1ea1t \u0111\u1ed9ng v\u1edbi Quay, h\u00e3y truy c\u1eadp s\u1ed5 \u0111\u0103ng k\u00fd t\u1ea1i&nbsp;<code>http:\/\/YOUR_IP ADDRESS:8080\/<\/code>trong tr\u00ecnh duy\u1ec7t web c\u1ee7a b\u1ea1n. Trong l\u1ea7n truy c\u1eadp \u0111\u1ea7u ti\u00ean, b\u1ea1n s\u1ebd th\u1ea5y m\u00e0n h\u00ecnh kho l\u01b0u tr\u1eef Quay:<\/p>\n<ol>\n<li><img decoding=\"async\" src=\"https:\/\/www.linode.com\/docs\/guides\/build-a-cloud-native-private-registry-with-quay\/project-quay-login-screen_hu70961ce8af9e6e1636d20d1df5c66fb5_34390_1388x0_resize_q71_bgfafafc_catmullrom_3.jpg\" alt=\"The Project Quay login screen\"><\/li>\n<li>Nh\u1ea5p v\u00e0o&nbsp;<strong>T\u1ea1o t\u00e0i kho\u1ea3n<\/strong>&nbsp;\u0111\u1ec3 t\u1ea1o t\u00e0i kho\u1ea3n m\u1edbi. Sau khi t\u1ea1o t\u00e0i kho\u1ea3n m\u1edbi, b\u1ea1n s\u1ebd th\u1ea5y m\u1ed9t m\u00e0n h\u00ecnh m\u1edbi cho bi\u1ebft t\u00e0i kho\u1ea3n c\u1ee7a b\u1ea1n kh\u00f4ng c\u00f3 kho l\u01b0u tr\u1eef:<img decoding=\"async\" src=\"https:\/\/www.linode.com\/docs\/guides\/build-a-cloud-native-private-registry-with-quay\/project-quay-new-user-empty-repositories-screen_hu3787752aac987ace92e4d85712caec08_73782_1388x0_resize_q71_bgfafafc_catmullrom_3.jpg\" alt=\"The Project Quay new user empty repositories screen\"><\/li>\n<li>Nh\u1ea5p v\u00e0o&nbsp;<strong>T\u1ea1o kho l\u01b0u tr\u1eef m\u1edbi<\/strong>&nbsp;\u0111\u1ec3 t\u1ea1o kho l\u01b0u tr\u1eef \u0111\u1ea7u ti\u00ean c\u1ee7a b\u1ea1n. M\u00e0n h\u00ecnh ti\u1ebfp theo b\u1eaft \u0111\u1ea7u b\u1eb1ng c\u00e1ch y\u00eau c\u1ea7u b\u1ea1n nh\u1eadp t\u00ean kho l\u01b0u tr\u1eef, t\u00ean n\u00e0y ph\u1ea3i s\u1eed d\u1ee5ng s\u1ed1 ho\u1eb7c ch\u1eef th\u01b0\u1eddng (ch\u1eef in hoa c\u00f3 th\u1ec3 khi\u1ebfn Quay t\u1eeb ch\u1ed1i t\u00ean).<img decoding=\"async\" src=\"https:\/\/www.linode.com\/docs\/guides\/build-a-cloud-native-private-registry-with-quay\/project-quay-create-repositories-screen_hu7e670cb88405579d6b6126b9ac3dcf86_80499_1388x0_resize_q71_bgfafafc_catmullrom_3.jpg\" alt=\"The Project Quay create repositories screen\"><\/li>\n<li>Ch\u1ecdn gi\u1eefa kho l\u01b0u tr\u1eef c\u00f4ng khai ho\u1eb7c ri\u00eang t\u01b0, sau \u0111\u00f3 nh\u1ea5p v\u00e0o n\u00fat&nbsp;<strong>T\u1ea1o<\/strong>&nbsp;li\u00ean quan .<\/li>\n<li>Vi\u1ec7c \u0111i\u1ec1n kho l\u01b0u tr\u1eef b\u1eaft \u0111\u1ea7u b\u1eb1ng c\u00e1ch ph\u00e1t l\u1ec7nh docker ho\u1eb7c l\u1ec7nh podman pull \u0111\u1ec3 l\u1ea5y container \u1ee9ng d\u1ee5ng. Sau khi l\u1ea5y \u0111\u01b0\u1ee3c m\u00e3, b\u1ea1n c\u00f3 th\u1ec3 th\u00eam th\u1ebb v\u00e0o \u0111\u00f3.<\/li>\n<li>Ngo\u00e0i ra c\u00f2n c\u00f3 m\u1ed9t tab&nbsp;<strong>Thi\u1ebft l\u1eadp kho l\u01b0u tr\u1eef<\/strong>&nbsp;n\u01a1i b\u1ea1n c\u00f3 th\u1ec3 c\u1ea5u h\u00ecnh chi ti\u1ebft kho l\u01b0u tr\u1eef. M\u1ed9t ph\u1ea7n c\u1ee7a c\u00e1c thi\u1ebft l\u1eadp n\u00e0y l\u00e0 th\u00eam ho\u1eb7c x\u00f3a ng\u01b0\u1eddi d\u00f9ng v\u00e0 \u0111i\u1ec1u ch\u1ec9nh c\u00e1c quy\u1ec1n kho l\u01b0u tr\u1eef c\u1ee5 th\u1ec3: \u0111\u1ecdc, ghi v\u00e0 qu\u1ea3n tr\u1ecb. B\u1ea1n c\u0169ng c\u00f3 th\u1ec3 c\u1ea5u h\u00ecnh c\u00e1c s\u1ef1 ki\u1ec7n v\u00e0 th\u00f4ng b\u00e1o d\u1ef1a tr\u00ean ho\u1ea1t \u0111\u1ed9ng c\u1ee7a kho l\u01b0u tr\u1eef \u0111\u1ec3 m\u1ecdi ng\u01b0\u1eddi trong d\u1ef1 \u00e1n \u0111\u1ec1u \u0111\u01b0\u1ee3c th\u00f4ng b\u00e1o v\u1ec1 c\u00e1c thay \u0111\u1ed5i.<img decoding=\"async\" src=\"https:\/\/www.linode.com\/docs\/guides\/build-a-cloud-native-private-registry-with-quay\/project-quay-repository-settings-screen_huc9dde8a1628c222b83e6a7de58fe9d15_178941_1440x0_resize_q71_bgfafafc_catmullrom_3.jpg\" alt=\"The Project Quay repository settings screen\"><\/li>\n<li>\u0110\u1ec3 t\u1ea1o th\u00eam kho l\u01b0u tr\u1eef, h\u00e3y nh\u1ea5p v\u00e0o bi\u1ec3u t\u01b0\u1ee3ng&nbsp;<strong>+<\/strong>&nbsp;, sau \u0111\u00f3 ch\u1ecdn&nbsp;<strong>Kho l\u01b0u tr\u1eef m\u1edbi<\/strong>&nbsp;t\u1eeb danh s\u00e1ch th\u1ea3 xu\u1ed1ng.&nbsp;<a href=\"https:\/\/access.redhat.com\/documentation\/en-us\/red_hat_quay\/3.2\/html\/use_red_hat_quay\/creating_a_repository\" target=\"_blank\" rel=\"noreferrer noopener\">Ch\u01b0\u01a1ng 1. T\u1ea1o kho l\u01b0u tr\u1eef<\/a>&nbsp;cung c\u1ea5p cho b\u1ea1n th\u00f4ng tin chi ti\u1ebft b\u1ed5 sung v\u1ec1 c\u00e1ch l\u00e0m vi\u1ec7c v\u1edbi kho l\u01b0u tr\u1eef b\u1eb1ng Quay.<\/li>\n<\/ol>\n<h2 id=\"conclusion\">Ph\u1ea7n k\u1ebft lu\u1eadn<a href=\"https:\/\/www.linode.com\/docs\/guides\/build-a-cloud-native-private-registry-with-quay\/#conclusion\"><\/a><\/h2>\n<p>Quay cung c\u1ea5p ph\u01b0\u01a1ng ti\u1ec7n \u0111\u1ec3 n\u00e2ng cao qu\u00e1 tr\u00ecnh ph\u00e1t tri\u1ec3n container theo ba c\u00e1ch: b\u1ea3o m\u1eadt \u0111\u01b0\u1ee3c c\u1ea3i thi\u1ec7n, t\u00ednh linh ho\u1ea1t cao h\u01a1n v\u00e0 n\u0103ng su\u1ea5t c\u1ee7a nh\u00e0 ph\u00e1t tri\u1ec3n \u0111\u01b0\u1ee3c n\u00e2ng cao. \u0110\u1ec3 c\u00f3 \u0111\u01b0\u1ee3c nh\u1eefng l\u1ee3i \u00edch n\u00e0y, b\u1ea1n c\u1ea7n th\u1ef1c hi\u1ec7n c\u00e0i \u0111\u1eb7t nhi\u1ec1u ph\u1ea7n c\u1ee7a m\u1ed9t s\u1ed1 s\u1ea3n ph\u1ea9m ph\u1ea7n m\u1ec1m. \u0110i\u1ec1u n\u00e0y l\u00e0 \u0111\u1ec3 Quay c\u00f3 \u0111\u1ee7 t\u00e0i nguy\u00ean c\u1ea7n thi\u1ebft \u0111\u1ec3 th\u1ef1c hi\u1ec7n c\u00e1c t\u00e1c v\u1ee5 \u0111\u01b0\u1ee3c y\u00eau c\u1ea7u. Tuy nhi\u00ean, \u0111i\u1ec1u n\u00e0y l\u00e0m t\u0103ng th\u00eam t\u00ednh ph\u1ee9c t\u1ea1p c\u1ee7a m\u00f4i tr\u01b0\u1eddng ph\u00e1t tri\u1ec3n. Do \u0111\u00f3, c\u00f3 s\u1ef1 \u0111\u00e1nh \u0111\u1ed5i gi\u1eefa c\u00e1c l\u1ee3i \u00edch c\u1ee7a Quay v\u00e0 nhu c\u1ea7u li\u00ean quan \u0111\u1ebfn vi\u1ec7c th\u1ef1c hi\u1ec7n c\u00e1c t\u00e1c v\u1ee5 c\u1ea5u h\u00ecnh b\u1ed5 sung. N\u1ebfu b\u1ea1n mu\u1ed1n ph\u00e1t tri\u1ec3n th\u1ee9 g\u00ec \u0111\u00f3 v\u01b0\u1ee3t ra ngo\u00e0i m\u1ed9t d\u1ef1 \u00e1n \u0111\u01a1n gi\u1ea3n, h\u00e3y c\u00e2n nh\u1eafc th\u00eam chi ph\u00ed s\u1eed d\u1ee5ng Red Hat Quay thay v\u00ec Project Quay.<\/p>\n<p>Ngu\u1ed3n: https:\/\/www.linode.com\/docs\/guides\/build-a-cloud-native-private-registry-with-quay\/<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Docker kh\u00f4ng cung c\u1ea5p kh\u1ea3 n\u0103ng l\u01b0u tr\u1eef ho\u1eb7c ph\u00e2n ph\u1ed1i h\u00ecnh \u1ea3nh d\u00e0i h\u1ea1n, do \u0111\u00f3 c\u00e1c nh\u00e0 ph\u00e1t tri\u1ec3n c\u1ea7n th\u1ee9 g\u00ec \u0111\u00f3 nhi\u1ec1u h\u01a1n.&nbsp;Docker Registry&nbsp;th\u1ef1c hi\u1ec7n c\u00e1c t\u00e1c v\u1ee5 n\u00e0y v\u00e0 vi\u1ec7c s\u1eed d\u1ee5ng n\u00f3 \u0111\u1ea3m b\u1ea3o c\u00f9ng m\u1ed9t m\u00f4i tr\u01b0\u1eddng th\u1eddi gian ch\u1ea1y \u1ee9ng d\u1ee5ng th\u00f4ng qua \u1ea3o h\u00f3a. Tuy nhi\u00ean,<\/p>\n","protected":false},"author":1,"featured_media":36271,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[108],"tags":[],"class_list":["post-35042","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-containers"],"_links":{"self":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts\/35042","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/comments?post=35042"}],"version-history":[{"count":0,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/posts\/35042\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/media\/36271"}],"wp:attachment":[{"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/media?parent=35042"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/categories?post=35042"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jupitek.maudemo.vip\/index.php\/wp-json\/wp\/v2\/tags?post=35042"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}