{"id":41,"date":"2019-02-10T17:14:32","date_gmt":"2019-02-10T09:14:32","guid":{"rendered":"http:\/\/b.yesiyu.top\/?p=41"},"modified":"2019-02-10T17:14:32","modified_gmt":"2019-02-10T09:14:32","slug":"docker-%e5%ae%89%e8%a3%85-nginx","status":"publish","type":"post","link":"https:\/\/b.yesiyu.top\/?p=41","title":{"rendered":"Docker \u5b89\u88c5 Nginx"},"content":{"rendered":"<h3>\u65b9\u6cd5\u4e00\u3001docker pull nginx(\u63a8\u8350)<\/h3>\n<p>\u67e5\u627e\u00a0<a href=\"https:\/\/hub.docker.com\/r\/library\/nginx\/\" target=\"_blank\" rel=\"noopener\">Docker\u00a0Hub<\/a>\u00a0\u4e0a\u7684 nginx \u955c\u50cf<\/p>\n<pre class=\"prettyprint prettyprinted\"><span class=\"pln\">runoob@runoob<\/span><span class=\"pun\">:~\/<\/span><span class=\"pln\">nginx$ docker search nginx\r\nNAME                      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED\r\nnginx                     <\/span><span class=\"typ\">Official<\/span><span class=\"pln\"> build of <\/span><span class=\"typ\">Nginx<\/span><span class=\"pun\">.<\/span>                        <span class=\"lit\">3260<\/span>      <span class=\"pun\">[<\/span><span class=\"pln\">OK<\/span><span class=\"pun\">]<\/span><span class=\"pln\">       \r\njwilder<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">nginx<\/span><span class=\"pun\">-<\/span><span class=\"pln\">proxy       <\/span><span class=\"typ\">Automated<\/span> <span class=\"typ\">Nginx<\/span><span class=\"pln\"> reverse proxy <\/span><span class=\"kwd\">for<\/span><span class=\"pln\"> docker c<\/span><span class=\"pun\">...<\/span>   <span class=\"lit\">674<\/span>                  <span class=\"pun\">[<\/span><span class=\"pln\">OK<\/span><span class=\"pun\">]<\/span><span class=\"pln\">\r\nricharvey<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">nginx<\/span><span class=\"pun\">-<\/span><span class=\"pln\">php<\/span><span class=\"pun\">-<\/span><span class=\"pln\">fpm   <\/span><span class=\"typ\">Container<\/span><span class=\"pln\"> running <\/span><span class=\"typ\">Nginx<\/span> <span class=\"pun\">+<\/span><span class=\"pln\"> PHP<\/span><span class=\"pun\">-<\/span><span class=\"pln\">FPM capable <\/span><span class=\"pun\">...<\/span>   <span class=\"lit\">207<\/span>                  <span class=\"pun\">[<\/span><span class=\"pln\">OK<\/span><span class=\"pun\">]<\/span><span class=\"pln\">\r\nmillion12<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">nginx<\/span><span class=\"pun\">-<\/span><span class=\"pln\">php       <\/span><span class=\"typ\">Nginx<\/span> <span class=\"pun\">+<\/span><span class=\"pln\"> PHP<\/span><span class=\"pun\">-<\/span><span class=\"pln\">FPM <\/span><span class=\"lit\">5.5<\/span><span class=\"pun\">,<\/span> <span class=\"lit\">5.6<\/span><span class=\"pun\">,<\/span> <span class=\"lit\">7.0<\/span> <span class=\"pun\">(<\/span><span class=\"pln\">NG<\/span><span class=\"pun\">),<\/span> <span class=\"typ\">CentOS<\/span><span class=\"pun\">...<\/span>   <span class=\"lit\">67<\/span>                   <span class=\"pun\">[<\/span><span class=\"pln\">OK<\/span><span class=\"pun\">]<\/span><span class=\"pln\">\r\nmaxexcloo<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">nginx<\/span><span class=\"pun\">-<\/span><span class=\"pln\">php       <\/span><span class=\"typ\">Docker<\/span><span class=\"pln\"> framework container <\/span><span class=\"kwd\">with<\/span> <span class=\"typ\">Nginx<\/span> <span class=\"kwd\">and<\/span> <span class=\"pun\">...<\/span>   <span class=\"lit\">57<\/span>                   <span class=\"pun\">[<\/span><span class=\"pln\">OK<\/span><span class=\"pun\">]<\/span><span class=\"pln\">\r\nwebdevops<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">php<\/span><span class=\"pun\">-<\/span><span class=\"pln\">nginx       <\/span><span class=\"typ\">Nginx<\/span> <span class=\"kwd\">with<\/span><span class=\"pln\"> PHP<\/span><span class=\"pun\">-<\/span><span class=\"pln\">FPM                              <\/span><span class=\"lit\">39<\/span>                   <span class=\"pun\">[<\/span><span class=\"pln\">OK<\/span><span class=\"pun\">]<\/span><span class=\"pln\">\r\nh3nrik<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">nginx<\/span><span class=\"pun\">-<\/span><span class=\"pln\">ldap         NGINX web server <\/span><span class=\"kwd\">with<\/span><span class=\"pln\"> LDAP<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">AD<\/span><span class=\"pun\">,<\/span><span class=\"pln\"> SSL <\/span><span class=\"kwd\">and<\/span><span class=\"pln\"> pro<\/span><span class=\"pun\">...<\/span>   <span class=\"lit\">27<\/span>                   <span class=\"pun\">[<\/span><span class=\"pln\">OK<\/span><span class=\"pun\">]<\/span><span class=\"pln\">\r\nbitnami<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">nginx             <\/span><span class=\"typ\">Bitnami<\/span><span class=\"pln\"> nginx <\/span><span class=\"typ\">Docker<\/span> <span class=\"typ\">Image<\/span>                      <span class=\"lit\">19<\/span>                   <span class=\"pun\">[<\/span><span class=\"pln\">OK<\/span><span class=\"pun\">]<\/span><span class=\"pln\">\r\nmaxexcloo<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">nginx           <\/span><span class=\"typ\">Docker<\/span><span class=\"pln\"> framework container <\/span><span class=\"kwd\">with<\/span> <span class=\"typ\">Nginx<\/span><span class=\"pln\"> inst<\/span><span class=\"pun\">...<\/span>   <span class=\"lit\">7<\/span>                    <span class=\"pun\">[<\/span><span class=\"pln\">OK<\/span><span class=\"pun\">]<\/span>\r\n<span class=\"pun\">...<\/span><\/pre>\n<p>\u8fd9\u91cc\u6211\u4eec\u62c9\u53d6\u5b98\u65b9\u7684\u955c\u50cf<\/p>\n<pre class=\"prettyprint prettyprinted\"><span class=\"pln\">runoob@runoob<\/span><span class=\"pun\">:~\/<\/span><span class=\"pln\">nginx$ docker pull nginx<\/span><\/pre>\n<p>\u7b49\u5f85\u4e0b\u8f7d\u5b8c\u6210\u540e\uff0c\u6211\u4eec\u5c31\u53ef\u4ee5\u5728\u672c\u5730\u955c\u50cf\u5217\u8868\u91cc\u67e5\u5230 REPOSITORY \u4e3a nginx \u7684\u955c\u50cf\u3002<\/p>\n<pre class=\"prettyprint prettyprinted\"><span class=\"pln\">runoob@runoob<\/span><span class=\"pun\">:~\/<\/span><span class=\"pln\">nginx$ docker images nginx\r\nREPOSITORY          TAG                 IMAGE ID            CREATED             SIZE\r\nnginx               latest              <\/span><span class=\"lit\">555bbd91e13c<\/span>        <span class=\"lit\">3<\/span><span class=\"pln\"> days ago          <\/span><span class=\"lit\">182.8<\/span><span class=\"pln\"> MB<\/span><\/pre>\n<h3>\u65b9\u6cd5\u4e8c\u3001\u901a\u8fc7 Dockerfile \u6784\u5efa(\u4e0d\u63a8\u8350)<\/h3>\n<p><strong>\u521b\u5efa Dockerfile<\/strong><\/p>\n<p>\u9996\u5148\uff0c\u521b\u5efa\u76ee\u5f55 nginx, \u7528\u4e8e\u5b58\u653e\u540e\u9762\u7684\u76f8\u5173\u4e1c\u897f\u3002<\/p>\n<pre class=\"prettyprint prettyprinted\"><span class=\"pln\">runoob@runoob<\/span><span class=\"pun\">:~<\/span><span class=\"pln\">$ mkdir <\/span><span class=\"pun\">-<\/span><span class=\"pln\">p <\/span><span class=\"pun\">~<\/span><span class=\"str\">\/nginx\/<\/span><span class=\"pln\">www <\/span><span class=\"pun\">~<\/span><span class=\"str\">\/nginx\/<\/span><span class=\"pln\">logs <\/span><span class=\"pun\">~<\/span><span class=\"str\">\/nginx\/<\/span><span class=\"pln\">conf<\/span><\/pre>\n<p><strong>www<\/strong>: \u76ee\u5f55\u5c06\u6620\u5c04\u4e3a nginx \u5bb9\u5668\u914d\u7f6e\u7684\u865a\u62df\u76ee\u5f55\u3002<\/p>\n<p><strong>logs<\/strong>: \u76ee\u5f55\u5c06\u6620\u5c04\u4e3a nginx \u5bb9\u5668\u7684\u65e5\u5fd7\u76ee\u5f55\u3002<\/p>\n<p><strong>conf<\/strong>: \u76ee\u5f55\u91cc\u7684\u914d\u7f6e\u6587\u4ef6\u5c06\u6620\u5c04\u4e3a nginx \u5bb9\u5668\u7684\u914d\u7f6e\u6587\u4ef6\u3002<\/p>\n<p>\u8fdb\u5165\u521b\u5efa\u7684 nginx \u76ee\u5f55\uff0c\u521b\u5efa Dockerfile \u6587\u4ef6\uff0c\u5185\u5bb9\u5982\u4e0b\uff1a<\/p>\n<pre class=\"prettyprint prettyprinted\"><span class=\"pln\">FROM debian<\/span><span class=\"pun\">:<\/span><span class=\"pln\">stretch<\/span><span class=\"pun\">-<\/span><span class=\"pln\">slim\r\n\r\nLABEL maintainer<\/span><span class=\"pun\">=<\/span><span class=\"str\">\"NGINX Docker Maintainers &lt;docker-maint@nginx.com&gt;\"<\/span><span class=\"pln\">\r\n\r\nENV NGINX_VERSION <\/span><span class=\"lit\">1.14<\/span><span class=\"pun\">.<\/span><span class=\"lit\">0<\/span><span class=\"pun\">-<\/span><span class=\"lit\">1<\/span><span class=\"pun\">~<\/span><span class=\"pln\">stretch\r\nENV NJS_VERSION   <\/span><span class=\"lit\">1.14<\/span><span class=\"pun\">.<\/span><span class=\"lit\">0.0<\/span><span class=\"pun\">.<\/span><span class=\"lit\">2.0<\/span><span class=\"pun\">-<\/span><span class=\"lit\">1<\/span><span class=\"pun\">~<\/span><span class=\"pln\">stretch\r\n\r\nRUN <\/span><span class=\"kwd\">set<\/span> <span class=\"pun\">-<\/span><span class=\"pln\">x \\\r\n\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"pun\">&amp;&amp;<\/span><span class=\"pln\"> apt<\/span><span class=\"pun\">-<\/span><span class=\"kwd\">get<\/span><span class=\"pln\"> update \\\r\n\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"pun\">&amp;&amp;<\/span><span class=\"pln\"> apt<\/span><span class=\"pun\">-<\/span><span class=\"kwd\">get<\/span><span class=\"pln\"> install <\/span><span class=\"pun\">--<\/span><span class=\"kwd\">no<\/span><span class=\"pun\">-<\/span><span class=\"pln\">install<\/span><span class=\"pun\">-<\/span><span class=\"pln\">recommends <\/span><span class=\"pun\">--<\/span><span class=\"kwd\">no<\/span><span class=\"pun\">-<\/span><span class=\"pln\">install<\/span><span class=\"pun\">-<\/span><span class=\"pln\">suggests <\/span><span class=\"pun\">-<\/span><span class=\"pln\">y gnupg1 apt<\/span><span class=\"pun\">-<\/span><span class=\"pln\">transport<\/span><span class=\"pun\">-<\/span><span class=\"pln\">https ca<\/span><span class=\"pun\">-<\/span><span class=\"pln\">certificates \\\r\n\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"pun\">&amp;&amp;<\/span><span class=\"pln\"> \\\r\n\u00a0\u00a0\u00a0\u00a0NGINX_GPGKEY<\/span><span class=\"pun\">=<\/span><span class=\"lit\">573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62<\/span><span class=\"pun\">;<\/span><span class=\"pln\"> \\\r\n\u00a0\u00a0\u00a0\u00a0found<\/span><span class=\"pun\">=<\/span><span class=\"str\">''<\/span><span class=\"pun\">;<\/span><span class=\"pln\"> \\\r\n\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"kwd\">for<\/span><span class=\"pln\"> server <\/span><span class=\"kwd\">in<\/span><span class=\"pln\"> \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0ha<\/span><span class=\"pun\">.<\/span><span class=\"pln\">pool<\/span><span class=\"pun\">.<\/span><span class=\"pln\">sks<\/span><span class=\"pun\">-<\/span><span class=\"pln\">keyservers<\/span><span class=\"pun\">.<\/span><span class=\"pln\">net \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0hkp<\/span><span class=\"pun\">:<\/span><span class=\"com\">\/\/keyserver.ubuntu.com:80 \\<\/span><span class=\"pln\">\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0hkp<\/span><span class=\"pun\">:<\/span><span class=\"com\">\/\/p80.pool.sks-keyservers.net:80 \\<\/span><span class=\"pln\">\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0pgp<\/span><span class=\"pun\">.<\/span><span class=\"pln\">mit<\/span><span class=\"pun\">.<\/span><span class=\"pln\">edu \\\r\n\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"pun\">;<\/span> <span class=\"kwd\">do<\/span><span class=\"pln\"> \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo <\/span><span class=\"str\">\"Fetching GPG key $NGINX_GPGKEY from $server\"<\/span><span class=\"pun\">;<\/span><span class=\"pln\"> \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0apt<\/span><span class=\"pun\">-<\/span><span class=\"pln\">key adv <\/span><span class=\"pun\">--<\/span><span class=\"pln\">keyserver <\/span><span class=\"str\">\"$server\"<\/span> <span class=\"pun\">--<\/span><span class=\"pln\">keyserver<\/span><span class=\"pun\">-<\/span><span class=\"pln\">options timeout<\/span><span class=\"pun\">=<\/span><span class=\"lit\">10<\/span> <span class=\"pun\">--<\/span><span class=\"pln\">recv<\/span><span class=\"pun\">-<\/span><span class=\"pln\">keys <\/span><span class=\"str\">\"$NGINX_GPGKEY\"<\/span> <span class=\"pun\">&amp;&amp;<\/span><span class=\"pln\"> found<\/span><span class=\"pun\">=<\/span><span class=\"pln\">yes <\/span><span class=\"pun\">&amp;&amp;<\/span> <span class=\"kwd\">break<\/span><span class=\"pun\">;<\/span><span class=\"pln\"> \\\r\n\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"kwd\">done<\/span><span class=\"pun\">;<\/span><span class=\"pln\"> \\\r\n\u00a0\u00a0\u00a0\u00a0test <\/span><span class=\"pun\">-<\/span><span class=\"pln\">z <\/span><span class=\"str\">\"$found\"<\/span> <span class=\"pun\">&amp;&amp;<\/span><span class=\"pln\"> echo <\/span><span class=\"pun\">&gt;&amp;<\/span><span class=\"lit\">2<\/span> <span class=\"str\">\"error: failed to fetch GPG key $NGINX_GPGKEY\"<\/span> <span class=\"pun\">&amp;&amp;<\/span> <span class=\"kwd\">exit<\/span> <span class=\"lit\">1<\/span><span class=\"pun\">;<\/span><span class=\"pln\"> \\\r\n\u00a0\u00a0\u00a0\u00a0apt<\/span><span class=\"pun\">-<\/span><span class=\"kwd\">get<\/span><span class=\"pln\"> remove <\/span><span class=\"pun\">--<\/span><span class=\"pln\">purge <\/span><span class=\"pun\">--<\/span><span class=\"kwd\">auto<\/span><span class=\"pun\">-<\/span><span class=\"pln\">remove <\/span><span class=\"pun\">-<\/span><span class=\"pln\">y gnupg1 <\/span><span class=\"pun\">&amp;&amp;<\/span><span class=\"pln\"> rm <\/span><span class=\"pun\">-<\/span><span class=\"pln\">rf <\/span><span class=\"pun\">\/<\/span><span class=\"kwd\">var<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">lib<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">apt<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">lists<\/span><span class=\"com\">\/* \\\r\n\u00a0\u00a0\u00a0\u00a0&amp;&amp; dpkgArch=\"$(dpkg --print-architecture)\" \\\r\n\u00a0\u00a0\u00a0\u00a0&amp;&amp; nginxPackages=\" \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0nginx=${NGINX_VERSION} \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0nginx-module-xslt=${NGINX_VERSION} \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0nginx-module-geoip=${NGINX_VERSION} \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0nginx-module-image-filter=${NGINX_VERSION} \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0nginx-module-njs=${NJS_VERSION} \\\r\n\u00a0\u00a0\u00a0\u00a0\" \\\r\n\u00a0\u00a0\u00a0\u00a0&amp;&amp; case \"$dpkgArch\" in \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0amd64|i386) \\\r\n# arches officialy built by upstream\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"deb https:\/\/nginx.org\/packages\/debian\/ stretch nginx\" &gt;&gt; \/etc\/apt\/sources.list.d\/nginx.list \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&amp;&amp; apt-get update \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0;; \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0*) \\\r\n# we're on an architecture upstream doesn't officially build for\r\n# let's build binaries from the published source packages\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"deb-src https:\/\/nginx.org\/packages\/debian\/ stretch nginx\" &gt;&gt; \/etc\/apt\/sources.list.d\/nginx.list \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\\\r\n# new directory for storing sources and .deb files\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&amp;&amp; tempDir=\"$(mktemp -d)\" \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&amp;&amp; chmod 777 \"$tempDir\" \\\r\n# (777 to ensure APT's \"_apt\" user can access it too)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\\\r\n# save list of currently-installed packages so build dependencies can be cleanly removed later\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&amp;&amp; savedAptMark=\"$(apt-mark showmanual)\" \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\\\r\n# build .deb files from upstream's source packages (which are verified by apt-get)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&amp;&amp; apt-get update \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&amp;&amp; apt-get build-dep -y $nginxPackages \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&amp;&amp; ( \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0cd \"$tempDir\" \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&amp;&amp; DEB_BUILD_OPTIONS=\"nocheck parallel=$(nproc)\" \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0apt-get source --compile $nginxPackages \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0) \\\r\n# we don't remove APT lists here because they get re-downloaded and removed later\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\\\r\n# reset apt-mark's \"manual\" list so that \"purge --auto-remove\" will remove all build dependencies\r\n# (which is done after we install the built packages so we don't have to redownload any overlapping dependencies)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&amp;&amp; apt-mark showmanual | xargs apt-mark auto &gt; \/dev\/null \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&amp;&amp; { [ -z \"$savedAptMark\" ] || apt-mark manual $savedAptMark; } \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\\\r\n# create a temporary local APT repo to install from (so that dependency resolution can be handled by APT, as it should be)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&amp;&amp; ls -lAFh \"$tempDir\" \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&amp;&amp; ( cd \"$tempDir\" &amp;&amp; dpkg-scanpackages . &gt; Packages ) \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&amp;&amp; grep '^Package: ' \"$tempDir\/Packages\" \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&amp;&amp; echo \"deb [ trusted=yes ] file:\/\/$tempDir .\/\" &gt; \/etc\/apt\/sources.list.d\/temp.list \\\r\n# work around the following APT issue by using \"Acquire::GzipIndexes=false\" (overriding \"\/etc\/apt\/apt.conf.d\/docker-gzip-indexes\")\r\n#   Could not open file \/var\/lib\/apt\/lists\/partial\/_tmp_tmp.ODWljpQfkE_._Packages - open (13: Permission denied)\r\n#   ...\r\n#   E: Failed to fetch store:\/var\/lib\/apt\/lists\/partial\/_tmp_tmp.ODWljpQfkE_._Packages  Could not open file \/var\/lib\/apt\/lists\/partial\/_tmp_tmp.ODWljpQfkE_._Packages - open (13: Permission denied)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&amp;&amp; apt-get -o Acquire::GzipIndexes=false update \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0;; \\\r\n\u00a0\u00a0\u00a0\u00a0esac \\\r\n\u00a0\u00a0\u00a0\u00a0\\\r\n\u00a0\u00a0\u00a0\u00a0&amp;&amp; apt-get install --no-install-recommends --no-install-suggests -y \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$nginxPackages \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0gettext-base \\\r\n\u00a0\u00a0\u00a0\u00a0&amp;&amp; apt-get remove --purge --auto-remove -y apt-transport-https ca-certificates &amp;&amp; rm -rf \/var\/lib\/apt\/lists\/* \/etc\/apt\/sources.list.d\/nginx.list \\\r\n\u00a0\u00a0\u00a0\u00a0\\\r\n# if we have leftovers from building, let's purge them (including extra, unnecessary build deps)\r\n\u00a0\u00a0\u00a0\u00a0&amp;&amp; if [ -n \"$tempDir\" ]; then \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0apt-get purge -y --auto-remove \\\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&amp;&amp; rm -rf \"$tempDir\" \/etc\/apt\/sources.list.d\/temp.list; \\\r\n\u00a0\u00a0\u00a0\u00a0fi\r\n\r\n# forward request and error logs to docker log collector\r\nRUN ln -sf \/dev\/stdout \/var\/log\/nginx\/access.log \\\r\n\u00a0\u00a0\u00a0\u00a0&amp;&amp; ln -sf \/dev\/stderr \/var\/log\/nginx\/error.log\r\n\r\nEXPOSE 80\r\n\r\nSTOPSIGNAL SIGTERM\r\n\r\nCMD [\"nginx\", \"-g\", \"daemon off;\"]<\/span><\/pre>\n<p>\u901a\u8fc7 Dockerfile \u521b\u5efa\u4e00\u4e2a\u955c\u50cf\uff0c\u66ff\u6362\u6210\u4f60\u81ea\u5df1\u7684\u540d\u5b57\u3002<\/p>\n<pre class=\"prettyprint prettyprinted\"><span class=\"pln\">docker build <\/span><span class=\"pun\">-<\/span><span class=\"pln\">t nginx <\/span><span class=\"pun\">.<\/span><\/pre>\n<p>\u521b\u5efa\u5b8c\u6210\u540e\uff0c\u6211\u4eec\u53ef\u4ee5\u5728\u672c\u5730\u7684\u955c\u50cf\u5217\u8868\u91cc\u67e5\u627e\u5230\u521a\u521a\u521b\u5efa\u7684\u955c\u50cf<\/p>\n<pre class=\"prettyprint prettyprinted\"><span class=\"pln\">runoob@runoob<\/span><span class=\"pun\">:~\/<\/span><span class=\"pln\">nginx$ docker images nginx\r\nREPOSITORY          TAG                 IMAGE ID            CREATED             SIZE\r\nnginx               latest              <\/span><span class=\"lit\">555bbd91e13c<\/span>        <span class=\"lit\">3<\/span><span class=\"pln\"> days ago          <\/span><span class=\"lit\">182.8<\/span><span class=\"pln\"> MB<\/span><\/pre>\n<hr \/>\n<h2>\u4f7f\u7528 nginx \u955c\u50cf<\/h2>\n<h3>\u8fd0\u884c\u5bb9\u5668<\/h3>\n<pre class=\"prettyprint prettyprinted\"><span class=\"pln\">runoob@runoob<\/span><span class=\"pun\">:~<\/span><span class=\"str\">\/nginx$ docker run -p 80:80 --name mynginx -v $PWD\/<\/span><span class=\"pln\">www<\/span><span class=\"pun\">:<\/span><span class=\"str\">\/www -v $PWD\/<\/span><span class=\"pln\">conf<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">nginx<\/span><span class=\"pun\">.<\/span><span class=\"pln\">conf<\/span><span class=\"pun\">:<\/span><span class=\"str\">\/etc\/<\/span><span class=\"pln\">nginx<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">nginx<\/span><span class=\"pun\">.<\/span><span class=\"pln\">conf <\/span><span class=\"pun\">-<\/span><span class=\"pln\">v $PWD<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">logs<\/span><span class=\"pun\">:\/<\/span><span class=\"pln\">wwwlogs  <\/span><span class=\"pun\">-<\/span><span class=\"pln\">d nginx  \r\n<\/span><span class=\"lit\">45c89fab0bf9ad643bc7ab571f3ccd65379b844498f54a7c8a4e7ca1dc3a2c1e<\/span><span class=\"pln\">\r\nrunoob@runoob<\/span><span class=\"pun\">:~\/<\/span><span class=\"pln\">nginx$<\/span><\/pre>\n<p>\u547d\u4ee4\u8bf4\u660e\uff1a<\/p>\n<ul>\n<li><strong>-p 80:80\uff1a<\/strong>\u5c06\u5bb9\u5668\u768480\u7aef\u53e3\u6620\u5c04\u5230\u4e3b\u673a\u768480\u7aef\u53e3<\/li>\n<li><strong>&#8211;name mynginx\uff1a<\/strong>\u5c06\u5bb9\u5668\u547d\u540d\u4e3amynginx<\/li>\n<li><strong>-v $PWD\/www:\/www\uff1a<\/strong>\u5c06\u4e3b\u673a\u4e2d\u5f53\u524d\u76ee\u5f55\u4e0b\u7684www\u6302\u8f7d\u5230\u5bb9\u5668\u7684\/www<\/li>\n<li><strong>-v $PWD\/conf\/nginx.conf:\/etc\/nginx\/nginx.conf\uff1a<\/strong>\u5c06\u4e3b\u673a\u4e2d\u5f53\u524d\u76ee\u5f55\u4e0b\u7684nginx.conf\u6302\u8f7d\u5230\u5bb9\u5668\u7684\/etc\/nginx\/nginx.conf<\/li>\n<li><strong>-v $PWD\/logs:\/wwwlogs\uff1a<\/strong>\u5c06\u4e3b\u673a\u4e2d\u5f53\u524d\u76ee\u5f55\u4e0b\u7684logs\u6302\u8f7d\u5230\u5bb9\u5668\u7684\/wwwlogs<\/li>\n<\/ul>\n<h3>\u67e5\u770b\u5bb9\u5668\u542f\u52a8\u60c5\u51b5<\/h3>\n<pre class=\"prettyprint prettyprinted\"><span class=\"pln\">runoob@runoob<\/span><span class=\"pun\">:~\/<\/span><span class=\"pln\">nginx$ docker ps\r\nCONTAINER ID        IMAGE        COMMAND                      PORTS                         NAMES\r\n<\/span><span class=\"lit\">45c89fab0bf9<\/span><span class=\"pln\">        nginx        <\/span><span class=\"str\">\"nginx -g 'daemon off\"<\/span>  <span class=\"pun\">...<\/span>  <span class=\"lit\">0.0<\/span><span class=\"pun\">.<\/span><span class=\"lit\">0.0<\/span><span class=\"pun\">:<\/span><span class=\"lit\">80<\/span><span class=\"pun\">-&gt;<\/span><span class=\"lit\">80<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">tcp<\/span><span class=\"pun\">,<\/span> <span class=\"lit\">443<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">tcp   mynginx\r\nf2fa96138d71        tomcat       <\/span><span class=\"str\">\"catalina.sh run\"<\/span>       <span class=\"pun\">...<\/span>  <span class=\"lit\">0.0<\/span><span class=\"pun\">.<\/span><span class=\"lit\">0.0<\/span><span class=\"pun\">:<\/span><span class=\"lit\">81<\/span><span class=\"pun\">-&gt;<\/span><span class=\"lit\">8080<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">tcp          tomcat<\/span><\/pre>\n<p>\u901a\u8fc7\u6d4f\u89c8\u5668\u8bbf\u95ee<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/www.runoob.com\/wp-content\/uploads\/2016\/06\/nginx.png\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u65b9\u6cd5\u4e00\u3001docker pull nginx(\u63a8\u8350) \u67e5\u627e\u00a0Docker\u00a0Hub\u00a0\u4e0a\u7684 nginx \u955c\u50cf run &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/b.yesiyu.top\/?p=41\" class=\"more-link\">\u7ee7\u7eed\u9605\u8bfb<span class=\"screen-reader-text\">\u201cDocker \u5b89\u88c5 Nginx\u201d<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-41","post","type-post","status-publish","format-standard","hentry","category-docker"],"_links":{"self":[{"href":"https:\/\/b.yesiyu.top\/index.php?rest_route=\/wp\/v2\/posts\/41","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/b.yesiyu.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/b.yesiyu.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/b.yesiyu.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/b.yesiyu.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=41"}],"version-history":[{"count":1,"href":"https:\/\/b.yesiyu.top\/index.php?rest_route=\/wp\/v2\/posts\/41\/revisions"}],"predecessor-version":[{"id":46,"href":"https:\/\/b.yesiyu.top\/index.php?rest_route=\/wp\/v2\/posts\/41\/revisions\/46"}],"wp:attachment":[{"href":"https:\/\/b.yesiyu.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=41"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/b.yesiyu.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=41"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/b.yesiyu.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=41"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}