Jennifer的Docker筆記本
  • Introduction
  • Docker
    • Docker簡介
    • Docker原理
    • Docker指令大全
  • Docker Image
    • 搜尋公開的映像檔
    • 學習撰寫Dockerfile
    • 映像檔分層概念
  • Docker Container
    • 用指令建立容器
    • 用Compose建立容器
    • 與執行中的容器互動
    • 利用互動後的容器建立映像檔
  • DOCKER REGISTRY
    • 上傳到公有倉庫
    • 上傳到私有倉庫
  • Docker Volume
    • 同步容器資料
  • Docker Network
    • 容器的網路設定
  • Docker Installation
    • 安裝Docker/Portainer on Ubuntu
    • 安裝Nginx on Docker
  • DOCKER UNDERLYING TECHNOLOGY
    • Linux Namespaces
    • Linux CGroup (Control Group)
  • Let's Docker
    • Docker實作營
  • Docker Resources
    • Docker官方網站
    • Docker Doc.
    • Docker Hub
    • Play with Docker
    • peihsinsu的Docker學習筆記
    • 珍妮佛的學習筆記#docker
Powered by GitBook
On this page

Was this helpful?

  1. Docker Container

利用互動後的容器建立映像檔

假設我建立了一個容器之後,在容器內進行了一些指令(新增檔案或是安裝套件,任何指令都算),希望能夠依此容器來建立新映像檔,可利用docker commit。

建容器前,用docker history看一下映像檔cutejaneii/pythonapp的內容

root@mv:/home/jennifer# docker history cutejaneii/pythonapp
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
de1bcecfcad9        3 hours ago         /bin/sh -c #(nop)  CMD ["python" "main.py"]     0B
993212ec1639        3 hours ago         /bin/sh -c #(nop) COPY dir:5f74b7454f45cc72f…   260B
fb8ad4738161        3 hours ago         /bin/sh -c pip install flask                    11.2MB
d15e7a9f900e        2 weeks ago         /bin/sh -c #(nop)  CMD ["python3"]              0B
<missing>           2 weeks ago         /bin/sh -c set -ex;   wget -O get-pip.py "$P…   6.51MB
<missing>           2 weeks ago         /bin/sh -c #(nop)  ENV PYTHON_GET_PIP_SHA256…   0B
<missing>           2 weeks ago         /bin/sh -c #(nop)  ENV PYTHON_GET_PIP_URL=ht…   0B
<missing>           2 weeks ago         /bin/sh -c #(nop)  ENV PYTHON_PIP_VERSION=20…   0B
<missing>           2 weeks ago         /bin/sh -c cd /usr/local/bin  && ln -s idle3…   32B
<missing>           2 weeks ago         /bin/sh -c set -ex  && apk add --no-cache --…   55.5MB
<missing>           2 weeks ago         /bin/sh -c #(nop)  ENV PYTHON_VERSION=3.5.9     0B
<missing>           2 weeks ago         /bin/sh -c #(nop)  ENV GPG_KEY=97FC712E4C024…   0B
<missing>           2 weeks ago         /bin/sh -c apk add --no-cache ca-certificates   512kB
<missing>           2 weeks ago         /bin/sh -c #(nop)  ENV LANG=C.UTF-8             0B
<missing>           3 weeks ago         /bin/sh -c #(nop)  ENV PATH=/usr/local/bin:/…   0B
<missing>           3 weeks ago         /bin/sh -c #(nop)  CMD ["/bin/sh"]              0B
<missing>           3 weeks ago         /bin/sh -c #(nop) ADD file:c92c248239f8c7b9b…   5.57MB

接著建立容器,再瀏覽器看一下網站http://host-ip/

root@vm:/home/jennifer# docker run -d --net=host cutejaneii/pythonapp
927c93e53633b1860656608713316f48930fda7cfd90fb0779706ad93afe7fef

接著我們進入容器內,修改內容後,再建立一個新的映像檔

root@vm:/home/jennifer# docker exec -it 927c sh
/ # vi main.py
/ # exit

修改main.py內容

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World! (Python+Flask+Docker)"

if __name__ == "__main__":
    app.run(host="0.0.0.0", debug=True, port=80)

docker commit成一個新的映像檔cutejaneii/pythonapp2

root@vm:/home/jennifer# docker commit b495 cutejaneii/pythonapp2
sha256:011402b3da74aa9923a158f2d3803b9e354dce404ccd0ad6156b2df2707fde31

再來用這個新的映像檔cutejaneii/pythonapp2建立容器,就打開瀏覽器,就可以發現內容已改變

root@vm:/home/jennifer# docker run -d --net=host cutejaneii/pythonapp2

Previous與執行中的容器互動Next上傳到公有倉庫

Last updated 4 years ago

Was this helpful?