docker基础_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.
>>>
docker基础_Dockerfile的更多相关文章
- Docker - Docker基础命令及使用
Docker Docker - 官网 Docker - Hub GitHub - Docker Docker中文社区 Docker基础命令 Docker 查看帮助信息:docker --help 查看 ...
- 【云计算】Docker云平台—Docker基础
Docker云平台系列共三讲,此为第一讲:Docker基础 参考资料: Docker官方文档:https://docs.docker.com/ Docker从入门到实践:https://yeasy.g ...
- Docker基础技术:Linux Namespace(下)
在 Docker基础技术:Linux Namespace(上篇)中我们了解了,UTD.IPC.PID.Mount 四个namespace,我们模仿Docker做了一个相当相当山寨的镜像.在这一篇中,主 ...
- Docker 基础技术:Linux Namespace(下)
导读 在Docker基础技术:Linux Namespace(上篇)中我们了解了,UTD.IPC.PID.Mount 四个namespace,我们模仿Docker做了一个相当相当山寨的镜像.在这一篇中 ...
- Docker基础入门及示例
Docker近几年的发展可谓一日千里,特别从是2013年随着一个基于LXC的高级容器引擎开源,到现在,其在linux和windows上都有了很好的支持,并且已经有很多公司将docker用于实际的生产环 ...
- Docker 基础 : 镜像
目录 获取镜像 查看镜像信息 搜索镜像 删除镜像 创建镜像 导出和导入镜像 上传镜像 总结 镜像是 Docker 的三大核心概念之一.Docker 运行容器前需要本地存在对应的镜像,如果本地没有对应的 ...
- Docker 基础技术之 Linux cgroups 详解
PS:欢迎大家关注我的公众号:aCloudDeveloper,专注技术分享,努力打造干货分享平台,二维码在文末可以扫,谢谢大家. 推荐大家到公众号阅读,那里阅读体验更好,也沉淀了很多篇干货. 前面两篇 ...
- docker 基础知识分享ppt
给团队做的docker基础分享ppt, 见下面的附件. https://files.cnblogs.com/files/harrychinese/docker_intro.pptx
- 中标麒麟龙芯平台--docker基础镜像制作
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源.Docker 的出现为开发人员和运维人员带来了极大的便利.Docker在X86下常见的发行版Linux如Ub ...
随机推荐
- [SniperOJ](web)图书管理系统 注入 源码泄露
0x00 题目概况 题目地址:http://www.sniperoj.cn:10000/ 这是一道注入题,存在git源码泄露,使用githack(freebuf有工具介绍)把源码脱下来,进行审计,然后 ...
- BASH和DOS之间的基本区别是什么?
BASH和DOS控制台之间的主要区别在于3个方面:1. BASH命令区分大小写,而DOS命令则不区分;2. 在BASH下,/ character是目录分隔符,\作为转义字符.在DOS下,/用作命令参数 ...
- 你如何在 Java 中获取线程堆栈?
kill -3 [java pid] 不会在当前终端输出,它会输出到代码执行的或指定的地方去.比如,kill -3 tomcat pid, 输出堆栈到 log 目录下. Jstack [java pi ...
- 什么是 Spring MVC 框架的控制器?
控制器提供一个访问应用程序的行为,此行为通常通过服务接口实现.控制器解 析用户输入并将其转换为一个由视图呈现给用户的模型.Spring 用一个非常抽象 的方式实现了一个控制层,允许用户创建多种用途的控 ...
- Zookeeper 保证了如下分布式一致性特性?
1.顺序一致性 2.原子性 3.单一视图 4.可靠性 5.实时性(最终一致性) 客户端的读请求可以被集群中的任意一台机器处理,如果读请求在节点上注册了 监听器,这个监听器也是由所连接的 zookeep ...
- 学习Haproxy (八)
Unix套接字命令(Unix Socket commands) socat是一个多功能的网络工具,名字来由是"Socket CAT",可以看作是netcat的N倍加强版,socat ...
- 学习ELK日志平台(三)
ELK(elasticsearch.logstash.kibana) Elastic Stack是原ELK Stack在5.0版本加入Beats套件后的新称呼 解决痛点: 开发人员不能登录线上serv ...
- Numpy怎样将数组读写到文件
Numpy怎样将数组读写到文件 本文档介绍的是Numpy以自己内建二进制的方式,将数组写出到文件,以及从文件加载数组: 如果是文本.表格类数据,一般使用pandas这个类库做加载和处理,不用numpy ...
- 【精】多层PCB层叠结构
在设计多层PCB电路板之前,设计者需要首先根据电路的规模.电路板的尺寸和电磁兼容(EMC)的要求来确定所采用的电路板结构,也就是决定采用4层,6层,还是更多层数的电路板.确定层数之后,再确定内电层的放 ...
- PCB中的生产工艺、USB布线、特殊部件、蓝牙天线设计
PCB中的生产工艺.USB布线.特殊部件.蓝牙天线设计 (2016-07-20 11:43:27) 转载▼ PCB生产中Mark点设计 1.pcb必须在板长边对角线上有一对应整板定位的Mark ...