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

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

Last updated