{"id":60,"date":"2026-07-26T09:00:00","date_gmt":"2026-07-26T01:00:00","guid":{"rendered":"https:\/\/fsdata.site\/?p=60"},"modified":"2026-07-23T23:05:27","modified_gmt":"2026-07-23T15:05:27","slug":"docker-%e5%ae%b9%e5%99%a8%e5%8c%96%e9%83%a8%e7%bd%b2%e5%ae%9e%e6%88%98%ef%bc%9a%e4%bb%8e%e5%ae%89%e8%a3%85%e5%88%b0%e4%b8%8a%e7%ba%bf%e5%85%a8%e6%b5%81%e7%a8%8b","status":"publish","type":"post","link":"https:\/\/fsdata.site\/?p=60","title":{"rendered":"Docker \u5bb9\u5668\u5316\u90e8\u7f72\u5b9e\u6218\uff1a\u4ece\u5b89\u88c5\u5230\u4e0a\u7ebf\u5168\u6d41\u7a0b"},"content":{"rendered":"<h2>\u4e00\u3001\u4e3a\u4ec0\u4e48\u6bcf\u4e2a\u5f00\u53d1\u8005\u90fd\u8be5\u4f1a Docker<\/h2>\n<p>&#8220;\u5728\u6211\u673a\u5668\u4e0a\u80fd\u8dd1&#8221;\u662f\u5f00\u53d1\u5708\u6700\u5927\u7684\u8c0e\u8a00\u3002Docker \u628a\u5e94\u7528\u548c\u5b83\u4f9d\u8d56\u7684\u73af\u5883\u6253\u5305\u6210\u4e00\u4e2a\u4e0d\u53ef\u53d8\u7684\u955c\u50cf\uff0c\u4ece\u5f00\u53d1\u5230\u751f\u4ea7\u73af\u5883\u5b8c\u5168\u4e00\u81f4\u3002\u672c\u6587\u5e26\u4f60\u4ece\u96f6\u8d70\u5b8c\u4e00\u6b21\u5b8c\u6574\u90e8\u7f72\u3002<\/p>\n<h2>\u4e8c\u3001\u5b89\u88c5\u4e0e\u57fa\u7840\u6982\u5ff5<\/h2>\n<ul>\n<li><strong>\u955c\u50cf\uff08Image\uff09<\/strong>\uff1a\u53ea\u8bfb\u6a21\u677f\uff0c\u7c7b\u4f3c\u5b89\u88c5\u5305\u3002<\/li>\n<li><strong>\u5bb9\u5668\uff08Container\uff09<\/strong>\uff1a\u955c\u50cf\u7684\u8fd0\u884c\u5b9e\u4f8b\u3002<\/li>\n<li><strong>\u4ed3\u5e93\uff08Registry\uff09<\/strong>\uff1a\u5b58\u955c\u50cf\u7684\u5730\u65b9\uff0c\u5982 Docker Hub\u3002<\/li>\n<\/ul>\n<pre><code># \u5b89\u88c5\uff08Ubuntu\uff09\nsudo apt update &amp;&amp; sudo apt install -y docker.io docker-compose-plugin\nsudo systemctl enable --now docker\n# \u9a8c\u8bc1\ndocker run hello-world\n<\/code><\/pre>\n<h2>\u4e09\u3001\u5199\u7b2c\u4e00\u4e2a Dockerfile<\/h2>\n<p>\u4ee5 Spring Boot \u5e94\u7528\u4e3a\u4f8b\uff1a<\/p>\n<pre><code>FROM eclipse-temurin:17-jdk\nWORKDIR \/app\nCOPY target\/app.jar app.jar\nEXPOSE 8080\nENTRYPOINT [\"java\",\"-jar\",\"app.jar\"]\n<\/code><\/pre>\n<p>\u591a\u9636\u6bb5\u6784\u5efa\u80fd\u5927\u5e45\u51cf\u5c0f\u4f53\u79ef\uff1a<\/p>\n<pre><code>FROM maven:3.9 AS build\nCOPY . \/src &amp;&amp; RUN mvn -f \/src\/pom.xml package\nFROM eclipse-temurin:17-jre\nCOPY --from=build \/src\/target\/app.jar \/app.jar\nENTRYPOINT [\"java\",\"-jar\",\"\/app.jar\"]\n<\/code><\/pre>\n<h2>\u56db\u3001\u7528 docker-compose \u7f16\u6392\u591a\u670d\u52a1<\/h2>\n<pre><code>version: \"3.8\"\nservices:\n  app:\n    build: .\n    ports: [\"8080:8080\"]\n    depends_on: [mysql, redis]\n  mysql:\n    image: mysql:8\n    environment:\n      MYSQL_ROOT_PASSWORD: pwd123\n    volumes: [\"mysql-data:\/var\/lib\/mysql\"]\n  redis:\n    image: redis:7\nvolumes:\n  mysql-data:\n<\/code><\/pre>\n<p>\u4e00\u6761 <code>docker compose up -d<\/code> \u62c9\u8d77\u6574\u5957\u73af\u5883\u3002<\/p>\n<h2>\u4e94\u3001\u4e0a\u7ebf\u5230\u670d\u52a1\u5668<\/h2>\n<ol>\n<li>\u628a\u955c\u50cf\u63a8\u5230\u4ed3\u5e93\uff1a<code>docker tag app:1.0 registry.com\/app:1.0 &amp;&amp; docker push<\/code><\/li>\n<li>\u670d\u52a1\u5668\u62c9\u53d6\u5e76\u8fd0\u884c\uff1a<code>docker run -d -p 8080:8080 registry.com\/app:1.0<\/code><\/li>\n<li>\u524d\u9762\u6302 Nginx \u505a\u53cd\u5411\u4ee3\u7406\u548c HTTPS\u3002<\/li>\n<\/ol>\n<h2>\u516d\u3001\u5e38\u89c1\u5751<\/h2>\n<ul>\n<li><strong>\u5bb9\u5668\u91cc\u65f6\u95f4\u4e0d\u5bf9<\/strong>\uff1a\u6302\u8f7d <code>\/etc\/localtime<\/code> \u6216\u8bbe TZ \u73af\u5883\u53d8\u91cf\u3002<\/li>\n<li><strong>\u65e5\u5fd7\u5199\u6ee1\u78c1\u76d8<\/strong>\uff1a\u914d <code>--log-opt max-size=10m<\/code>\u3002<\/li>\n<li><strong>\u6570\u636e\u4e0d\u6301\u4e45<\/strong>\uff1a\u52a1\u5fc5\u7528 volume \u6302\u8f7d\uff0c\u522b\u5199\u8fdb\u5bb9\u5668\u5c42\u3002<\/li>\n<\/ul>\n<h2>\u7ed3\u8bed<\/h2>\n<p>Docker \u662f\u73b0\u4ee3\u540e\u7aef\u7684\u57fa\u672c\u529f\u3002\u5148\u4f1a\u7528\uff0c\u518d\u7406\u89e3\u539f\u7406\uff0c\u6162\u6162\u4f60\u5c31\u79bb\u4e0d\u5f00\u5b83\u4e86\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u624b\u628a\u624b\u8bb2\u5b8c Docker \u4e00\u6b21\u5b8c\u6574\u90e8\u7f72\uff1aDockerfile \u591a\u9636\u6bb5\u6784\u5efa\u3001docker-compose \u7f16\u6392\u591a\u670d\u52a1\u3001\u4e0a\u7ebf\u4e0e\u5e38\u89c1\u5751\u3002<\/p>\n","protected":false},"author":2,"featured_media":103,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14],"tags":[],"class_list":["post-60","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-devops"],"_links":{"self":[{"href":"https:\/\/fsdata.site\/index.php?rest_route=\/wp\/v2\/posts\/60","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fsdata.site\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fsdata.site\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fsdata.site\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/fsdata.site\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=60"}],"version-history":[{"count":1,"href":"https:\/\/fsdata.site\/index.php?rest_route=\/wp\/v2\/posts\/60\/revisions"}],"predecessor-version":[{"id":104,"href":"https:\/\/fsdata.site\/index.php?rest_route=\/wp\/v2\/posts\/60\/revisions\/104"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fsdata.site\/index.php?rest_route=\/wp\/v2\/media\/103"}],"wp:attachment":[{"href":"https:\/\/fsdata.site\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=60"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fsdata.site\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=60"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fsdata.site\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=60"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}