{"id":49,"date":"2021-05-23T14:24:08","date_gmt":"2021-05-23T06:24:08","guid":{"rendered":"https:\/\/blog.cauchyschwarz.com\/?p=49"},"modified":"2022-12-06T19:36:03","modified_gmt":"2022-12-06T11:36:03","slug":"docker%e4%bd%bf%e7%94%a8%e7%ac%94%e8%ae%b0","status":"publish","type":"post","link":"https:\/\/blog.cauchyschwarz.com\/?p=49","title":{"rendered":"docker\u7b14\u8bb0"},"content":{"rendered":"\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 ez-toc-wrap-right counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-69e0c3afc3272\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-69e0c3afc3272\" checked aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/blog.cauchyschwarz.com\/?p=49\/#%E5%AE%98%E6%96%B9%E6%95%99%E7%A8%8B\" >\u5b98\u65b9\u6559\u7a0b<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/blog.cauchyschwarz.com\/?p=49\/#%E6%B5%8B%E8%AF%95docker%E7%89%88%E6%9C%AC\" >\u6d4b\u8bd5docker\u7248\u672c<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/blog.cauchyschwarz.com\/?p=49\/#%E5%9F%BA%E7%A1%80%E5%91%BD%E4%BB%A4\" >\u57fa\u7840\u547d\u4ee4<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/blog.cauchyschwarz.com\/?p=49\/#%E6%9E%84%E5%BB%BAdocker%E9%95%9C%E5%83%8F\" >\u6784\u5efadocker\u955c\u50cf<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/blog.cauchyschwarz.com\/?p=49\/#docker%E7%BD%91%E7%BB%9C\" >docker\u7f51\u7edc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/blog.cauchyschwarz.com\/?p=49\/#docker%E9%95%9C%E5%83%8F%E7%9A%84%E5%88%86%E5%8F%91\" >docker\u955c\u50cf\u7684\u5206\u53d1<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/blog.cauchyschwarz.com\/?p=49\/#%E5%B0%86%E8%87%AA%E5%B7%B1%E5%81%9A%E5%A5%BD%E7%9A%84%E9%95%9C%E5%83%8F%E4%B8%8A%E4%BC%A0%E5%88%B0dockerhub%E4%B8%8A%EF%BC%8C%E5%88%86%E4%BA%AB%E7%BB%99%E4%BB%96%E4%BA%BA\" >\u5c06\u81ea\u5df1\u505a\u597d\u7684\u955c\u50cf\u4e0a\u4f20\u5230dockerhub\u4e0a\uff0c\u5206\u4eab\u7ed9\u4ed6\u4eba<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/blog.cauchyschwarz.com\/?p=49\/#%E8%BF%90%E8%A1%8Cdockerhub%E4%B8%8A%E7%9A%84%E9%95%9C%E5%83%8F\" >\u8fd0\u884cdockerhub\u4e0a\u7684\u955c\u50cf<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/blog.cauchyschwarz.com\/?p=49\/#%E4%BD%BF%E7%94%A8k8s%E9%83%A8%E7%BD%B2%E5%A4%9A%E4%B8%AAdocker%E5%AE%B9%E5%99%A8%E5%B9%B6%E8%BF%9B%E8%A1%8C%E7%AE%A1%E7%90%86\" >\u4f7f\u7528k8s\u90e8\u7f72\u591a\u4e2adocker\u5bb9\u5668\u5e76\u8fdb\u884c\u7ba1\u7406<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/blog.cauchyschwarz.com\/?p=49\/#docker%E8%87%AA%E5%8A%A8%E9%87%8D%E5%90%AF\" >docker\u81ea\u52a8\u91cd\u542f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/blog.cauchyschwarz.com\/?p=49\/#docker_run%E4%B8%8Edocker_start%E7%9A%84%E5%8C%BA%E5%88%AB\" >docker run\u4e0edocker start\u7684\u533a\u522b<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/blog.cauchyschwarz.com\/?p=49\/#image%E9%87%8D%E5%91%BD%E5%90%8D\" >image\u91cd\u547d\u540d<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/blog.cauchyschwarz.com\/?p=49\/#container%E9%87%8D%E5%91%BD%E5%90%8D\" >container\u91cd\u547d\u540d<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/blog.cauchyschwarz.com\/?p=49\/#%E6%B8%85%E7%90%86%E6%97%A0%E7%94%A8%E7%9A%84containter%E4%B8%8E%E9%95%9C%E5%83%8F\" >\u6e05\u7406\u65e0\u7528\u7684containter\u4e0e\u955c\u50cf<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/blog.cauchyschwarz.com\/?p=49\/#docker%E9%95%9C%E5%83%8F%E7%9A%84%E8%BF%81%E7%A7%BB\" >docker\u955c\u50cf\u7684\u8fc1\u79fb<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/blog.cauchyschwarz.com\/?p=49\/#docker%E7%A3%81%E7%9B%98%E7%A9%BA%E9%97%B4%E6%B8%85%E7%90%86\" >docker\u78c1\u76d8\u7a7a\u95f4\u6e05\u7406<\/a><\/li><\/ul><\/nav><\/div>\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E5%AE%98%E6%96%B9%E6%95%99%E7%A8%8B\"><\/span><a href=\"https:\/\/docs.docker.com\/get-started\/\">\u5b98\u65b9\u6559\u7a0b<\/a><span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<p>\u7f51\u4e0a\u770b\u5230\u7684\u4e0d\u9519\u7684\u6559\u7a0b\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>https:\/\/segmentfault.com\/a\/1190000007875949<\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E6%B5%8B%E8%AF%95docker%E7%89%88%E6%9C%AC\"><\/span>\u6d4b\u8bd5docker\u7248\u672c<span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">docker --version\ndocker info<\/code><\/pre>\n\n\n\n<p>\u4e3a\u4e86\u514d\u5f97\u6bcf\u6b21\u8dd1docker\u547d\u4ee4\u90fd\u8981\u8f93<code>sudo<\/code>\uff0c\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\u628a\u81ea\u5df1\u6dfb\u52a0\u5230docker\u7ec4\u91cc\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">sudo groupadd docker\nsudo usermod -aG docker $USER\nnewgrp docker  \ndocker run hello-world<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E5%9F%BA%E7%A1%80%E5%91%BD%E4%BB%A4\"><\/span>\u57fa\u7840\u547d\u4ee4<span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5217\u51fa\u5df2\u4e0b\u8f7d\u955c\u50cf<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">  docker image ls<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5217\u51fa\u6b63\u5728\u8fd0\u884c\u7684\u5bb9\u5668<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">  docker ps<\/code><\/pre>\n\n\n\n<p>\u628a\u5df2\u7ecf\u505c\u6b62\u7684\u5bb9\u5668\u4e5f\u5217\u51fa\u6765<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">  docker container ls --all\n  docker ps -a<\/code><\/pre>\n\n\n\n<p>\u5217\u51fa\u6240\u6709\u7684\u5bb9\u5668\uff0c\u4f46\u662f\u53ea\u5217\u51faid\uff0c\u4e0d\u663e\u793a\u5176\u4ed6\u591a\u4f59\u4fe1\u606f<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">  docker ps -a -q<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5220\u9664\u955c\u50cf<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">  docker rmi &lt;image-name\/image-id&gt;<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5220\u9664\u5bb9\u5668<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">  docker rm &lt;contianer-name\/container-id&gt;<\/code><\/pre>\n\n\n\n<p>\u5bb9\u5668\u505c\u6b62\u540e\u5e76\u4e0d\u4f1a\u81ea\u52a8\u9500\u6bc1\uff0c\u8fd8\u9700\u8981\u624b\u52a8\u53bb\u5220\u9664\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/stackoverflow.com\/questions\/21928691\/how-to-continue-a-docker-container-which-has-exited\">\u7ee7\u7eed\u8fd0\u884c\u4e00\u4e2a\u5df2\u7ecf\u505c\u6b62\u7684\u5bb9\u5668<\/a><\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">  docker start &lt;container-id&gt;\n  docker exec -it &lt;container-id&gt; bash<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.scalyr.com\/blog\/how-to-redirect-docker-logs-to-a-single-file#:~:text=Redirect%20Docker%20Logs%20to%20File,file%2C%20use%20a%20redirection%20operator.&amp;text=To%20send%20the%20current%20logs,follow%20with%20the%20redirection%20operator.\">\u67e5\u770b\u5bb9\u5668\u91cc\u7684\u5e94\u7528\u7a0b\u5e8f\u7684\u65e5\u5fd7<\/a><br>\u5728\u6ca1\u6709\u4f7f\u7528syslog\u8fd9\u79cd\u65e5\u5fd7\u51fd\u6570\u6216\u8005\u5176\u4ed6\u65e5\u5fd7\u5de5\u5177\u7684\u60c5\u51b5\u4e0b\uff0c\u7a0b\u5e8f\u7684\u65e5\u5fd7\u57fa\u672c\u4e0a\u90fd\u662f\u8f93\u51fa\u5230stdout\uff0cstderr\u7684\uff0c\u90a3\u4e48\u5728\u4ee5daemon\u6a21\u5f0f\u542f\u52a8\u5bb9\u5668\u540e\uff0c\u5982\u4f55\u67e5\u770b\u5bb9\u5668\u91cc\u5e94\u7528\u7a0b\u5e8f\u7684stdout\u3001stderr\u8f93\u51fa\u5462\uff1f<br>docker\u628a\u5bb9\u5668\u91cc\u5e94\u7528\u7a0b\u5e8f\u7684stdout\uff0cstderr\u4fdd\u5b58\u4e86\u8d77\u6765\uff0c\u53ef\u4ee5\u901a\u8fc7<code>logs<\/code>\u547d\u4ee4\u67e5\u770b\uff1a<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">  docker logs &lt;container-id&gt;<\/code><\/pre>\n\n\n\n<p>\u6216\u8005\u50cf<code>tail -f<\/code>\u4e00\u6837\u67e5\u770b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">  docker logs -f &lt;container-id&gt;\n  docker logs --follow &lt;container-id&gt;<\/code><\/pre>\n\n\n\n<p>\u9664\u4e86\u4f7f\u7528<code>logs<\/code>\u547d\u4ee4\u6765\u67e5\u770b\u65e5\u5fd7\uff0c\u4e5f\u53ef\u4ee5\u8003\u8651\u5728\u6784\u5efadocker\u955c\u50cf\u65f6\uff0c\u5728<strong>CMD<\/strong>\u547d\u4ee4\u91cc\u52a0\u4e0astdout\u3001stderr\u7684\u91cd\u5b9a\u5411\uff0c\u76f4\u63a5\u628a\u8f93\u51fa\u91cd\u5b9a\u5411\u5230\u6307\u5b9a\u6587\u4ef6\u91cc\u9762\u3002<\/p>\n\n\n\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E6%9E%84%E5%BB%BAdocker%E9%95%9C%E5%83%8F\"><\/span>\u6784\u5efadocker\u955c\u50cf<span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<p><a href=\"https:\/\/nodejs.org\/en\/docs\/guides\/nodejs-docker-webapp\/\">nodejs\u5e94\u7528\u5bb9\u5668\u5316\u7684\u6559\u7a0b<\/a><\/p>\n\n\n\n<p>\u5efa\u4e00\u4e2a\u65b0\u76ee\u5f55\uff0c\u5e76\u5728\u5176\u4e2d\u5efa\u7acb\u542b\u6709\u4ee5\u4e0b\u5185\u5bb9\u7684Dockerfile\u6587\u4ef6\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"># Use an official Python runtime as a parent image\nFROM python:2.7-slim\n\n# Set the working directory to \/app\n# \u540e\u9762\u7684CMD\u547d\u4ee4\u4f1a\u628a\u8fd9\u4e2a\u8def\u5f84\u4f5c\u4e3aworking directory\nWORKDIR \/app\n\n# Copy the current directory contents into the container at \/app\n# \u8fd9\u4e2a\u8c8c\u4f3c\u6709\u70b9\u5751\uff0c\u56e0\u4e3a\u5982\u679c\u662f\u547d\u4ee4\u884c\u91cc\u7684cp\u547d\u4ee4\u7684\u8bdd\uff0c\u4f1a\u628a\u6574\u4e2a\u76ee\u5f55\u62f7\u8d1d\u5230\/app\u91cc\u9762\uff0c\u800c\u5bf9\u4e8edocker\u6765\u8bf4\u5219\u662f\u628a\u76ee\u5f55\u91cc\u7684\u5185\u5bb9\u62f7\u8d1d\u5230\/app\u76ee\u5f55\u4e0b\n# \u4e5f\u53ef\u4ee5\u8003\u8651\u4f7f\u7528ADD\u547d\u4ee4\uff0cADD\u547d\u4ee4\u7684\u6e90\u5730\u5740\u53ef\u4ee5\u662f\u4e00\u4e2aurl\nCOPY . \/app\n\n# Install any needed packages specified in requirements.txt\nRUN pip install --trusted-host pypi.python.org -r requirements.txt\n\n# Make port 80 available to the world outside this container\nEXPOSE 80\n\n# Define environment variable\nENV NAME World\n\n# Run app.py when the container launches\n# \u7528\u5b57\u7b26\u4e32\u6570\u7ec4\u7684\u65b9\u5f0f\u63cf\u8ff0docker\u9ed8\u8ba4\u6267\u884c\u7684\u547d\u4ee4\uff0c\u6bd4\u76f4\u63a5\u5199\u8981\u8fd0\u884c\u7684\u547d\u4ee4\u8981\u4fdd\u9669\uff0c\u907f\u514ddocker\u89e3\u91ca\u547d\u4ee4\u65f6\u51fa\u73b0\u610f\u5411\u4e0d\u5230\u7684\u9519\u8bef\nCMD [\"python\", \"app.py\"]<\/code><\/pre>\n\n\n\n<p>\u5efa\u7acb\u6587\u4ef6requirements.txt\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">Flask\nRedis<\/code><\/pre>\n\n\n\n<p>\u5efa\u7acb\u6587\u4ef6app.py\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">from flask import Flask\nfrom redis import Redis, RedisError\nimport os\nimport socket\n\n# Connect to Redis\nredis = Redis(host=\"redis\", db=0, socket_connect_timeout=2, socket_timeout=2)\n\napp = Flask(__name__)\n\n@app.route(\"\/\")\ndef hello():\n    try:\n        visits = redis.incr(\"counter\")\n    except RedisError:\n        visits = \"&lt;i&gt;cannot connect to Redis, counter disabled&lt;\/i&gt;\"\n\n    html = \"&lt;h3&gt;Hello {name}!&lt;\/h3&gt;\" \\\n           \"&lt;b&gt;Hostname:&lt;\/b&gt; {hostname}&lt;br\/&gt;\" \\\n           \"&lt;b&gt;Visits:&lt;\/b&gt; {visits}\"\n    return html.format(name=os.getenv(\"NAME\", \"world\"), hostname=socket.gethostname(), visits=visits)\n\nif __name__ == \"__main__\":\n    app.run(host='0.0.0.0', port=80)<\/code><\/pre>\n\n\n\n<p>\u6267\u884c\u6784\u5efa\u547d\u4ee4\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">docker build --tag=friendlyhello .<\/code><\/pre>\n\n\n\n<p>\u7136\u540e\u67e5\u770b\u521a\u624d\u751f\u6210\u7684docker\u955c\u50cf\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">docker image ls<\/code><\/pre>\n\n\n\n<p>\u8fd0\u884c\u521a\u624d\u751f\u6210\u7684docker\u955c\u50cf\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">docker run -p 4000:80 friendlyhello<\/code><\/pre>\n\n\n\n<p>\u8bbf\u95ee\u672c\u673a\u7aef\u53e34000\u5c31\u53ef\u4ee5\u770b\u5230\u6210\u529f\u8bbf\u95ee\u4e86docker\u5bb9\u5668\u63d0\u4f9b\u7684http\u670d\u52a1\u4e86\u3002<\/p>\n\n\n\n<p>\u4ee5\u5b88\u62a4\u8fdb\u7a0b\u6a21\u5f0f\u8fd0\u884c\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">docker run -d -p 4000:80 friendlyhello<\/code><\/pre>\n\n\n\n<p>\u5982\u679c\u60f3\u8981\u7ed3\u675f\u8fd9\u4e2a\u4ee5\u5b88\u62a4\u8fdb\u7a0b\u6a21\u5f0f\u8fd0\u884c\u7684container\uff0c\u5148\u627e\u5230\u8fd9\u4e2acontainer\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">docker container ls<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                  NAMES\n89bb80480b65        friendlyhello       \"python app.py\"     9 seconds ago       Up 7 seconds        0.0.0.0:4000-&gt;80\/tcp   suspicious_cartwright<\/code><\/pre>\n\n\n\n<p>\u7136\u540e<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">docker container stop 89bb80480b65<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"docker%E7%BD%91%E7%BB%9C\"><\/span>docker\u7f51\u7edc<span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<ul class=\"wp-block-list\">\n<li>[\u5982\u4f55\u5728\u5bb9\u5668\u4e2d\u8bbf\u95ee\u5bbf\u4e3b\u673a\u7684\u7f51\u7edc\uff1f][https:\/\/stackoverflow.com\/a\/31328031\/5357784]<br>\u7b54\u6848\u662f\u4f7f\u7528\u5bbf\u4e3b\u673a\u4e2d\u7684<strong>docker0<\/strong>\u7f51\u53e3\u5373\u53ef\u3002<\/li>\n\n\n\n<li>\u540c\u4e00\u4e2a\u673a\u5668\u4e0a\u4e0d\u540c\u5bb9\u5668\u4e4b\u95f4\u901a\u4fe1<br>\u5982\u679c\u6ca1\u6709\u7528<code>--netowrk<\/code>\u81ea\u5b9a\u4e49\u7f51\u7edc\u7684\u8bdd\uff0c\u90a3\u4e48\u7528<code>docker inspect &lt;container&gt;<\/code>\u91cc\u663e\u793a\u7684ip\u5730\u5740\u901a\u4fe1\u5c31\u53ef\u4ee5\u4e86\u3002<\/li>\n<\/ul>\n\n\n\n<p><a href=\"https:\/\/stackoverflow.com\/questions\/17157721\/how-to-get-a-docker-containers-ip-address-from-the-host\">https:\/\/stackoverflow.com\/questions\/17157721\/how-to-get-a-docker-containers-ip-address-from-the-host<\/a><\/p>\n\n\n\n<p>\u5728\u4f7f\u7528docker bridge\u6a21\u5f0f\u4f5c\u7aef\u53e3\u6620\u5c04\u65f6\uff0c\u6bcf\u4e2a\u6620\u5c04\u7684\u7aef\u53e3\u4f1a\u5360\u7528\u51e0MB\u7ea7\u522b\u7684\u5185\u5b58\uff0c\u56e0\u6b64\u5982\u679c\u8bbe\u7f6e\u4e86\u7ed9\u4e00\u4e2a\u5bb9\u5668\u6620\u5c04\u5927\u91cf\u7aef\u53e3\uff0c\u90a3\u4e48\u53ef\u80fd\u4f1a\u5bfc\u81f4\u8be5\u5bb9\u5668\u5360\u7528\u5927\u91cf\u5185\u5b58\u51fa\u9519\u3002<\/p>\n\n\n\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"docker%E9%95%9C%E5%83%8F%E7%9A%84%E5%88%86%E5%8F%91\"><\/span>docker\u955c\u50cf\u7684\u5206\u53d1<span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E5%B0%86%E8%87%AA%E5%B7%B1%E5%81%9A%E5%A5%BD%E7%9A%84%E9%95%9C%E5%83%8F%E4%B8%8A%E4%BC%A0%E5%88%B0dockerhub%E4%B8%8A%EF%BC%8C%E5%88%86%E4%BA%AB%E7%BB%99%E4%BB%96%E4%BA%BA\"><\/span>\u5c06\u81ea\u5df1\u505a\u597d\u7684\u955c\u50cf\u4e0a\u4f20\u5230dockerhub\u4e0a\uff0c\u5206\u4eab\u7ed9\u4ed6\u4eba<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">docker login\n#docker tag image username\/repository:tag\ndocker tag friendlyhello gordon\/get-started:part2\n#docker push username\/repository:tag\ndocker push gordon\/get-started:part2<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E8%BF%90%E8%A1%8Cdockerhub%E4%B8%8A%E7%9A%84%E9%95%9C%E5%83%8F\"><\/span>\u8fd0\u884cdockerhub\u4e0a\u7684\u955c\u50cf<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">docker run -p 4000:80 username\/repository:tag<\/code><\/pre>\n\n\n\n<p>\u4e0d\u60f3\u5c06\u81ea\u5df1\u7684\u955c\u50cf\u516c\u5f00\u4e0a\u4f20\u5230dockerhub\u4e0a\u7684\u8bdd\uff0c\u90a3\u4e48\u53ef\u4ee5\u8003\u8651\u81ea\u5df1\u642d\u5efaharbor\u8fdb\u884c\u955c\u50cf\u7ba1\u7406\uff0c\u6216\u8005\u901a\u8fc7<code>docker import<\/code>\u3001<code>docker save<\/code>\u7b49\u547d\u4ee4\u4ee5\u6587\u4ef6\u7684\u65b9\u5f0f\u4f20\u8f93\u3002<\/p>\n\n\n\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E4%BD%BF%E7%94%A8k8s%E9%83%A8%E7%BD%B2%E5%A4%9A%E4%B8%AAdocker%E5%AE%B9%E5%99%A8%E5%B9%B6%E8%BF%9B%E8%A1%8C%E7%AE%A1%E7%90%86\"><\/span>\u4f7f\u7528k8s\u90e8\u7f72\u591a\u4e2adocker\u5bb9\u5668\u5e76\u8fdb\u884c\u7ba1\u7406<span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<p>\u672c\u6765\u770b\u4e86\u4e24\u773cdocker service\uff0cdocker swarm\uff0c\u611f\u89c9\u64cd\u4f5c\u7b80\u5355\u3001\u660e\u767d\u6613\u61c2\uff0c\u53ef\u662f\u540e\u6765\u53d1\u73b0\u5728\u5bb9\u5668\u5e94\u7528\u90e8\u7f72\u9886\u57dfk8s\u624d\u662f\u4e3b\u6d41\uff0c\u6240\u4ee5\u5c31\u4e0d\u6253\u7b97\u7ee7\u7eed\u82b1\u65f6\u95f4\u4e86\u89e3docker swarm\u76f8\u5173\u6280\u672f\u4e86\u3002<\/p>\n\n\n\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"docker%E8%87%AA%E5%8A%A8%E9%87%8D%E5%90%AF\"><\/span><a href=\"https:\/\/docs.docker.com\/config\/containers\/start-containers-automatically\/\">docker\u81ea\u52a8\u91cd\u542f<\/a><span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<p>\u901a\u8fc7restart\u53c2\u6570\u53ef\u4ee5\u8bbe\u7f6edocker\u7684\u91cd\u542f\u7b56\u7565\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>no<\/code><br>\u9ed8\u8ba4\u4e0d\u91cd\u542f<\/li>\n\n\n\n<li><code>on-failure<\/code><br>docker\u8fdb\u7a0b\u4ee5\u975e0\u7684\u9519\u8bef\u7801\u9000\u51fa\u65f6\u91cd\u542f<\/li>\n\n\n\n<li><code>always<\/code><br>\u603b\u662f\u91cd\u542f\u3002\u5982\u679c\u662f\u624b\u52a8\u505c\u6b62\u7684\u5bb9\u5668\uff0c\u90a3\u4e48\u9700\u8981\u91cd\u542fdockerd\u540e\u624d\u4f1a\u81ea\u52a8\u91cd\u542f\u6216\u8005\u624b\u52a8\u91cd\u542f\u3002<\/li>\n\n\n\n<li><code>unless-stopped<\/code><br>\u4e0e<code>alwyas<\/code>\u7c7b\u4f3c\uff0c\u4f46\u662f\u624b\u52a8\u505c\u6b62\u540e\u5373\u4f7f\u91cd\u542f\u4e86dockerd\u4e5f\u4e0d\u4f1a\u81ea\u52a8\u91cd\u542f\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u4f8b\u5b50\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">docker run -d --restart unless-stopped redis<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"docker_run%E4%B8%8Edocker_start%E7%9A%84%E5%8C%BA%E5%88%AB\"><\/span><a href=\"https:\/\/stackoverflow.com\/questions\/34782678\/difference-between-running-and-starting-a-docker-container\">docker run\u4e0edocker start\u7684\u533a\u522b<\/a><span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<p>\u5982\u8bc4\u8bba\u4e2d\u6240\u8bf4\uff0c\u53ef\u7406\u89e3\u4e3arun = create + start\u3002<\/p>\n\n\n\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"image%E9%87%8D%E5%91%BD%E5%90%8D\"><\/span><a href=\"https:\/\/docs.docker.com\/engine\/reference\/commandline\/tag\/\">image\u91cd\u547d\u540d<\/a><span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">docker tag 0e5574283393 fedora\/httpd:version1.0<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"container%E9%87%8D%E5%91%BD%E5%90%8D\"><\/span><a href=\"https:\/\/docs.docker.com\/engine\/reference\/commandline\/rename\/\">container\u91cd\u547d\u540d<\/a><span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">docker rename CONTAINER NEW_NAME<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E6%B8%85%E7%90%86%E6%97%A0%E7%94%A8%E7%9A%84containter%E4%B8%8E%E9%95%9C%E5%83%8F\"><\/span><a href=\"https:\/\/docs.docker.com\/engine\/reference\/commandline\/system_prune\/\">\u6e05\u7406\u65e0\u7528\u7684containter\u4e0e\u955c\u50cf<\/a><span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">docker system prune [OPTIONS]<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"docker%E9%95%9C%E5%83%8F%E7%9A%84%E8%BF%81%E7%A7%BB\"><\/span>docker\u955c\u50cf\u7684\u8fc1\u79fb<span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u53ef\u4ee5\u4f7f\u7528docker hub\uff0c\u5c31\u50cfgit\u90a3\u6837\u901a\u8fc7\u4e00\u4e2a\u4ed3\u5e93\u6765\u540c\u6b65\u955c\u50cf\uff1b<\/li>\n\n\n\n<li>\u628a\u955c\u50cf\u5bfc\u51fa\u4e3a\u6587\u4ef6\u7136\u540e\u518d\u8fdb\u884c\u8fc1\u79fb\uff1b<br><a href=\"https:\/\/pspdfkit.com\/blog\/2019\/docker-import-export-vs-load-save\/#:~:text=load%20works%20with%20Docker%20images.&amp;text=Use%20this%20command%20if%20you%20want%20to%20share%20or%20back,layer%20for%20a%20new%20image.\">\u4f7f\u7528<code>docker import\/export<\/code>\u6765\u8fc1\u79fb\u955c\u50cf\uff0c\u4f7f\u7528<code>docker save\/load<\/code>\u6765\u8fc1\u79fb\u5bb9\u5668<\/a>;<\/li>\n<\/ol>\n\n\n\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"docker%E7%A3%81%E7%9B%98%E7%A9%BA%E9%97%B4%E6%B8%85%E7%90%86\"><\/span>docker\u78c1\u76d8\u7a7a\u95f4\u6e05\u7406<span class=\"ez-toc-section-end\"><\/span><\/h1>\n\n\n\n<ul class=\"wp-block-list\">\n<li>https:\/\/medium.com\/better-programming\/docker-tips-clean-up-your-local-machine-35f370a01a78<\/li>\n<\/ul>\n\n\n\n<p>\u67e5\u770b\u5360\u7528\u7684\u78c1\u76d8\u7a7a\u95f4<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">docker system df<\/code><\/pre>\n\n\n\n<p>\u6e05\u7406\u78c1\u76d8\u7a7a\u95f4<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">docker system prune<\/code><\/pre>\n\n\n\n<p>\u4e0evolume\u6709\u5173\u7684\u547d\u4ee4\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">docker inspect [volume]\ndocker volume prune\ndocker volume ls<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>https:\/\/docs.docker.com\/engine\/reference\/commandline\/volume_prune\/<\/li>\n<\/ul>\n\n\n\n<p>\u5173\u4e8evolume\u7684\u4f7f\u7528\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>https:\/\/www.jianshu.com\/p\/ef0f24fd0674<\/li>\n\n\n\n<li>https:\/\/docs.docker.com\/storage\/volumes\/<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5b98\u65b9\u6559\u7a0b \u7f51\u4e0a\u770b\u5230\u7684\u4e0d\u9519\u7684\u6559\u7a0b\uff1a \u6d4b\u8bd5docker\u7248\u672c \u4e3a\u4e86\u514d\u5f97\u6bcf\u6b21\u8dd1docker\u547d\u4ee4\u90fd\u8981\u8f93sudo\uff0c\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\u628a\u81ea\u5df1\u6dfb\u52a0\u5230docker\u7ec4\u91cc\uff1a \u57fa\u7840\u547d\u4ee4 \u628a\u5df2\u7ecf\u505c\u6b62\u7684\u5bb9\u5668\u4e5f\u5217\u51fa\u6765 \u5217\u51fa\u6240\u6709\u7684\u5bb9\u5668\uff0c\u4f46&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[14],"class_list":["post-49","post","type-post","status-publish","format-standard","hentry","category-10","tag-docker"],"_links":{"self":[{"href":"https:\/\/blog.cauchyschwarz.com\/index.php?rest_route=\/wp\/v2\/posts\/49","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.cauchyschwarz.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.cauchyschwarz.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.cauchyschwarz.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.cauchyschwarz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=49"}],"version-history":[{"count":4,"href":"https:\/\/blog.cauchyschwarz.com\/index.php?rest_route=\/wp\/v2\/posts\/49\/revisions"}],"predecessor-version":[{"id":1703,"href":"https:\/\/blog.cauchyschwarz.com\/index.php?rest_route=\/wp\/v2\/posts\/49\/revisions\/1703"}],"wp:attachment":[{"href":"https:\/\/blog.cauchyschwarz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=49"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.cauchyschwarz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=49"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.cauchyschwarz.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=49"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}