Docker使用Dockerfile文件(五)

前言

  Dockerfile是一个文本文件,用于自动化构建Docker镜像。它包含了一系列指令和说明,用于描述如何构建所需的Docker镜像。这些指令涵盖了执行代码或文件、环境变量、依赖包、运行时环境、动态链接库、操作系统的发行版、服务进程和内核进程等多个方面的内容。通过docker build命令构建镜像,保证了镜像的构建过程可重复、可移植,并且可以在不同的环境中保持一致。再打包成tar归档文件,然后移植到不同系统中,最后通过通过docker load命令将其加载到images镜像库中。

一、配置Dockerfile文件

  

# 指定基础镜像 
FROM ubuntu:latest  
  
# 设置维护者信息,设置作者信息,不过官方(不推荐使用)
MAINTAINER auler 
  
# 安装必要的软件包(容器创建时,运行代码)
RUN apt-get update && apt-get install -y \  
    nginx \  
    curl  
  
# 复制本地文件到容器中的指定路径(前面./index.html是本机宿主目录,后面/usr/share/nginx/html是容器目录,也可以根据工作目录进行相对路径./html)
COPY ./index.html /usr/share/nginx/html/  
  
# 创建数据卷(这里虽然设置挂载,具体还需要-v进行挂载)
VOLUME /var/www/html  
  
# 设置工作目录(构建时会以这个容器目录下进行,就是 ./ 当前目录的意思)
WORKDIR /usr/share/nginx/html  
  
# 暴露容器端口,官方文档中表明这是指示什么端口被暴露,并且需要用什么协议
EXPOSE 80 81/udp 82/tcp
  
# 容器启动时执行的命令(Nginx以非守护模式运行)
CMD ["nginx", "-g", "daemon off;"]

 二、执行Dockerfile文件

  以JavaWeb项目为例,配置简单的web项目。先创建一个含有java环境的容器,然后直接将jar包复制到容器的jar目录中,最后运行项目。(war包也同理,不过需要构建tomcat容器)

# 使用包含Java的官方基础镜像
FROM java:openjdk-8u111-jre

# 设置工作目录
WORKDIR /jar

# 将JAR文件从当前目录复制到容器的/jar目录下
COPY ./web/target/web-0.0.1.jar ./web.jar

# 暴露应用程序运行的端口,假设你的应用监听在8085端口
EXPOSE 8085

# 启动JAR包
ENTRYPOINT ["java", "-jar", "web.jar"]

  后面开始进行构建项目镜像,然后保存成docker支持的tar包,传到服务器里。

~]# docker build -t myweb .  # 最后有个点 . 别忘了,代表当前目录
~]# docker build -t web:v1 . # -t表示tag标签,这样就打上v1的标签
~]# docker build -t auler/web2:v1 . # 还能记录仓库名称,仓库名称/镜像名称:标签名

  然后查看docker镜像是否已经生成。

~]# docker images

   接着对myweb镜像进行打包,执行完命令,当前目录会出现myweb.tar文件。

~]# docker save -o myweb.tar myweb # -o表示output输出归档文件myweb.tar,并保存当前目录,最后是镜像myweb

  然后上传到服务器,接着加载tar文件就能完美执行web项目。使用命令查看镜像,发现镜像已经加载到images列表中。

~]# docker load -i myweb.tar #-i表示input,加载myweb.tar文件到容器镜像

 

   使用docker创建运行myweb项目,并查看并访问项目。

~]# docker run  -d --name myweb -p 8085:8085 myweb:latest 
~]# docker ps -a # 查看项目
~]# curl 127.0.0.1:8085 #  访问项目,返回响应数据即可

 

  Dockerfile掌握基本使用,对于实战项目也是能够通过Dockerfile配置达成环境统一,这也是Docker的一个亮点吧。

  另外一些需要特殊配置的项目可以去官网查看文档,目前看了Docker官网文档还是比较清晰,大部分都能找到相应的处理方案。

 

posted @ 2024-03-06 22:56  Auler  阅读(27)  评论(0编辑  收藏  举报