赞
踩
Dockerfile的每一句命令都会生成一层镜像。比如说下面的四条命令,会生成四层镜像。
Dockerfile参考文档:https://docs.docker.com/engine/reference/builder/
直接建一个名字为Dockerfile的文件.写入下面的命令:
FROM python:3.6.1-alpine
RUN pip install flask
CMD [“python”,“app.py”]
COPY app.py /app.py
FROM python:3.6.1-alpine:
Dockerfile的起点。 每个Dockerfile通常以FROM行开头,这是在其之上构建层的起始映像(也就是镜像的第一层)。 在这种情况下,您选择的是python:3.6.1-alpine基本层,因为它已经具有运行应用程序所需的Python和pip版本。alpine版本意味着它使用alpine发行版,该发行版比Linux的替代版本小得多。 较小的映像意味着它将更快地下载(部署),并且由于其受攻击面较小,因此也更加安全。
RUN pip install flask:
RUN命令执行为应用程序设置映像所需的命令,例如安装软件包,编辑文件或更改文件权限。 在这种情况下,您将安装Flask。 RUN命令在build image的时候执行,会生成一层新的镜像,加在FROM生成的基础镜像的上面。
CMD [“python”,“app.py”]
容器在启动的时候,会运行CMD指定的命令。(注意,CMD指定的命令不会在构建镜像的时候执行,但是会生成一层镜像)
There can be only one CMD per Dockerfile. If you specify more than one CMD, then the last CMD will take effect.
COPY app.py /app.py
这行代码将本地目录(运行docker image build的时候所在的目录)中的app.py文件复制到映像的新层。 该指令是Dockerfile中的最后一行。 频繁更改的层(例如将源代码复制到映像中)应放置在Dockerfile文件底部附近,以充分利用Docker层缓存。 这样可以避免重建可能会缓存的image层。 例如,如果FROM指令发生更改,它将使该image的所有后续层的缓存均无效。
通过Dockerfile build一个镜像
docker image build -t python-hello-world . ==> docker build -t python-hello-world .
-t:指定生成的镜像的名字
用法: docker build [OPTIONS] PATH | URL | - ==>后面必须带有一个PATH参数或者URL参数,指定docker file所在的位置
docker images ==> docker image ls
查看镜像列表(查看有多少镜像)
运行镜像
docker run -p 5001:5000 -d python-hello-world
-p解释: The -p flag maps a port running inside the container to your host. In this case, you’re mapping the Python app running on port 5000 inside the container to port 5001 on your host. Note that if port 5001 is already being used by another application on your host, you might need to replace 5001 with another value, such as 5002.
-d: 后台运行容器
查看容器的logs
使用docker ps查看正在运行的容器的id
docker logs [container id] ==> 指定id查看对应的容器的log
Dockerfile用于为应用程序创建可复制的build。 常见的工作流程是让您的CI/CD自动化运行docker映像构建,这是其构建过程的一部分。生成映像后,会将它们发送到central registry(存储镜像的地方),所有需要运行该应用程序的环境(例如测试环境)都可以访问它们。
登录docker hub的账号 ==> docker login
tag自己的镜像
Docker Hub的命名约定是使用[dockerhub用户名]/[镜像名称]标记image。
命令:
docker tag python-hello-world [dockerhub username]/python-hello-world
上传镜像
docker push [dockerhub用户名]/python-hello-world
镜像被上传到docker hub之后,其他的人可以通过git pull拉取你的镜像使用。
Docker映像包含在映像中运行应用程序所需的所有依赖项。运行应用程序的时候也不需要担心环境的差异,不需要配置。直接就能起来一个应用。很方便。
更新你的应用程序。
重新build image
命令:
docker image build -t [dockerhub用户名]/python-hello-world .
重新build的时候,会利用已经build好的layer的缓存,而不会重新build。
重新上传
docker push [dockerhub用户名]/python-hello-world
在上传到docker hub的时候,没有被更新的layer也是不会被上传上去的,这样可以节省很多的时间。
当更改了镜像的某一层layer的时候,重新build的时候,在这层layer之上的layer都会被重新build。
Dockerfile中的每一行都会构建一个新层,该层建立在从之前的行创建的层上。所以Dockerfile中的指定的命令的顺序很重要。 在创建Dockerfile的时候,要注意优化,将经常需要改动的层放在最上面。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。