Docker05 DockerFile

蒙弘图
2023-12-01

06 DockerFile

DockerFile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。

1. 基础知识

(1)每条保留字指令都必须是大写字母且后面要跟随至少一个参数
(2)指令按照从上到下,顺序执行
(3)#表示注释
(4)每条指令都会创建一个新的镜像层,并对镜像提交

2. Docker执行DockerFile的大致流程

(1)docker运行一个基础镜像的容器
(2)执行指令对容器进行修改
(3)提交一个新的容器,并运行这个新容器
(4)执行dockerfile中的下一条指令

3. DockerFile常用指令

FROM			当前的镜像继承自哪个基础镜像

MAINTAINER 		镜像维护者姓名和邮箱地址

RUN				在容器构建时需要运行的命令,shell格式 or exec格式,在docker build时运行

EXPOSE			容器对外暴露的端口

WORKDIR			进入容器的初始目录

USER			指定该镜像以什么用户执行,默认为root

ENV				构建镜像过程中设置环境变量

ADD				将宿主机目录下的文件拷贝进镜像并自动处理URL和解压压缩包

COPY			将宿主机目录下的文件拷贝进镜像

VOLUME			容器数据卷

CMD				容器启动后要做的事情,shell格式 or exec格式,只有最后一个CMD会生效,并会被docker run后的命令覆盖

ENTRYPOINT		类似于CMD。搭配CMD使用后ENTRYPOINT为固定参数,CMD为可变参数传递给ENTRYPOINT。ENTRYPOINT不会被docker run后的命令覆盖。

4. DockerFile实例一

创建Dockerfile文件

# vim Dockerfile

编写内容

FROM ubuntu
MAINTAINER zhouyc

ENV MYPATH /usr/local
WORKDIR $MYPATH

RUN apt-get -y update
# 安装vim
RUN apt-get -y install vim
# 安装ifconfig命令
RUN apt-get -y install net-tools
# 安装java8
RUN mkdir -p /usr/loacl/java
ADD jdk-8u241-linux-x64.tar.gz /usr/local/java/

#配置JAVA环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_241
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH

EXPOSE 80
CMD echo $MYPATH
CMD echo "success---------------ok"
CMD /bin/bash

运行构建命令

docker build -t ubuntu_with_jdk8:1.0 .

5. DockerFile实例二:通过docker发布JavaWeb微服务

第一步:通过Maven将JavaWeb微服务项目打包,上传至服务器
第二步:编写DockerFile文件

在jar包同目录下创建Dockerfile文件

vim DockerFile

编写DockerFile文件

FROM java:8
MAINTAINER zhouyc

VOLUME /tmp
ADD docker_boot-0.0.1-SNAPSHOT.jar docker_test.jar
ENTRYPOINT ["java", "-jar", "/docker_test.jar"]
EXPOSE 6001
第三步:构建镜像文件

运行构建命令

docker build -t dockers_test:1.0 .
第四步:运行容器
docker run -d -p 6001:6001 dockers_test:1.0

6. 虚悬镜像

docker在构建或删除镜像过程中出现错误,产生的仓库名、标签名都是的镜像

[root@iZ2ze0v2pan6jiw4jb3g2cZ ~]# docker images
REPOSITORY                     	TAG       IMAGE ID       CREATED         SIZE
ubuntu_with_jdk8             	1.0       62d5b24c3c9b   22 hours ago    587MB
<none>                        	<none>    34e77a048178   22 hours ago    113MB

查询全部虚悬镜像

docker image ls -f dangling=true

删除全部虚悬镜像

docker image prune
 类似资料:

相关阅读

相关文章

相关问答