天天看點

docker學習筆記(三)——建立自定義鏡像

首先拉取一個鏡像,在這裡以NGINX為例

<code>[root@DockServer opt]</code><code># docker pull nginx</code>

<code>[root@DockServer opt]</code><code># docker images</code>

<code>REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE</code>

<code>nginx               latest              b8efb18f159b        3 weeks ago         107MB</code>

啟動NGINX鏡像,映射出端口

<code>[root@DockServer opt]</code><code># docker run --name webserver -d -p 80:80 nginx</code>

<code>8f62585b370ca34eb8c438adbab0f972e1990cee25000a742c6a2d8e7ee7ba38</code>

<code>[root@DockServer opt]</code><code># docker ps</code>

<code>CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES</code>

<code>8f62585b370c        nginx               </code><code>"nginx -g 'daemon ..."</code>   <code>6 seconds ago       Up 6 seconds        0.0.0.0:80-&gt;80</code><code>/tcp</code>       <code>webserver</code>

通路端口,直接用指令行通路,

<code>[root@DockServer opt]</code><code># curl http://127.0.0.1</code>

<code>&lt;!DOCTYPE html&gt;</code>

<code>&lt;html&gt;</code>

<code>&lt;</code><code>head</code><code>&gt;</code>

<code>&lt;title&gt;Welcome to nginx!&lt;</code><code>/title</code><code>&gt;</code>

<code>&lt;style&gt;</code>

<code>    </code><code>body {</code>

<code>        </code><code>width: 35em;</code>

<code>        </code><code>margin: 0 auto;</code>

<code>        </code><code>font-family: Tahoma, Verdana, Arial, sans-serif;</code>

<code>    </code><code>}</code>

<code>&lt;</code><code>/style</code><code>&gt;</code>

<code>&lt;</code><code>/head</code><code>&gt;</code>

<code>&lt;body&gt;</code>

<code>&lt;h1&gt;Welcome to nginx!&lt;</code><code>/h1</code><code>&gt;</code>

<code>&lt;p&gt;If you see this page, the nginx web server is successfully installed and</code>

<code>working. Further configuration is required.&lt;</code><code>/p</code><code>&gt;</code>

<code>&lt;p&gt;For online documentation and support please refer to</code>

<code>&lt;a href=</code><code>"http://nginx.org/"</code><code>&gt;nginx.org&lt;</code><code>/a</code><code>&gt;.&lt;br/&gt;</code>

<code>Commercial support is available at</code>

<code>&lt;a href=</code><code>"http://nginx.com/"</code><code>&gt;nginx.com&lt;</code><code>/a</code><code>&gt;.&lt;</code><code>/p</code><code>&gt;</code>

<code>&lt;p&gt;&lt;em&gt;Thank you </code><code>for</code> <code>using nginx.&lt;</code><code>/em</code><code>&gt;&lt;</code><code>/p</code><code>&gt;</code>

<code>&lt;</code><code>/body</code><code>&gt;</code>

<code>&lt;</code><code>/html</code><code>&gt;</code>

可以看到能夠通路在nginx docker裡的東東了,下面我們修改下首頁内容

進入nginx docker 裡面進行修改

<code>進入docker</code>

<code>[root@DockServer opt]</code><code># docker exec -it webserver bash</code>

<code>root@8f62585b370c:/</code><code># echo '&lt;h1&gt;Hello, Docker!&lt;/h1&gt;' &gt; /usr/share/nginx/html/index.html</code>

<code>root@8f62585b370c:/</code><code>#  exit</code>

<code>exit</code>

再次通路看看

<code>&lt;h1&gt;Hello, Docker!&lt;</code><code>/h1</code><code>&gt;</code>

可以看出,已經修改成功,我們儲存成鏡像

<code>[root@DockServer opt]</code><code># docker commit  --author "Ding Jin &lt;[email protected]&gt;"  --message "修改nginx預設網頁"  webserver webserver:v2</code>

<code>sha256:ca35d11b57bac6e3e4ebab15aaff528c8530f7f5e59e00f58fa61e86edf1aa91</code>

<code>REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE</code>

<code>webserver              v2                  ca35d11b57ba        6 seconds ago       107MB</code>

<code>nginx                  latest              b8efb18f159b        3 weeks ago         107MB</code>

<code>已經可以看到webserver:v2鏡像了,運作下</code>

<code>[root@DockServer opt]</code><code># docker run --name web2 -d -p 81:80 webserver:v2</code>

<code>1647edeba49aa664c0ccf642248f6b30b36c6b08990ede580a5803f1a59ae545</code>

<code>[root@DockServer opt]</code><code># curl http://127.0.0.1:81</code>

可以了解以下指令,

<code>檢視webserver做了哪些更改,即和源鏡像對比不同</code>

<code>[root@DockServer opt]</code><code># docker diff webserver</code>

<code>C </code><code>/root</code>

<code>A </code><code>/root/</code><code>.bash_history</code>

<code>C </code><code>/run</code>

<code>A </code><code>/run/nginx</code><code>.pid</code>

<code>C </code><code>/var</code>

<code>C </code><code>/var/cache</code>

<code>C </code><code>/var/cache/nginx</code>

<code>A </code><code>/var/cache/nginx/uwsgi_temp</code>

<code>A </code><code>/var/cache/nginx/client_temp</code>

<code>A </code><code>/var/cache/nginx/fastcgi_temp</code>

<code>A </code><code>/var/cache/nginx/proxy_temp</code>

<code>A </code><code>/var/cache/nginx/scgi_temp</code>

<code>C </code><code>/usr</code>

<code>C </code><code>/usr/share</code>

<code>C </code><code>/usr/share/nginx</code>

<code>C </code><code>/usr/share/nginx/html</code>

<code>檢視webserver:v2曆史檔案變動記錄</code>

<code>[root@DockServer opt]</code><code># docker history webserver:v2</code>

<code>IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT</code>

<code>ca35d11b57ba        4 minutes ago       nginx -g daemon off;                            98B                 修改nginx預設網頁</code>

<code>b8efb18f159b        3 weeks ago         </code><code>/bin/sh</code> <code>-c </code><code>#(nop)  CMD ["nginx" "-g" "daem...   0B                  </code>

<code>&lt;missing&gt;           3 weeks ago         </code><code>/bin/sh</code> <code>-c </code><code>#(nop)  STOPSIGNAL [SIGTERM]         0B                  </code>

<code>&lt;missing&gt;           3 weeks ago         </code><code>/bin/sh</code> <code>-c </code><code>#(nop)  EXPOSE 80/tcp                0B                  </code>

<code>&lt;missing&gt;           3 weeks ago         </code><code>/bin/sh</code> <code>-c </code><code>ln</code> <code>-sf </code><code>/dev/stdout</code> <code>/var/log/ngi</code><code>...   0B                  </code>

<code>&lt;missing&gt;           3 weeks ago         </code><code>/bin/sh</code> <code>-c apt-get update  &amp;&amp; apt-get inst...   52.2MB              </code>

<code>&lt;missing&gt;           3 weeks ago         </code><code>/bin/sh</code> <code>-c </code><code>#(nop)  ENV NJS_VERSION=1.13.3....   0B                  </code>

<code>&lt;missing&gt;           3 weeks ago         </code><code>/bin/sh</code> <code>-c </code><code>#(nop)  ENV NGINX_VERSION=1.13....   0B                  </code>

<code>&lt;missing&gt;           3 weeks ago         </code><code>/bin/sh</code> <code>-c </code><code>#(nop)  MAINTAINER NGINX Docker...   0B                  </code>

<code>&lt;missing&gt;           3 weeks ago         </code><code>/bin/sh</code> <code>-c </code><code>#(nop)  CMD ["bash"]                 0B                  </code>

<code>&lt;missing&gt;           3 weeks ago         </code><code>/bin/sh</code> <code>-c </code><code>#(nop) ADD file:fa8dd9a679f473a...   55.2MB</code>

結合上篇,我們上傳到本地私有倉庫,然後就直接可以在本地調用了~~

本文轉自 jackjiaxiong 51CTO部落格,原文連結:http://blog.51cto.com/xiangcun168/1957431

繼續閱讀