DockerFile是一个文本格式的配置文件,用户可以使用DockerFile来快速创建自定义的镜像。
Dockerfile分为四部分:基础镜像信息、维护者信息、 镜像操作指令和容器启动时执行指令
比如:
This Dockerfile uses the ubuntu image
VERSION 2 - EDITION 1
Author: docker_user
Command format: Instruction [arguments / command] …
Base image to use, this must be set as the first line
FROM ubuntu:18.04
MAINTAINER docker_user docker_user@email.com
COPY . /app
RUN make /app
CMD python /app/app.py
每条指令创建一层:
-
FROM : 指明所基于的镜像名称,从ubuntu:18.04Docker镜像创建一个图层。
-
MAINTAINER:维护者信息,docker_user维护(可以不写)
-
COPY : 从Docker客户端的当前目录添加文件,镜像操作指令
-
RUN : 构建镜像时执行make命令,每运行一条RUN指令,镜像就添加新的一层,并提交(添加可写层)
-
CMD : 指定在容器中运行什么命令,用来指定运行容器时的操作命令
Docker镜像由只读层组成,每个只读层代表一个Dockerfile指令。这些层是堆叠的,每个层都是上一层的变化的增量
Docker可以通过读取Dockerfile指令来自动构建镜像
完整的小例子:
#在一个空目录下,新建一个名为 Dockerfile 文件
mkdir /usr/dockerfile -p
vim dockerfile-demo
#编辑 dockerfile
FROM nginx:latest
维护者 可以省略
MAINTAINER jourwon jourwon@docker.com
#启动容器
RUN mkdir /usr/share/nginx/html/ -p
RUN echo Hello DockerFile! > /usr/share/nginx/html/demo.html
#构建镜像 . : 根据当前上下文环境构建
docker build -f dockerfile-demo -t jourwon/nginx:v1 .
#运行
docker run --rm -d -it --network host jourwon/nginx:v1
浏览器访问
D ockerfile命令官方文档 常见命令详解:
1. FROM
指定所创建镜像的基础镜像,如果本地不存在,则默认会去Docker Hub下载指定镜像。命令格式如下:
FROM [–platform=] [AS ]
Or
FROM [–platform=] [:] [AS ]
Or
FROM [–platform=] [@] [AS ]
平时不用这么复杂的,只需如下即可
FROM [:]
FROM centos:7.6.1810
任何Dockerfile中的第一条指令必须为FROM指令。并且,如果在同 一个Dockerfile中创建多个镜像,可以使用多个FROM指令(每个镜像一 次)。
2. MAINTAINER
指定维护者信息,格式为MAINTAINER。可以不写
MAINTAINER jourwon jourwon@docker.com
该信息会写入生成镜像的Author属性域中
3. RUN
容器构建时需要运行的命令
1、RUN
默认将在shell终端中运行命令,即/bin/sh-c
2、RUN [“executable”,“param1”,“param2”]。指令会被解析 为Json数组,因此必须用双引号。exec执行,不会启动shell环境
指定使用其他终端类型可以通过此方式实现,例如
RUN [“/bin/bash”,“-c”,“echo hello”]
每条RUN指令将在当前镜像的基础上执行指定命令,并提交为新的镜像。当命令较长时可以使用\来换行
在shell形式中,可以使用\(反斜杠)将一条RUN指令继续到下一行。例如,考虑以下两行:
RUN /bin/bash -c 'source $HOME/.bashrc; \
echo $HOME’
它们在一起等效于以下这一行:
RUN /bin/bash -c ‘source $HOME/.bashrc; echo $HOME’
要使用’/bin/sh’以外的其他shell ,请使用exec 形式传入所需的shell 。例如:
RUN [“/bin/bash”, “-c”, “echo hello”]
注意 在JSON格式中,必须转义反斜杠。在Windows中,反斜杠是路径分隔符,这一点尤其重要。由于无效的JSON,以下行否则将被视为shell形式,并以意外的方式失败:
RUN [“c:\windows\system32\tasklist.exe”]
此示例的正确语法为:
RUN [“c:\windows\system32\tasklist.exe”]
4. CMD
CMD指令用来指定启动容器时默认执行的命令。它支持三种格式:
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
最后
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算
73)]
[外链图片转存中…(img-N4SIpOUo-1712239420773)]
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算