ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

docker基础_Dockerfile

2022-01-10 13:33:19  阅读:186  来源: 互联网

标签:ago requirements app 基础 镜像 docker txt Dockerfile


Dockerfile

[]: https://docs.docker.com/language/python/build-images/ "docker官方文档"

以python为例(docker官方还提供了java、go、nodejs) 学习dockerfile文件的编写(当运行docker build .的时候会先运行一个临时容器将自己编写的内容放到临时容器中 然后再生成镜像)

生成镜像


在某个路径下有以下三个文件

beginner@beginner-virtual-machine:~/test$ ls
app.py  Dockerfile  requirements.txt

Dockerfile

FROM python:3.8-slim-buster  #以这个镜像做为基础 在这个镜像的基础上构建我们自己的内容

WORKDIR /app  # 将新镜像的工作目录变成/app(如果没有就新建),当运行镜像的时候 就会进到这个目录下

COPY requirements.txt requirements.txt # 将当前路径下的requirement.txt复制到/app/requirements.txt
RUN pip3 install -r requirements.txt # 容器运行pip3 install 安装所需要的包

COPY . .  # 将当前路径下的所有内容复制到/app下

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0"] # 运行python3 -m flask run --host=0.0.0.0命令

app.py

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, Docker!'

requirements.txt

Flask==2.0.2

执行docker命令生成镜像

docker build --tag python-docker .  # .是指当前的路径
 [internal] load build definition from Dockerfile
 => transferring dockerfile: 203B
 [internal] load .dockerignore
 => transferring context: 2B
 [internal] load metadata for docker.io/library/python:3.8-slim-buster
 [1/6] FROM docker.io/library/python:3.8-slim-buster
 [internal] load build context
 => transferring context: 953B
 CACHED [2/6] WORKDIR /app
 [3/6] COPY requirements.txt requirements.txt
 [4/6] RUN pip3 install -r requirements.txt
 [5/6] COPY . .
 [6/6] CMD [ "python3", "-m", "flask", "run", "--host=0.0.0.0"]
 exporting to image
 => exporting layers
 => writing image sha256:8cae92a8fbd6d091ce687b71b31252056944b09760438905b726625831564c4c
 => naming to docker.io/library/python-docker

dockerfile指令详解

FROM  #基础镜像,一切从这里开始构建
MAINTAINER  #镜像是谁写的,姓名+邮箱
RUN  # 镜像构建的时候需要运行的命令
ADD #步骤,tomcat镜像,这个tomcat压缩包!添加内容
WORKDIR #镜像的工作目录
VOLUME #挂载的目录
EXPOSE #暴露端口配置
RUN 
CMD  #指定这个容器启动的时候要运行的命令,只有最后一个会生效,一个Dockerfile只能有一个CMD命令,如果有多个,只有最后一个CMD命令生效。
ENTRYPOINT  #指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD #当构建一个被继承的Dockerfile 这个时候就会运行onbuild指令
COPY # 类似ADD,将我们的文件拷贝到镜像中
ENV#构建的时候设置环境变量

如果有多个CMD只会执行最后一个!!!

举个例子(python3.8的最后一个cmd是 CMD ["python3"])

beginner@beginner-virtual-machine:~/test$ docker image ls
REPOSITORY                TAG               IMAGE ID       CREATED          SIZE
test                      1.0               5535c3a6ec24   48 minutes ago   680MB
python3.8_zyh             3.0               21451ed8e840   19 hours ago     812MB
python3.8_zyh             latest            c8ee23b16690   20 hours ago     422MB
python3.8_zyh             1.0               a7abd70e6690   29 hours ago     180MB
tomcat                    latest            fb5657adc892   2 weeks ago      680MB
redis                     6.2.6             7614ae9453d1   2 weeks ago      113MB
python                    3.8-slim-buster   5cc8cb0c433a   2 weeks ago      114MB
ubuntu                    latest            ba6acccedd29   2 months ago     72.8MB
redis                     latest            7faaec683238   2 months ago     113MB
centos                    latest            5d0da3dc9764   3 months ago     231MB
elasticsearch             7.7.0             7ec4f35ab452   20 months ago    757MB
mobz/elasticsearch-head   5                 b19a5c98e43b   5 years ago      824MB

beginner@beginner-virtual-machine:~/test$ docker run -it 5cc8c echo 1
1
beginner@beginner-virtual-machine:~/test$ docker run -it 5cc8c 
Python 3.8.12 (default, Dec 21 2021, 11:15:53) 
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 

标签:ago,requirements,app,基础,镜像,docker,txt,Dockerfile
来源: https://www.cnblogs.com/beginnerzyh/p/15784030.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有