{"id":50709,"date":"2023-09-06T23:51:52","date_gmt":"2022-07-09T10:13:48","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a6%82%e4%bd%95%e5%9c%a8ubuntu-22-04%e4%b8%8a%e8%ae%be%e7%bd%ae%e7%a7%81%e6%9c%89docker%e6%b3%a8%e5%86%8c%e8%a1%a8\/"},"modified":"2024-01-15T13:16:34","modified_gmt":"2024-01-15T05:16:34","slug":"%e5%a6%82%e4%bd%95%e5%9c%a8ubuntu-22-04%e4%b8%8a%e8%ae%be%e7%bd%ae%e7%a7%81%e6%9c%89docker%e6%b3%a8%e5%86%8c%e8%a1%a8","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a6%82%e4%bd%95%e5%9c%a8ubuntu-22-04%e4%b8%8a%e8%ae%be%e7%bd%ae%e7%a7%81%e6%9c%89docker%e6%b3%a8%e5%86%8c%e8%a1%a8\/","title":{"rendered":"\u5982\u4f55\u5728Ubuntu 22.04\u4e0a\u8bbe\u7f6e\u79c1\u6709Docker\u6ce8\u518c\u8868"},"content":{"rendered":"<h3>\u7b80\u4ecb<\/h3>\n<p>Docker\u6ce8\u518c\u8868\u662f\u4e00\u6b3e\u7ba1\u7406Docker\u5bb9\u5668\u955c\u50cf\u5b58\u50a8\u548c\u53d1\u5e03\u7684\u5e94\u7528\u7a0b\u5e8f\u3002\u6ce8\u518c\u8868\u5c06\u5bb9\u5668\u955c\u50cf\u96c6\u4e2d\u5b58\u50a8\uff0c\u5e76\u7f29\u77ed\u4e86\u5f00\u53d1\u8005\u7684\u6784\u5efa\u65f6\u95f4\u3002Docker\u955c\u50cf\u901a\u8fc7\u865a\u62df\u5316\u63d0\u4f9b\u76f8\u540c\u7684\u8fd0\u884c\u73af\u5883\uff0c\u4f46\u6784\u5efa\u4e00\u4e2a\u955c\u50cf\u53ef\u80fd\u9700\u8981\u5f88\u957f\u65f6\u95f4\u3002\u4f8b\u5982\uff0c\u5f00\u53d1\u8005\u53ef\u4ee5\u4ece\u6ce8\u518c\u8868\u4e0b\u8f7d\u4e00\u4e2a\u538b\u7f29\u7684\u955c\u50cf\uff0c\u5176\u4e2d\u5305\u542b\u4e86\u6240\u6709\u5fc5\u9700\u7684\u7ec4\u4ef6\uff0c\u800c\u65e0\u9700\u5355\u72ec\u5b89\u88c5\u4f9d\u8d56\u548c\u8f6f\u4ef6\u5305\u4ee5\u4f7f\u7528Docker\u3002\u6b64\u5916\uff0c\u5f00\u53d1\u8005\u53ef\u4ee5\u5229\u7528\u6301\u7eed\u96c6\u6210\u5de5\u5177\uff08\u4f8b\u5982TravisCI\uff09\u81ea\u52a8\u63a8\u9001\u955c\u50cf\u5230\u6ce8\u518c\u8868\uff0c\u5728\u751f\u4ea7\u548c\u5f00\u53d1\u671f\u95f4\u65e0\u7f1d\u66f4\u65b0\u955c\u50cf\u3002<\/p>\n<p>Docker Hub\u662f\u4e00\u4e2a\u514d\u8d39\u7684\u516c\u5171\u6ce8\u518c\u8868\uff0c\u53ef\u4ee5\u6258\u7ba1\u4f60\u7684\u81ea\u5b9a\u4e49Docker\u955c\u50cf\uff0c\u4f46\u6709\u4e9b\u60c5\u51b5\u4e0b\u4f60\u53ef\u80fd\u4e0d\u5e0c\u671b\u4f60\u7684\u955c\u50cf\u5bf9\u5916\u516c\u5f00\u3002\u955c\u50cf\u901a\u5e38\u5305\u542b\u8fd0\u884c\u5e94\u7528\u7a0b\u5e8f\u6240\u9700\u7684\u6240\u6709\u4ee3\u7801\uff0c\u56e0\u6b64\u5728\u4f7f\u7528\u4e13\u6709\u8f6f\u4ef6\u65f6\u4f7f\u7528\u79c1\u6709\u6ce8\u518c\u8868\u53ef\u80fd\u66f4\u53ef\u53d6\u3002<\/p>\n<p>\u5728\u672c\u6559\u7a0b\u4e2d\uff0c\u60a8\u5c06\u8bbe\u7f6e\u548c\u4fdd\u62a4\u81ea\u5df1\u7684\u79c1\u6709Docker Registry\u3002\u60a8\u5c06\u4f7f\u7528Docker Compose\u6765\u5b9a\u4e49\u8fd0\u884cDocker\u5bb9\u5668\u7684\u914d\u7f6e\uff0c\u5e76\u4f7f\u7528Nginx\u6765\u5c06\u6765\u81ea\u4e92\u8054\u7f51\u7684\u670d\u52a1\u5668\u6d41\u91cf\u8f6c\u53d1\u5230\u6b63\u5728\u8fd0\u884c\u7684Docker\u5bb9\u5668\u3002\u5b8c\u6210\u672c\u6559\u7a0b\u540e\uff0c\u60a8\u5c06\u80fd\u591f\u5c06\u81ea\u5b9a\u4e49\u7684Docker\u955c\u50cf\u63a8\u9001\u5230\u60a8\u7684\u79c1\u6709\u6ce8\u518c\u8868\uff0c\u5e76\u4ece\u8fdc\u7a0b\u670d\u52a1\u5668\u5b89\u5168\u5730\u62c9\u53d6\u8be5\u955c\u50cf\u3002<\/p>\n<h2>\u5148\u51b3\u6761\u4ef6<\/h2>\n<p>\u8981\u5b8c\u6210\u8fd9\u4e2a\u6559\u7a0b\uff0c\u4f60\u9700\u8981\u51c6\u5907\u4ee5\u4e0b\u7269\u54c1:<\/p>\n<ul class=\"post-ul\">\n<li>Two Ubuntu 22.04 servers set up by following the Ubuntu 22.04 Initial Server Setup Guide, including a sudo non-root user and a firewall. One server will host your private Docker Registry and the other will be your client server.<\/li>\n<li>Docker installed on both servers, which you can set up by following Steps 1 and 2 of How To Install and Use Docker on Ubuntu 22.04.<\/li>\n<\/ul>\n<p>\u5728\u4e3b\u673a\u670d\u52a1\u5668\u4e0a\uff0c\u60a8\u5c06\u9700\u8981\u8fdb\u884c\u8bbe\u7f6e\uff1a<\/p>\n<ul class=\"post-ul\">\n<li>Docker Compose installed on the host server, which you can set up by following Step 1 of How To Install and Use Docker Compose on Ubuntu 22.04.<\/li>\n<li>Nginx installed on your host server, which you can set up by following the steps in How To Install Nginx on Ubuntu 22.04.<\/li>\n<li>Nginx secured with Let\u2019s Encrypt on your host server for the private Docker Registry, which you can set up by following the How To Secure Nginx with Let\u2019s Encrypt on Ubuntu 22.04 tutorial. Make sure to redirect all traffic from HTTP to HTTPS in Step 4.A registered domain name that resolves to the server you\u2019re using to host the private Docker Registry. You will set this up as part of the Let\u2019s Encrypt prerequisite. In this tutorial, we\u2019ll refer to it as your_domain.<\/li>\n<\/ul>\n<h2>\u6b65\u9aa41 \u2014 \u5b89\u88c5\u548c\u914d\u7f6eDocker\u4ed3\u5e93<\/h2>\n<p>\u5728\u5f00\u59cb\u548c\u6d4b\u8bd5\u5bb9\u5668\u65f6\uff0c\u5728\u547d\u4ee4\u884c\u4e0a\u8fd0\u884cDocker\u975e\u5e38\u6709\u7528\uff0c\u4f46\u662f\u5728\u6d89\u53ca\u5e76\u884c\u8fd0\u884c\u591a\u4e2a\u5bb9\u5668\u7684\u5927\u89c4\u6a21\u90e8\u7f72\u4e2d\uff0c\u8fd9\u79cd\u65b9\u5f0f\u53ef\u80fd\u53d8\u5f97\u96be\u4ee5\u63a7\u5236\u3002<\/p>\n<p>\u4f7f\u7528Docker Compose\uff0c\u60a8\u53ea\u9700\u7f16\u5199\u4e00\u4e2a.yml\u6587\u4ef6\u6765\u8bbe\u7f6e\u6bcf\u4e2a\u5bb9\u5668\u7684\u914d\u7f6e\u548c\u5bb9\u5668\u4e4b\u95f4\u9700\u8981\u8fdb\u884c\u901a\u4fe1\u7684\u4fe1\u606f\u3002\u60a8\u53ef\u4ee5\u4f7f\u7528docker compose\u5de5\u5177\u5411\u6784\u6210\u5e94\u7528\u7a0b\u5e8f\u7684\u6240\u6709\u7ec4\u4ef6\u53d1\u51fa\u547d\u4ee4\uff0c\u5e76\u5c06\u5b83\u4eec\u4f5c\u4e3a\u4e00\u4e2a\u7ec4\u8fdb\u884c\u63a7\u5236\u3002<\/p>\n<p>Docker Registry\u672c\u8eab\u662f\u4e00\u4e2a\u5177\u6709\u591a\u4e2a\u7ec4\u4ef6\u7684\u5e94\u7528\u7a0b\u5e8f\uff0c\u56e0\u6b64\u60a8\u5c06\u4f7f\u7528Docker Compose\u6765\u7ba1\u7406\u5b83\u3002\u4e3a\u4e86\u542f\u52a8Registry\u7684\u4e00\u4e2a\u5b9e\u4f8b\uff0c\u60a8\u9700\u8981\u8bbe\u7f6e\u4e00\u4e2adocker-compose.yml\u6587\u4ef6\u6765\u5b9a\u4e49\u5b83\u4ee5\u53ca\u60a8\u7684Registry\u5c06\u5b58\u50a8\u6570\u636e\u7684\u78c1\u76d8\u4f4d\u7f6e\u3002<\/p>\n<p>\u60a8\u5c06\u5728\u4e3b\u673a\u670d\u52a1\u5668\u4e0a\u7684\u4e00\u4e2a\u540d\u4e3adocker-registry\u7684\u76ee\u5f55\u4e2d\u5b58\u50a8\u914d\u7f6e\u3002\u901a\u8fc7\u8fd0\u884c\u4ee5\u4e0b\u547d\u4ee4\u521b\u5efa\u8be5\u76ee\u5f55\uff1a<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">mkdir<\/span> ~\/docker-registry<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u524d\u5f80\u90a3\u91cc\uff1a<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token builtin class-name\">cd<\/span> ~\/docker-registry<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u7136\u540e\uff0c\u521b\u5efa\u4e00\u4e2a\u540d\u4e3a&#8221;data&#8221;\u7684\u5b50\u76ee\u5f55\uff0c\u60a8\u7684\u6ce8\u518c\u8868\u5c06\u5728\u5176\u4e2d\u5b58\u50a8\u5176\u56fe\u50cf\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">mkdir<\/span> data<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u901a\u8fc7\u8fd0\u884c\u4ee5\u4e0b\u547d\u4ee4\u6765\u521b\u5efa\u5e76\u6253\u5f00\u4e00\u4e2a\u540d\u4e3adocker-compose.yml\u7684\u6587\u4ef6\uff1a<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">nano<\/span> docker-compose.yml<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u6dfb\u52a0\u4e0b\u5217\u4ee3\u7801\u884c\uff0c\u5b9a\u4e49\u4e00\u4e2a\u57fa\u672c\u7684Docker Registry\u5b9e\u4f8b\uff1a<\/p>\n<div>~\/docker-registry\/docker-compose.yml \u53ef\u4ee5\u7b80\u5355\u5199\u4f5c\u4e3a~\/docker-registry\/docker-compose\u914d\u7f6e\u6587\u4ef6\u3002<\/div>\n<pre class=\"post-pre\"><code>version: '3'\r\n\r\nservices:\r\n  registry:\r\n    image: registry:latest\r\n    ports:\r\n    - \"5000:5000\"\r\n    environment:\r\n      REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: \/data\r\n    volumes:\r\n      - .\/data:\/data\r\n<\/code><\/pre>\n<p>\u9996\u5148\uff0c\u60a8\u547d\u540d\u7b2c\u4e00\u4e2a\u670d\u52a1\u6ce8\u518c\u8868\uff0c\u5e76\u5c06\u5176\u955c\u50cf\u8bbe\u7f6e\u4e3aregistry\uff0c\u4f7f\u7528\u6700\u65b0\u7248\u672c\u3002\u7136\u540e\uff0c\u5728\u7aef\u53e3\u4e0b\uff0c\u60a8\u5c06\u4e3b\u673a\u7684\u7aef\u53e35000\u6620\u5c04\u5230\u5bb9\u5668\u7684\u7aef\u53e35000\uff0c\u8fd9\u5c06\u5141\u8bb8\u60a8\u5411\u670d\u52a1\u5668\u7684\u7aef\u53e35000\u53d1\u9001\u8bf7\u6c42\uff0c\u5e76\u5c06\u8bf7\u6c42\u8f6c\u53d1\u5230\u6ce8\u518c\u8868\u3002<\/p>\n<p>\u5728\u73af\u5883\u90e8\u5206\uff0c\u60a8\u5c06REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY\u53d8\u91cf\u8bbe\u7f6e\u4e3a\/data\uff0c\u6307\u5b9a\u5b83\u5e94\u8be5\u5b58\u50a8\u6570\u636e\u7684\u5377\u3002\u7136\u540e\uff0c\u5728\u5377\u90e8\u5206\uff0c\u60a8\u5c06\u4e3b\u673a\u6587\u4ef6\u7cfb\u7edf\u4e0a\u7684\/data\u76ee\u5f55\u6620\u5c04\u5230\u5bb9\u5668\u4e2d\u7684\/data\u76ee\u5f55\uff0c\u5145\u5f53\u900f\u4f20\u7684\u4f5c\u7528\u3002\u6570\u636e\u5b9e\u9645\u4e0a\u5c06\u5b58\u50a8\u5728\u4e3b\u673a\u7684\u6587\u4ef6\u7cfb\u7edf\u4e0a\u3002<\/p>\n<p>\u4fdd\u5b58\u5e76\u5173\u95ed\u6587\u4ef6\u3002<\/p>\n<p>\u73b0\u5728\u4f60\u53ef\u4ee5\u901a\u8fc7\u8fd0\u884c\u6765\u5f00\u59cb\u914d\u7f6e:<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">docker<\/span> compose up<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u6ce8\u518c\u8868\u5bb9\u5668\u53ca\u5176\u4f9d\u8d56\u9879\u5c06\u88ab\u4e0b\u8f7d\u5e76\u542f\u52a8\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<div class=\"secondary-code-label\" title=\"Output\">Output<\/div>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>[+] Running 2\/2 \u283f Network docker-registry_default Created 0.1s \u283f Container docker-registry-registry-1 Created 0.1s Attaching to docker-registry-registry-1 docker-registry-registry-1 | time=&#8221;2022-11-19T14:31:20.40444638Z&#8221; level=warning msg=&#8221;No HTTP secret provided &#8211; generated random secret. This may cause problems with uploads if multiple registries are behind a load-balancer. To provide a shared secret, fill in http.secret in the configuration file or set the REGISTRY_HTTP_SECRET environment variable.&#8221; go.version=go1.16.15 instance.id=4fb8d420-eaf8-4a69-b740-bdc94fa52d91 service=registry version=&#8221;v2.8.1+unknown&#8221; docker-registry-registry-1 | time=&#8221;2022-11-19T14:31:20.404960549Z&#8221; level=info msg=&#8221;redis not configured&#8221; go.version=go1.16.15 instance.id=4fb8d420-eaf8-4a69-b740-bdc94fa52d91 service=registry version=&#8221;v2.8.1+unknown&#8221; docker-registry-registry-1 | time=&#8221;2022-11-19T14:31:20.412312462Z&#8221; level=info msg=&#8221;using inmemory blob descriptor cache&#8221; go.version=go1.16.15 instance.id=4fb8d420-eaf8-4a69-b740-bdc94fa52d91 service=registry version=&#8221;v2.8.1+unknown&#8221; docker-registry-registry-1 | time=&#8221;2022-11-19T14:31:20.412803878Z&#8221; level=info msg=&#8221;Starting upload purge in 52m0s&#8221; go.version=go1.16.15 instance.id=4fb8d420-eaf8-4a69-b740-bdc94fa52d91 service=registry version=&#8221;v2.8.1+unknown&#8221; docker-registry-registry-1 | time=&#8221;2022-11-19T14:31:20.41296431Z&#8221; level=info msg=&#8221;listening on [::]:5000&#8243; go.version=go1.16.15 instance.id=4fb8d420-eaf8-4a69-b740-bdc94fa52d91 service=registry version=&#8221;v2.8.1+unknown&#8221; &#8230;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u60a8\u5c06\u5728\u672c\u6559\u7a0b\u7684\u540e\u9762\u89e3\u51b3\u201c\u672a\u63d0\u4f9bHTTP\u5bc6\u94a5\u201d\u8b66\u544a\u4fe1\u606f\u7684\u95ee\u9898\u3002<\/p>\n<p>\u8f93\u51fa\u7684\u6700\u540e\u4e00\u884c\u8868\u793a\u6210\u529f\u542f\u52a8\uff0c\u5e76\u76d1\u542c\u57285000\u7aef\u53e3\u4e0a\u3002<\/p>\n<p>\u60a8\u53ef\u4ee5\u6309\u4e0bCTRL+C\u6765\u505c\u6b62\u5b83\u7684\u6267\u884c\u3002<\/p>\n<p>\u5728\u6b64\u6b65\u9aa4\u4e2d\uff0c\u60a8\u5df2\u521b\u5efa\u4e86\u4e00\u4e2aDocker Compose\u914d\u7f6e\uff0c\u8be5\u914d\u7f6e\u57285000\u7aef\u53e3\u4e0a\u542f\u52a8\u4e86\u4e00\u4e2aDocker\u6ce8\u518c\u8868\u3002\u5728\u63a5\u4e0b\u6765\u7684\u6b65\u9aa4\u4e2d\uff0c\u60a8\u5c06\u5728\u60a8\u7684\u57df\u540d\u4e0a\u516c\u5f00\u5b83\uff0c\u5e76\u8bbe\u7f6e\u8eab\u4efd\u9a8c\u8bc1\u3002<\/p>\n<h2>\u7b2c\u4e8c\u6b65 &#8211; \u8bbe\u7f6eNginx\u7aef\u53e3\u8f6c\u53d1<\/h2>\n<p>\u4f5c\u4e3a\u5148\u51b3\u6761\u4ef6\u7684\u4e00\u90e8\u5206\uff0c\u60a8\u5728\u60a8\u7684\u57df\u540d\u4e0a\u542f\u7528\u4e86HTTPS\u3002\u4e3a\u4e86\u5c06\u60a8\u7684\u5b89\u5168Docker\u6ce8\u518c\u8868\u66b4\u9732\u5728\u90a3\u91cc\uff0c\u60a8\u9700\u8981\u914d\u7f6eNginx\u5c06\u6d41\u91cf\u4ece\u60a8\u7684\u57df\u540d\u8f6c\u53d1\u5230\u6ce8\u518c\u8868\u5bb9\u5668\u3002<\/p>\n<p>\u60a8\u5df2\u7ecf\u8bbe\u7f6e\u4e86\/etc\/nginx\/sites-available\/your_domain\u6587\u4ef6\uff0c\u5176\u4e2d\u5305\u542b\u60a8\u7684\u670d\u52a1\u5668\u914d\u7f6e\u3002\u8fd0\u884c\u4ee5\u4e0b\u547d\u4ee4\u6253\u5f00\u6587\u4ef6\u8fdb\u884c\u7f16\u8f91\uff1a<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> <span class=\"token function\">nano<\/span> \/etc\/nginx\/sites-available\/<mark>your_domain<\/mark><\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u67e5\u627e\u73b0\u6709\u7684\u4f4d\u7f6e\u533a\u5757\u3002<\/p>\n<div>\u60a8\u7684\u57df\u540d\u7684\u914d\u7f6e\u6587\u4ef6\u8def\u5f84\u4e3a\uff1a\/etc\/nginx\/sites-available\/your_domain\u3002<\/div>\n<pre class=\"post-pre\"><code>...\r\n        <mark>location<\/mark> \/ {\r\n  ...\r\n        }\r\n...\r\n<\/code><\/pre>\n<p>\u60a8\u9700\u8981\u5c06\u6d41\u91cf\u8f6c\u53d1\u52305000\u7aef\u53e3\uff0c\u60a8\u7684\u6ce8\u518c\u8868\u4f1a\u76d1\u542c\u6d41\u91cf\u3002\u60a8\u8fd8\u5e0c\u671b\u5728\u8f6c\u53d1\u5230\u6ce8\u518c\u8868\u7684\u8bf7\u6c42\u4e2d\u6dfb\u52a0\u5934\u90e8\uff0c\u8be5\u5934\u90e8\u4ece\u670d\u52a1\u5668\u63d0\u4f9b\u6709\u5173\u8bf7\u6c42\u672c\u8eab\u7684\u9644\u52a0\u4fe1\u606f\u3002\u8bf7\u7528\u4ee5\u4e0b\u884c\u66ff\u6362\u4f4d\u7f6e\u5757\u7684\u73b0\u6709\u5185\u5bb9\uff1a<\/p>\n<div>\u60a8\u7684\u57df\u540d\u7684\u8def\u5f84\u4e3a\/etc\/nginx\/sites-available\/your_domain\u3002<\/div>\n<pre class=\"post-pre\"><code>...\r\nlocation \/ {\r\n    # Do not allow connections from docker 1.5 and earlier\r\n    # docker pre-1.6.0 did not properly set the user agent on ping, catch \"Go *\" user agents\r\n    if ($http_user_agent ~ \"^(docker\\\/1\\.(3|4|5(?!\\.[0-9]-dev))|Go ).*$\" ) {\r\n      return 404;\r\n    }\r\n\r\n    proxy_pass                          http:\/\/localhost:5000;\r\n    proxy_set_header  Host              $http_host;   # required for docker client's sake\r\n    proxy_set_header  X-Real-IP         $remote_addr; # pass on real client's IP\r\n    proxy_set_header  X-Forwarded-For   $proxy_add_x_forwarded_for;\r\n    proxy_set_header  X-Forwarded-Proto $scheme;\r\n    proxy_read_timeout                  900;\r\n}\r\n...\r\n<\/code><\/pre>\n<p>if\u8bed\u53e5\u5757\u68c0\u67e5\u8bf7\u6c42\u7684\u7528\u6237\u4ee3\u7406\uff0c\u5e76\u9a8c\u8bc1Docker\u5ba2\u6237\u7aef\u7684\u7248\u672c\u662f\u5426\u9ad8\u4e8e1.5\uff0c\u4ee5\u53ca\u662f\u5426\u4e3aGo\u5e94\u7528\u7a0b\u5e8f\u5c1d\u8bd5\u8bbf\u95ee\u3002\u5173\u4e8e\u6b64\u7684\u66f4\u8be6\u7ec6\u89e3\u91ca\uff0c\u60a8\u53ef\u4ee5\u5728Docker\u7684\u6ce8\u518c\u8868Nginx\u6307\u5357\u4e2d\u627e\u5230\u6709\u5173nginx\u5934\u90e8\u914d\u7f6e\u7684\u4fe1\u606f\u3002<\/p>\n<p>\u5f53\u4f60\u5b8c\u6210\u65f6\uff0c\u4fdd\u5b58\u5e76\u5173\u95ed\u8be5\u6587\u4ef6\u3002\u901a\u8fc7\u91cd\u65b0\u542f\u52a8Nginx\u5e94\u7528\u66f4\u6539\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> systemctl restart nginx<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u5982\u679c\u60a8\u6536\u5230\u9519\u8bef\u4fe1\u606f\uff0c\u8bf7\u4ed4\u7ec6\u68c0\u67e5\u60a8\u6240\u6dfb\u52a0\u7684\u914d\u7f6e\u3002<\/p>\n<p>\u8981\u786e\u8ba4Nginx\u662f\u5426\u6b63\u786e\u5c06\u6d41\u91cf\u8f6c\u53d1\u5230\u7aef\u53e35000\u4e0a\u7684\u6ce8\u518c\u5bb9\u5668\uff0c\u8bf7\u8fd0\u884c\u5b83\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">docker<\/span> compose up<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u7136\u540e\uff0c\u5728\u6d4f\u89c8\u5668\u7a97\u53e3\u4e2d\uff0c\u5bfc\u822a\u5230\u60a8\u7684\u57df\u540d\u5e76\u8bbf\u95eev2\u7aef\u70b9\uff0c\u5c31\u50cf\u8fd9\u6837\u3002<\/p>\n<pre class=\"post-pre\"><code>https:\/\/<mark>your_domain<\/mark>\/<mark>v2<\/mark>\r\n<\/code><\/pre>\n<p>\u6d4f\u89c8\u5668\u5c06\u52a0\u8f7d\u4e00\u4e2a\u7a7a\u7684JSON\u5bf9\u8c61\u3002<\/p>\n<pre class=\"post-pre\"><code>{}\r\n<\/code><\/pre>\n<p>\u5728\u4f60\u7684\u7ec8\u7aef\u4e2d\uff0c\u4f60\u5c06\u4f1a\u6536\u5230\u7c7b\u4f3c\u5982\u4e0b\u7684\u8f93\u51fa\u7ed3\u679c\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<div class=\"secondary-code-label\" title=\"Output\">Output<\/div>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>docker-registry-registry-1 | time=&#8221;2022-11-19T14:32:50.082396361Z&#8221; level=info msg=&#8221;response completed&#8221; go.version=go1.16.15 http.request.host=<mark>your_domain<\/mark> http.request.id=779fe265-1a7c-4a15-8ae4-eeb5fc35de98 http.request.method=GET http.request.remoteaddr=87.116.166.89 http.request.uri=&#8221;\/v2&#8243; http.request.useragent=&#8221;Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/107.0.0.0 Safari\/537.36&#8243; http.response.contenttype=&#8221;text\/html; charset=utf-8&#8243; http.response.duration=&#8221;162.546\u00b5s&#8221; http.response.status=301 http.response.written=39 docker-registry-registry-1 | 172.19.0.1 &#8211; &#8211; [19\/Nov\/2022:14:32:50 +0000] &#8220;GET \/v2 HTTP\/1.0&#8221; 301 39 &#8220;&#8221; &#8220;Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/107.0.0.0 Safari\/537.36&#8221; docker-registry-registry-1 | 172.19.0.1 &#8211; &#8211; [19\/Nov\/2022:14:32:50 +0000] &#8220;GET \/v2\/ HTTP\/1.0&#8221; 200 2 &#8220;&#8221; &#8220;Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/107.0.0.0 Safari\/537.36&#8243; docker-registry-registry-1 | time=&#8221;2022-11-19T14:32:50.132472674Z&#8221; level=info msg=&#8221;response completed&#8221; go.version=go1.16.15 http.request.host=<mark>your_domain<\/mark> http.request.id=0ffb17f0-c2a0-49d6-94f3-af046cfb96e5 http.request.method=GET http.request.remoteaddr=87.116.166.89 http.request.uri=&#8221;\/v2\/&#8221; http.request.useragent=&#8221;Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/107.0.0.0 Safari\/537.36&#8243; http.response.contenttype=&#8221;application\/json; charset=utf-8&#8243; http.response.duration=2.429608ms http.response.status=200 http.response.written=2 docker-registry-registry-1 | 172.19.0.1 &#8211; &#8211; [19\/Nov\/2022:14:32:50 +0000] &#8220;GET \/favicon.ico HTTP\/1.0&#8221; 404 19 &#8220;<mark>your_domain<\/mark>\/v2\/&#8221; &#8220;Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/107.0.0.0 Safari\/537.36&#8221;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u4ece\u6700\u540e\u4e00\u884c\u4f60\u53ef\u4ee5\u77e5\u9053\u662f\u5411\/v2\/\u53d1\u9001\u4e86\u4e00\u4e2aGET\u8bf7\u6c42\uff0c\u8fd9\u662f\u4f60\u53d1\u9001\u8bf7\u6c42\u7684\u76ee\u6807\u7aef\u70b9\u3002\u7531\u4e8e\u7aef\u53e3\u8f6c\u53d1\uff0c\u5bb9\u5668\u63a5\u6536\u5230\u4e86\u4f60\u53d1\u9001\u7684\u8bf7\u6c42\uff0c\u5e76\u8fd4\u56de\u4e00\u4e2a{}\u7684\u54cd\u5e94\u3002\u4ee3\u7801200\u8868\u793a\u5bb9\u5668\u6210\u529f\u5904\u7406\u4e86\u8be5\u8bf7\u6c42\u3002<\/p>\n<p>\u6309\u4e0b CTRL+C \u505c\u6b62\u5b83\u7684\u6267\u884c\u3002<\/p>\n<p>\u65e2\u7136\u4f60\u5df2\u7ecf\u8bbe\u7f6e\u4e86\u7aef\u53e3\u8f6c\u53d1\uff0c\u4f60\u5c06\u63d0\u5347\u4f60\u7684\u6ce8\u518c\u8868\u7684\u5b89\u5168\u6027\u3002<\/p>\n<h2>\u6b65\u9aa43 \u2014 \u8bbe\u7f6e\u8eab\u4efd\u9a8c\u8bc1<\/h2>\n<p>Nginx\u5141\u8bb8\u4f60\u4e3a\u5b83\u7ba1\u7406\u7684\u7f51\u7ad9\u8bbe\u7f6eHTTP\u8ba4\u8bc1\uff0c\u4f60\u53ef\u4ee5\u4f7f\u7528\u5b83\u6765\u9650\u5236\u5bf9\u4f60\u7684Docker Registry\u7684\u8bbf\u95ee\u3002\u4e3a\u5b9e\u73b0\u8fd9\u4e00\u76ee\u7684\uff0c\u4f60\u9700\u8981\u7528htpasswd\u521b\u5efa\u4e00\u4e2a\u8ba4\u8bc1\u6587\u4ef6\uff0c\u5e76\u5728\u5176\u4e2d\u6dfb\u52a0\u7528\u6237\u540d\u548c\u5bc6\u7801\u7684\u7ec4\u5408\uff0c\u8fd9\u6837\u624d\u80fd\u88ab\u63a5\u53d7\u3002\u8fd9\u4e2a\u8fc7\u7a0b\u5c06\u542f\u7528\u5bf9\u4f60\u7684\u6ce8\u518c\u8868\u7684\u8ba4\u8bc1\u3002<\/p>\n<p>\u5b89\u88c5apache2-utils\u8f6f\u4ef6\u5305\u53ef\u4ee5\u83b7\u5f97htpasswd\u5b9e\u7528\u5de5\u5177\u3002\u8fd0\u884c\u4ee5\u4e0b\u547d\u4ee4\u8fdb\u884c\u5b89\u88c5\uff1a<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> <span class=\"token function\">apt<\/span> <span class=\"token function\">install<\/span> apache2-utils <span class=\"token parameter variable\">-y<\/span><\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u60a8\u5c06\u628a\u5305\u542b\u51ed\u636e\u7684\u8eab\u4efd\u9a8c\u8bc1\u6587\u4ef6\u4fdd\u5b58\u5728~\/docker-registry\/auth\u76ee\u5f55\u4e0b\u3002\u901a\u8fc7\u8fd0\u884c\u4ee5\u4e0b\u547d\u4ee4\u521b\u5efa\u5b83\uff1a<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">mkdir<\/span> ~\/docker-registry\/auth<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u524d\u5f80\u5b83\u7684\u4f4d\u7f6e\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token builtin class-name\">cd<\/span> ~\/docker-registry\/auth<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u521b\u5efa\u7b2c\u4e00\u4e2a\u7528\u6237\uff0c\u5c06\u7528\u6237\u540d\u66ff\u6362\u4e3a\u60a8\u60f3\u8981\u4f7f\u7528\u7684\u7528\u6237\u540d\u3002-B\u6807\u5fd7\u6307\u5b9a\u4e86\u4f7f\u7528bcrypt\u7b97\u6cd5\uff0c\u8fd9\u662fDocker\u6240\u8981\u6c42\u7684\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\">htpasswd <span class=\"token parameter variable\">-Bc<\/span> registry.password <mark>username<\/mark><\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u5728\u63d0\u793a\u65f6\u8f93\u5165\u5bc6\u7801\u3002\u51ed\u8bc1\u7684\u7ec4\u5408\u5c06\u8ffd\u52a0\u5230registry.password\u4e2d\u3002<\/p>\n<div class=\"post-conf-note\">\n<p class=\"post-conf-desc\">Note<\/p>\n<div>\u6ce8\u610f\uff1a\u8981\u6dfb\u52a0\u66f4\u591a\u7528\u6237\uff0c\u8bf7\u91cd\u65b0\u8fd0\u884c\u524d\u4e00\u4e2a\u547d\u4ee4\uff0c\u4e0d\u4f7f\u7528 -c \u53c2\u6570\uff1a<br \/>\nhtpasswd -B registry.password \u7528\u6237\u540d<\/div>\n<p>\u53bb\u6389 -c \u53c2\u6570\u5c06\u4f1a\u66f4\u65b0\u73b0\u6709\u6587\u4ef6\uff0c\u800c\u4e0d\u662f\u521b\u5efa\u65b0\u6587\u4ef6\u3002<\/p>\n<\/div>\n<p>\u73b0\u5728\u5df2\u7ecf\u521b\u5efa\u4e86\u51ed\u8bc1\u5217\u8868\uff0c\u60a8\u9700\u8981\u7f16\u8f91docker-compose.yml\u6587\u4ef6\uff0c\u4ee5\u4fbfDocker\u4f7f\u7528\u60a8\u521b\u5efa\u7684\u6587\u4ef6\u6765\u9a8c\u8bc1\u7528\u6237\u3002\u6253\u5f00\u5b83\u8fdb\u884c\u7f16\u8f91\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">nano<\/span> ~\/docker-registry\/docker-compose.yml<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u6dfb\u52a0\u4ee5\u4e0b\u7a81\u51fa\u663e\u793a\u7684\u884c\uff1a<\/p>\n<div>~\/docker-registry\/docker-compose.yml\u7684\u91ca\u4e49\u53ea\u9700\u8981\u4e00\u4e2a\u9009\u9879\u3002<br \/>\n~\/docker-registry\/docker-compose.yml\u7684\u4e2d\u6587\u7ffb\u8bd1\u53ea\u9700\u8981\u4e00\u4e2a\u7248\u672c\u3002<\/div>\n<pre class=\"post-pre\"><code>version: '3'\r\n\r\nservices:\r\n  registry:\r\n    image: registry:latest\r\n    ports:\r\n    - \"5000:5000\"\r\n    environment:\r\n      <mark>REGISTRY_AUTH: htpasswd<\/mark>\r\n      <mark>REGISTRY_AUTH_HTPASSWD_REALM: Registry<\/mark>\r\n      <mark>REGISTRY_AUTH_HTPASSWD_PATH: \/auth\/registry.password<\/mark>\r\n      REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: \/data\r\n    volumes:\r\n      <mark>- .\/auth:\/auth<\/mark>\r\n      - .\/data:\/data\r\n<\/code><\/pre>\n<p>\u60a8\u5df2\u6dfb\u52a0\u4e86\u6307\u5b9a\u4f7f\u7528HTTP\u8eab\u4efd\u9a8c\u8bc1\u5e76\u63d0\u4f9bhtpasswd\u6587\u4ef6\u8def\u5f84\u7684\u73af\u5883\u53d8\u91cf\u3002\u5bf9\u4e8eREGISTRY_AUTH\uff0c\u60a8\u5c06\u5176\u503c\u6307\u5b9a\u4e3ahtpasswd\uff0c\u8fd9\u662f\u60a8\u6b63\u5728\u4f7f\u7528\u7684\u8eab\u4efd\u9a8c\u8bc1\u65b9\u6848\uff0c\u5e76\u5c06REGISTRY_AUTH_HTPASSWD_PATH\u8bbe\u7f6e\u4e3a\u8ba4\u8bc1\u6587\u4ef6\u7684\u8def\u5f84\u3002REGISTRY_AUTH_HTPASSWD_REALM\u8868\u793ahtpasswd\u9886\u57df\u7684\u540d\u79f0\u3002<\/p>\n<p>\u4f60\u8fd8\u5c06.\/auth\u76ee\u5f55\u6302\u8f7d\u5230\u955c\u50cf\u4ed3\u5e93\u5bb9\u5668\u4e2d\uff0c\u4ee5\u4fbf\u5c06\u6587\u4ef6\u5728\u5bb9\u5668\u5185\u90e8\u53ef\u7528\u3002\u4fdd\u5b58\u5e76\u5173\u95ed\u6587\u4ef6\u3002<\/p>\n<p>\u4f60\u73b0\u5728\u53ef\u4ee5\u9a8c\u8bc1\u4f60\u7684\u8eab\u4efd\u8ba4\u8bc1\u662f\u5426\u6b63\u5e38\u5de5\u4f5c\u3002\u9996\u5148\uff0c\u5bfc\u822a\u5230\u4e3b\u76ee\u5f55\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token builtin class-name\">cd<\/span> ~\/docker-registry<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u7136\u540e\uff0c\u901a\u8fc7\u6267\u884c\u6ce8\u518c\u8868\u6765\u8fd0\u884c\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">docker<\/span> compose up<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u5728\u60a8\u7684\u6d4f\u89c8\u5668\u4e2d\uff0c\u5237\u65b0\u60a8\u7684\u57df\u540d\u9875\u9762\u3002\u7cfb\u7edf\u5c06\u8981\u6c42\u60a8\u8f93\u5165\u7528\u6237\u540d\u548c\u5bc6\u7801\u3002<\/p>\n<p>\u5728\u63d0\u4f9b\u6709\u6548\u7684\u51ed\u8bc1\u7ec4\u5408\u4e4b\u540e\uff0c\u60a8\u5c06\u53ef\u4ee5\u8bbf\u95ee\u5e26\u6709\u7a7a\u7684JSON\u5bf9\u8c61\u7684\u9875\u9762\u3002<\/p>\n<pre class=\"post-pre\"><code>{}\r\n<\/code><\/pre>\n<p>\u60a8\u5df2\u7ecf\u6210\u529f\u8fdb\u884c\u8eab\u4efd\u9a8c\u8bc1\uff0c\u5e76\u83b7\u5f97\u4e86\u6ce8\u518c\u8868\u7684\u8bbf\u95ee\u6743\u9650\u3002\u5728\u60a8\u7684\u7ec8\u7aef\u4e2d\u6309\u4e0bCTRL+C\u9000\u51fa\u3002<\/p>\n<p>\u4f60\u7684\u6ce8\u518c\u8868\u73b0\u5df2\u7ecf\u5b89\u5168\uff0c\u5e76\u4e14\u53ea\u80fd\u5728\u8ba4\u8bc1\u540e\u8bbf\u95ee\u3002\u63a5\u4e0b\u6765\uff0c\u4f60\u5c06\u914d\u7f6e\u5b83\u4ee5\u540e\u53f0\u8fdb\u7a0b\u8fd0\u884c\uff0c\u5e76\u901a\u8fc7\u81ea\u52a8\u542f\u52a8\u6765\u4fdd\u6301\u7a33\u5b9a\uff0c\u5373\u4f7f\u91cd\u65b0\u542f\u52a8\u4e5f\u4e0d\u5f71\u54cd\u5176\u529f\u80fd\u3002<\/p>\n<h2>\u7b2c\u56db\u6b65-\u5c06Docker\u6ce8\u518c\u8868\u4f5c\u4e3a\u670d\u52a1\u542f\u52a8<\/h2>\n<p>\u901a\u8fc7\u6307\u793aDocker Compose\u59cb\u7ec8\u4fdd\u6301\u8fd0\u884c\u72b6\u6001\uff0c\u60a8\u53ef\u4ee5\u786e\u4fdd\u6ce8\u518c\u8868\u5bb9\u5668\u5728\u7cfb\u7edf\u542f\u52a8\u65f6\u6216\u5d29\u6e83\u540e\u81ea\u52a8\u542f\u52a8\u3002<\/p>\n<p>\u6253\u5f00docker-compose.yml\u6587\u4ef6\u8fdb\u884c\u7f16\u8f91\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">nano<\/span> docker-compose.yml<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u5728\u6ce8\u518c\u8868\u5757\u4e2d\u6dfb\u52a0\u4ee5\u4e0b\u884c\u3002<\/p>\n<div>docker-compose.yml -&gt; Docker \u914d\u7f6e\u6587\u4ef6<\/div>\n<pre class=\"post-pre\"><code>...\r\n  registry:\r\n    <mark>restart: always<\/mark>\r\n...\r\n<\/code><\/pre>\n<p>\u5c06\u91cd\u542f\u8bbe\u7f6e\u4e3a\u201c\u59cb\u7ec8\u201d\u53ef\u4ee5\u786e\u4fdd\u5bb9\u5668\u5728\u91cd\u65b0\u542f\u52a8\u540e\u7ee7\u7eed\u5b58\u5728\u3002\u5b8c\u6210\u540e\uff0c\u8bf7\u4fdd\u5b58\u5e76\u5173\u95ed\u6587\u4ef6\u3002<\/p>\n<p>\u73b0\u5728\u4f60\u53ef\u4ee5\u901a\u8fc7\u4f20\u5165-d\u6765\u542f\u52a8\u540e\u53f0\u8fdb\u7a0b\u6765\u542f\u52a8\u4f60\u7684\u6ce8\u518c\u8868\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">docker<\/span> compose up <span class=\"token parameter variable\">-d<\/span><\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u5728\u4f60\u7684\u6ce8\u518c\u8868\u540e\u53f0\u8fd0\u884c\u65f6\uff0c\u4f60\u53ef\u4ee5\u81ea\u7531\u5173\u95ed\u8be5SSH\u4f1a\u8bdd\u3001\u7ec8\u7aef\uff0c\u800c\u6ce8\u518c\u8868\u4e0d\u4f1a\u53d7\u5230\u5f71\u54cd\u3002<\/p>\n<p>\u56e0\u4e3aDocker\u955c\u50cf\u53ef\u80fd\u975e\u5e38\u5927\uff0c\u6240\u4ee5\u4e0b\u4e00\u6b65\u662f\u589e\u52a0Nginx\u63a5\u53d7\u4e0a\u4f20\u7684\u6700\u5927\u6587\u4ef6\u5927\u5c0f\u3002<\/p>\n<h2>\u6b65\u9aa45 \u2014 \u589e\u52a0Nginx\u7684\u6587\u4ef6\u4e0a\u4f20\u5927\u5c0f<\/h2>\n<p>\u5728\u5c06\u56fe\u50cf\u63a8\u9001\u5230\u6ce8\u518c\u8868\u4e4b\u524d\uff0c\u9700\u8981\u786e\u4fdd\u60a8\u7684\u6ce8\u518c\u8868\u80fd\u591f\u5904\u7406\u5927\u578b\u6587\u4ef6\u4e0a\u4f20\u3002Nginx\u4e2d\u6587\u4ef6\u4e0a\u4f20\u7684\u9ed8\u8ba4\u5927\u5c0f\u9650\u5236\u4e3a1m\uff0c\u5bf9\u4e8eDocker\u56fe\u50cf\u6765\u8bf4\u8fdc\u8fdc\u4e0d\u591f\u3002\u8981\u63d0\u9ad8\u5b83\uff0c\u60a8\u9700\u8981\u4fee\u6539\u4f4d\u4e8e\/ etc\/nginx\/nginx.conf\u7684\u4e3b\u8981Nginx\u914d\u7f6e\u6587\u4ef6\u3002<\/p>\n<p>\u6253\u5f00\u5b83\u8fdb\u884c\u7f16\u8f91\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> <span class=\"token function\">nano<\/span> \/etc\/nginx\/nginx.conf<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u5c06\u8fd9\u884c\u9ad8\u4eae\u7684\u5185\u5bb9\u6dfb\u52a0\u5230HTTP\u90e8\u5206\u3002<\/p>\n<div>\/etc\/nginx\/nginx.conf -&gt; Nginx\u914d\u7f6e\u6587\u4ef6<\/div>\n<pre class=\"post-pre\"><code>...\r\nhttp {\r\n        <mark>client_max_body_size 16384m;<\/mark>\r\n        ...\r\n}\r\n...\r\n<\/code><\/pre>\n<p>\u5ba2\u6237\u7aef\u7684\u6700\u5927body\u5927\u5c0f\u53c2\u6570\u73b0\u5df2\u8bbe\u7f6e\u4e3a16384m\uff0c\u4f7f\u5f97\u6700\u5927\u4e0a\u4f20\u6587\u4ef6\u5927\u5c0f\u53d8\u4e3a16GB\u3002<\/p>\n<p>\u4fdd\u5b58\u5e76\u5173\u95ed\u6587\u4ef6\u3002<\/p>\n<p>\u91cd\u542fNginx\u4ee5\u5e94\u7528\u914d\u7f6e\u66f4\u6539\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> systemctl restart nginx<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u5728\u8fd9\u4e00\u6b65\u4e2d\uff0c\u60a8\u66f4\u65b0\u4e86Nginx\u5141\u8bb8\u7684\u6587\u4ef6\u5927\u5c0f\u3002\u73b0\u5728\u60a8\u53ef\u4ee5\u5728Docker Registry\u4e2d\u4e0a\u4f20\u5927\u578b\u56fe\u7247\uff0c\u800c\u4e0d\u4f1a\u88abNginx\u963b\u6b62\u4f20\u8f93\u6216\u51fa\u73b0\u9519\u8bef\u3002<\/p>\n<h2>\u7b2c\u516d\u6b65\u2014\u2014\u5c06\u5176\u53d1\u5e03\u5230\u60a8\u7684\u79c1\u6709Docker\u6ce8\u518c\u8868<\/h2>\n<p>\u73b0\u5728\u4f60\u7684Docker\u6ce8\u518c\u670d\u52a1\u5668\u6b63\u5728\u8fd0\u884c\uff0c\u5e76\u4e14\u63a5\u53d7\u5927\u6587\u4ef6\u5927\u5c0f\uff0c\u4f60\u53ef\u4ee5\u5c1d\u8bd5\u5c06\u4e00\u4e2a\u955c\u50cf\u63a8\u9001\u5230\u4e0a\u9762\u3002\u7531\u4e8e\u4f60\u6ca1\u6709\u73b0\u6210\u7684\u955c\u50cf\u53ef\u7528\uff0c\u4f60\u53ef\u4ee5\u4f7f\u7528Docker Hub\u4e0a\u7684ubuntu\u955c\u50cf\uff08\u4e00\u4e2a\u516c\u5171\u7684Docker\u6ce8\u518c\u670d\u52a1\u5668\uff09\u6765\u8fdb\u884c\u6d4b\u8bd5\u3002<\/p>\n<p>\u5728\u4e00\u4e2a\u65b0\u7684\u5ba2\u6237\u7aef\u670d\u52a1\u5668\u7684\u7ec8\u7aef\u4f1a\u8bdd\u4e2d\uff0c\u8fd0\u884c\u4ee5\u4e0b\u547d\u4ee4\u6765\u4e0b\u8f7dUbuntu\u955c\u50cf\uff0c\u8fd0\u884c\u5b83\uff0c\u5e76\u83b7\u5f97\u5bf9\u5176shell\u7684\u8bbf\u95ee\u6743\u9650\uff1a<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">docker<\/span> run <span class=\"token parameter variable\">-t<\/span> <span class=\"token parameter variable\">-i<\/span> ubuntu \/bin\/bash<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u4f7f\u7528-i\u548c-t\u6807\u5fd7\u53ef\u8ba9\u60a8\u4ee5\u4ea4\u4e92\u65b9\u5f0f\u8bbf\u95ee\u5bb9\u5668\u7684shell\u3002<\/p>\n<p>\u4e00\u65e6\u8fdb\u5165\u7cfb\u7edf\uff0c\u901a\u8fc7\u6267\u884c\u547d\u4ee4\u521b\u5efa\u4e00\u4e2a\u540d\u4e3a\u201c\u6210\u529f\u201d\u7684\u6587\u4ef6\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"root@f7e13d5464d1:\/#\"><span class=\"token function\">touch<\/span> \/SUCCESS<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u521b\u5efa\u8fd9\u4e2a\u6587\u4ef6\u540e\uff0c\u60a8\u5df2\u7ecf\u5b9a\u5236\u4e86\u60a8\u7684\u5bb9\u5668\u3002\u4ee5\u540e\u60a8\u5c06\u4f7f\u7528\u5b83\u6765\u68c0\u67e5\u60a8\u662f\u5426\u4f7f\u7528\u5b8c\u5168\u76f8\u540c\u7684\u5bb9\u5668\u3002<\/p>\n<p>\u8fd0\u884c\u4ee5\u4e0b\u547d\u4ee4\u9000\u51fa\u5bb9\u5668 shell:<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"root@f7e13d5464d1:\/#\"><span class=\"token builtin class-name\">exit<\/span><\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u73b0\u5728\u4ece\u60a8\u521a\u624d\u81ea\u5b9a\u4e49\u7684\u5bb9\u5668\u4e2d\u521b\u5efa\u4e00\u4e2a\u65b0\u7684\u56fe\u50cf\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">docker<\/span> commit <span class=\"token variable\"><span class=\"token variable\">$(<\/span><span class=\"token function\">docker<\/span> <span class=\"token function\">ps<\/span> <span class=\"token parameter variable\">-lq<\/span><span class=\"token variable\">)<\/span><\/span> test-image<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u73b0\u5728\u53ef\u4ee5\u5728\u672c\u5730\u4f7f\u7528\u65b0\u7684\u955c\u50cf\uff0c\u5e76\u5c06\u5176\u63a8\u9001\u5230\u4f60\u7684\u5bb9\u5668\u6ce8\u518c\u8868\u4e2d\u3002\u9996\u5148\uff0c\u4f60\u9700\u8981\u767b\u5f55\uff1a<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">docker<\/span> login https:\/\/<mark>your_domain<\/mark><\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u5f53\u63d0\u793a\u65f6\uff0c\u8bf7\u8f93\u5165\u60a8\u5728\u7b2c3\u6b65\u4e2d\u5b9a\u4e49\u7684\u7528\u6237\u540d\u548c\u5bc6\u7801\u51ed\u636e\u3002<\/p>\n<p>\u8f93\u51fa\u7ed3\u679c\u5c06\u4e3a\uff1a<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<div class=\"secondary-code-label\" title=\"Output\">Output<\/div>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&#8230; Login Succeeded<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u4e00\u65e6\u767b\u5f55\uff0c\u5c06\u5df2\u521b\u5efa\u7684\u56fe\u50cf\u91cd\u547d\u540d\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">docker<\/span> tag test-image <mark>your_domain<\/mark>\/test-image<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u6700\u540e\uff0c\u5c06\u65b0\u6807\u8bb0\u7684\u56fe\u50cf\u63a8\u9001\u5230\u60a8\u7684\u6ce8\u518c\u8868\u4e2d\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">docker<\/span> push <mark>your_domain<\/mark>\/test-image<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u4f60\u5c06\u4f1a\u6536\u5230\u7c7b\u4f3c\u4ee5\u4e0b\u7684\u8f93\u51fa\u7ed3\u679c\uff1a<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<div class=\"secondary-code-label\" title=\"Output\">Output<\/div>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>Using default tag: latest The push refers to a repository [<mark>your_domain<\/mark>\/test-image] 1cf9c9034825: Pushed f4a670ac65b6: Pushed latest: digest: sha256:95112d0af51e5470d74ead77932954baca3053e04d201ac4639bdf46d5cd515b size: 736<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u60a8\u5df2\u7ecf\u901a\u8fc7\u767b\u5f55\u9a8c\u8bc1\u4e86\u60a8\u7684\u6ce8\u518c\u8868\u5904\u7406\u7528\u6237\u8eab\u4efd\u9a8c\u8bc1\u7684\u529f\u80fd\uff0c\u5e76\u4e14\u5b83\u5141\u8bb8\u5df2\u8ba4\u8bc1\u7684\u7528\u6237\u5411\u6ce8\u518c\u8868\u63a8\u9001\u56fe\u50cf\u3002\u73b0\u5728\u60a8\u5c06\u5c1d\u8bd5\u4ece\u60a8\u7684\u6ce8\u518c\u8868\u4e2d\u83b7\u53d6\u8fd9\u4e2a\u56fe\u50cf\u3002<\/p>\n<h2>\u7b2c7\u6b65 &#8211; \u4ece\u60a8\u7684\u79c1\u6709Docker Registry\u4e2d\u62c9\u53d6<\/h2>\n<p>\u73b0\u5728\u4f60\u5df2\u7ecf\u5c06\u4e00\u4e2a\u955c\u50cf\u63a8\u9001\u5230\u4f60\u7684\u79c1\u6709\u4ed3\u5e93\uff0c\u4f60\u5c06\u5c1d\u8bd5\u4ece\u4e2d\u62c9\u53d6\u3002<\/p>\n<p>\u5728\u4e3b\u670d\u52a1\u5668\u4e0a\uff0c\u4f7f\u7528\u60a8\u4e4b\u524d\u8bbe\u7f6e\u7684\u7528\u6237\u540d\u548c\u5bc6\u7801\u767b\u5f55\uff1a<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">docker<\/span> login https:\/\/<mark>your_domain<\/mark><\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u5c1d\u8bd5\u8fd0\u884c\u547d\u4ee4\u4ee5\u83b7\u53d6\u6d4b\u8bd5\u56fe\u50cf: \u62c9\u53d6\u6d4b\u8bd5\u56fe\u50cf\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">docker<\/span> pull <mark>your_domain<\/mark>\/test-image<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>Docker\u5c06\u4e0b\u8f7d\u955c\u50cf\u3002\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u8fd0\u884c\u5bb9\u5668\uff1a<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">docker<\/span> run <span class=\"token parameter variable\">-it<\/span> <mark>your_domain<\/mark>\/test-image \/bin\/bash<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u5b83\u5c06\u4e3a\u5bb9\u5668\u52a0\u8f7d\u5916\u58f3\u3002<\/p>\n<p>\u8fd0\u884c\u547d\u4ee4\u5217\u51fa\u5f53\u524d\u5b58\u5728\u7684\u6587\u4ef6\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"root@f7e13d5464d1:\/#\"><span class=\"token function\">ls<\/span><\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u6587\u4ef6\u5217\u8868\u4e2d\u5305\u62ec\u60a8\u4e4b\u524d\u521b\u5efa\u7684SUCCESS\u6587\u4ef6\uff0c\u786e\u8ba4\u8be5\u5bb9\u5668\u4f7f\u7528\u4e86\u60a8\u521b\u5efa\u7684\u76f8\u540c\u955c\u50cf\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"root@f7e13d5464d1:\/#\">SUCCESS bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u9000\u51fa\u5bb9\u5668\u7ec8\u7aef\uff1a<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token builtin class-name\">exit<\/span><\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u4f60\u5df2\u7ecf\u6d4b\u8bd5\u4e86\u63a8\u9001\u548c\u62c9\u53d6\u56fe\u50cf\uff0c\u5e76\u5b8c\u6210\u4e86\u8bbe\u7f6e\u4e00\u4e2a\u5b89\u5168\u7684\u6ce8\u518c\u8868\uff0c\u4f60\u53ef\u4ee5\u7528\u6765\u5b58\u50a8\u81ea\u5b9a\u4e49\u56fe\u50cf\u3002<\/p>\n<h2>\u7ed3\u8bba<\/h2>\n<p>\u5728\u672c\u6559\u7a0b\u4e2d\uff0c\u60a8\u53ef\u4ee5\u8bbe\u7f6e\u81ea\u5df1\u7684\u79c1\u6709Docker Registry\u5e76\u5c06Docker\u955c\u50cf\u53d1\u5e03\u5230\u5176\u4e2d\u3002\u5982\u4ecb\u7ecd\u4e2d\u6240\u63d0\u5230\u7684\uff0c\u60a8\u8fd8\u53ef\u4ee5\u4f7f\u7528TravisCI\u6216\u7c7b\u4f3c\u7684CI\u5de5\u5177\uff0c\u76f4\u63a5\u81ea\u52a8\u5c06\u955c\u50cf\u63a8\u9001\u5230\u79c1\u6709\u6ce8\u518c\u8868\u4e2d\u3002<\/p>\n<p>\u901a\u8fc7\u5728\u5de5\u4f5c\u6d41\u7a0b\u4e2d\u5229\u7528Docker\u5bb9\u5668\uff0c\u60a8\u53ef\u4ee5\u786e\u4fdd\u5305\u542b\u4ee3\u7801\u7684\u955c\u50cf\u5728\u4efb\u4f55\u673a\u5668\u4e0a\uff08\u65e0\u8bba\u662f\u5728\u751f\u4ea7\u73af\u5883\u8fd8\u662f\u5728\u5f00\u53d1\u73af\u5883\uff09\u90fd\u5177\u6709\u76f8\u540c\u7684\u884c\u4e3a\u3002\u5173\u4e8e\u7f16\u5199Docker\u6587\u4ef6\u7684\u66f4\u591a\u4fe1\u606f\uff0c\u60a8\u53ef\u4ee5\u53c2\u8003\u5b98\u65b9\u6587\u6863\u4e2d\u7684\u6700\u4f73\u5b9e\u8df5\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u7b80\u4ecb Docker\u6ce8\u518c\u8868\u662f\u4e00\u6b3e\u7ba1\u7406Docker\u5bb9\u5668\u955c\u50cf\u5b58\u50a8\u548c\u53d1\u5e03\u7684\u5e94\u7528\u7a0b\u5e8f\u3002\u6ce8\u518c\u8868\u5c06\u5bb9\u5668\u955c\u50cf\u96c6\u4e2d\u5b58\u50a8\uff0c\u5e76\u7f29\u77ed\u4e86 [&hellip;]<\/p>\n","protected":false},"author":8,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-50709","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u5982\u4f55\u5728Ubuntu 22.04\u4e0a\u8bbe\u7f6e\u79c1\u6709Docker\u6ce8\u518c\u8868 - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/\u5982\u4f55\u5728ubuntu-22-04\u4e0a\u8bbe\u7f6e\u79c1\u6709docker\u6ce8\u518c\u8868\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u5982\u4f55\u5728Ubuntu 22.04\u4e0a\u8bbe\u7f6e\u79c1\u6709Docker\u6ce8\u518c\u8868\" \/>\n<meta property=\"og:description\" content=\"\u7b80\u4ecb Docker\u6ce8\u518c\u8868\u662f\u4e00\u6b3e\u7ba1\u7406Docker\u5bb9\u5668\u955c\u50cf\u5b58\u50a8\u548c\u53d1\u5e03\u7684\u5e94\u7528\u7a0b\u5e8f\u3002\u6ce8\u518c\u8868\u5c06\u5bb9\u5668\u955c\u50cf\u96c6\u4e2d\u5b58\u50a8\uff0c\u5e76\u7f29\u77ed\u4e86 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u5982\u4f55\u5728ubuntu-22-04\u4e0a\u8bbe\u7f6e\u79c1\u6709docker\u6ce8\u518c\u8868\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2022-07-09T10:13:48+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-01-15T05:16:34+00:00\" \/>\n<meta name=\"author\" content=\"\u96c5, \u609f\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u96c5, \u609f\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a6%82%e4%bd%95%e5%9c%a8ubuntu-22-04%e4%b8%8a%e8%ae%be%e7%bd%ae%e7%a7%81%e6%9c%89docker%e6%b3%a8%e5%86%8c%e8%a1%a8\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a6%82%e4%bd%95%e5%9c%a8ubuntu-22-04%e4%b8%8a%e8%ae%be%e7%bd%ae%e7%a7%81%e6%9c%89docker%e6%b3%a8%e5%86%8c%e8%a1%a8\/\",\"name\":\"\u5982\u4f55\u5728Ubuntu 22.04\u4e0a\u8bbe\u7f6e\u79c1\u6709Docker\u6ce8\u518c\u8868 - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2022-07-09T10:13:48+00:00\",\"dateModified\":\"2024-01-15T05:16:34+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/f044a4b7fa4ee2701702942002419ca6\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a6%82%e4%bd%95%e5%9c%a8ubuntu-22-04%e4%b8%8a%e8%ae%be%e7%bd%ae%e7%a7%81%e6%9c%89docker%e6%b3%a8%e5%86%8c%e8%a1%a8\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a6%82%e4%bd%95%e5%9c%a8ubuntu-22-04%e4%b8%8a%e8%ae%be%e7%bd%ae%e7%a7%81%e6%9c%89docker%e6%b3%a8%e5%86%8c%e8%a1%a8\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a6%82%e4%bd%95%e5%9c%a8ubuntu-22-04%e4%b8%8a%e8%ae%be%e7%bd%ae%e7%a7%81%e6%9c%89docker%e6%b3%a8%e5%86%8c%e8%a1%a8\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u5982\u4f55\u5728Ubuntu 22.04\u4e0a\u8bbe\u7f6e\u79c1\u6709Docker\u6ce8\u518c\u8868\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/f044a4b7fa4ee2701702942002419ca6\",\"name\":\"\u96c5, \u609f\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/e71a913e914f1aad1efc391f92084294bac54bc782acd289638580134cf667a6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/e71a913e914f1aad1efc391f92084294bac54bc782acd289638580134cf667a6?s=96&d=mm&r=g\",\"caption\":\"\u96c5, \u609f\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/yawu\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a6%82%e4%bd%95%e5%9c%a8ubuntu-22-04%e4%b8%8a%e8%ae%be%e7%bd%ae%e7%a7%81%e6%9c%89docker%e6%b3%a8%e5%86%8c%e8%a1%a8\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u5982\u4f55\u5728Ubuntu 22.04\u4e0a\u8bbe\u7f6e\u79c1\u6709Docker\u6ce8\u518c\u8868 - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/\u5982\u4f55\u5728ubuntu-22-04\u4e0a\u8bbe\u7f6e\u79c1\u6709docker\u6ce8\u518c\u8868\/","og_locale":"zh_CN","og_type":"article","og_title":"\u5982\u4f55\u5728Ubuntu 22.04\u4e0a\u8bbe\u7f6e\u79c1\u6709Docker\u6ce8\u518c\u8868","og_description":"\u7b80\u4ecb Docker\u6ce8\u518c\u8868\u662f\u4e00\u6b3e\u7ba1\u7406Docker\u5bb9\u5668\u955c\u50cf\u5b58\u50a8\u548c\u53d1\u5e03\u7684\u5e94\u7528\u7a0b\u5e8f\u3002\u6ce8\u518c\u8868\u5c06\u5bb9\u5668\u955c\u50cf\u96c6\u4e2d\u5b58\u50a8\uff0c\u5e76\u7f29\u77ed\u4e86 [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u5982\u4f55\u5728ubuntu-22-04\u4e0a\u8bbe\u7f6e\u79c1\u6709docker\u6ce8\u518c\u8868\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2022-07-09T10:13:48+00:00","article_modified_time":"2024-01-15T05:16:34+00:00","author":"\u96c5, \u609f","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u96c5, \u609f","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"2 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a6%82%e4%bd%95%e5%9c%a8ubuntu-22-04%e4%b8%8a%e8%ae%be%e7%bd%ae%e7%a7%81%e6%9c%89docker%e6%b3%a8%e5%86%8c%e8%a1%a8\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a6%82%e4%bd%95%e5%9c%a8ubuntu-22-04%e4%b8%8a%e8%ae%be%e7%bd%ae%e7%a7%81%e6%9c%89docker%e6%b3%a8%e5%86%8c%e8%a1%a8\/","name":"\u5982\u4f55\u5728Ubuntu 22.04\u4e0a\u8bbe\u7f6e\u79c1\u6709Docker\u6ce8\u518c\u8868 - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2022-07-09T10:13:48+00:00","dateModified":"2024-01-15T05:16:34+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/f044a4b7fa4ee2701702942002419ca6"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a6%82%e4%bd%95%e5%9c%a8ubuntu-22-04%e4%b8%8a%e8%ae%be%e7%bd%ae%e7%a7%81%e6%9c%89docker%e6%b3%a8%e5%86%8c%e8%a1%a8\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e5%a6%82%e4%bd%95%e5%9c%a8ubuntu-22-04%e4%b8%8a%e8%ae%be%e7%bd%ae%e7%a7%81%e6%9c%89docker%e6%b3%a8%e5%86%8c%e8%a1%a8\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a6%82%e4%bd%95%e5%9c%a8ubuntu-22-04%e4%b8%8a%e8%ae%be%e7%bd%ae%e7%a7%81%e6%9c%89docker%e6%b3%a8%e5%86%8c%e8%a1%a8\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u5982\u4f55\u5728Ubuntu 22.04\u4e0a\u8bbe\u7f6e\u79c1\u6709Docker\u6ce8\u518c\u8868"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/f044a4b7fa4ee2701702942002419ca6","name":"\u96c5, \u609f","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/e71a913e914f1aad1efc391f92084294bac54bc782acd289638580134cf667a6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e71a913e914f1aad1efc391f92084294bac54bc782acd289638580134cf667a6?s=96&d=mm&r=g","caption":"\u96c5, \u609f"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/yawu\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a6%82%e4%bd%95%e5%9c%a8ubuntu-22-04%e4%b8%8a%e8%ae%be%e7%bd%ae%e7%a7%81%e6%9c%89docker%e6%b3%a8%e5%86%8c%e8%a1%a8\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/50709","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=50709"}],"version-history":[{"count":3,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/50709\/revisions"}],"predecessor-version":[{"id":59803,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/50709\/revisions\/59803"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=50709"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=50709"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=50709"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}