首页 > 其他分享 >Docker使用Dockerfile文件(五)

Docker使用Dockerfile文件(五)

时间:2024-03-06 23:14:50浏览次数:26  
标签:文件 myweb 容器 镜像 Docker Dockerfile docker

前言

  Dockerfile是一个文本文件,其中包含了创建Docker镜像所需的所有指令。这意味着任何人都可以通过运行docker build命令并使用相同的Dockerfile来创建完全相同的镜像。

  这确保了镜像创建的可重复性,使得在不同的环境中部署应用程序变得更加容易。

  Dockerfile提供了丰富的指令集,允许开发者在镜像构建过程中进行各种自定义操作,如安装软件包、复制文件、设置环境变量等。这使得镜像的构建过程非常灵活,可以根据项目的具体需求进行定制。

  Dockerfile可以轻松地分享给其他开发者或部署到不同的环境中。只需要将Dockerfile提交到版本控制系统(如Git)中,其他开发者就可以通过运行docker build命令来创建镜像,并在需要时部署到目标环境中。

  Dockerfile是一个文本文件,因此它可以像其他代码一样进行版本控制。这意味着开发者可以轻松地跟踪镜像构建过程的变化,并在需要时回滚到之前的版本。

  结合Docker Hub或其他持续集成/持续部署(CI/CD)工具,Dockerfile可以实现自动化构建和部署。这意味着当代码发生变化时,可以自动触发Docker镜像的重建和部署,从而提高了开发效率。

  Dockerfile遵循一定的语法和最佳实践,这有助于确保镜像构建的标准化和一致性。此外,Docker社区也提供了许多最佳实践指南和示例,供开发者参考和学习。

  Dockerfile为Docker镜像的构建提供了强大的支持和灵活性,使得Docker成为现代应用程序部署的优选工具之一。

一、配置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文件从当前目录复制到容器的/app目录下
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官网文档还是比较清晰,大部分都能找到相应的处理方案。

 

标签:文件,myweb,容器,镜像,Docker,Dockerfile,docker
From: https://www.cnblogs.com/zrl66/p/18056902

相关文章

  • 解析properties文件通用Java工具类
    importcom.sun.xml.internal.bind.v2.TODO;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;imp......
  • 文件MD5校验码的安全性及重要性
    文件MD5(MessageDigestAlgorithm5)是一种常用的哈希算法,用于验证文件的完整性和安全性。本文将深入介绍文件MD5的原理、应用场景以及如何计算和验证MD5值,帮助读者更好地理解和应用这一重要工具。一、文件MD5的原理MD5算法通过对文件进行哈希运算,生成一个128位的唯一标识,......
  • 【Docker】Docker安装MongoDB最新版并连接使用附加docker常用命令
    【Docker】Docker安装MongoDB最新版并连接使用附加docker常用命令前言确保centos7已经安装docker,没安装docker的可以百度自行安装一、docker安装mongodb步骤1、docker拉取mongo镜像dockerpullmongo:latest2、查看本地镜像命令#查看镜像命令dockerimages#查看正在运......
  • 本地快速搭建airflow docker镜像,映射本地路径
    airflow官方文档拉取镜像dockerpullapache/airflow:2.8.2拉取配置文件curl-LfO'https://airflow.apache.org/docs/apache-airflow/2.8.2/docker-compose.yaml'修改刚刚拉取的yaml文件关闭示例dagAIRFLOW__CORE__LOAD_EXAMPLES:'false'映射本地路径volumes:......
  • 【教程】uni-app iOS打包解决profile文件与私钥证书不匹配问题
    摘要当在uni-app中进行iOS打包时,有时会遇到profile文件与私钥证书不匹配的问题。本文将介绍如何解决这一问题,以及相关的技术细节和操作步骤。引言在uni-app开发过程中,iOS打包是一个常见的操作。然而,有时会出现profile文件与私钥证书不匹配的错误提示,导致打包失败。为了解决这一......
  • 在Docker中,stage和step有什么区别?
    在Docker的上下文中,特别是在Dockerfile构建和CI/CD流程中,“stage”和“step”这两个术语具有不同的含义:Stage(阶段):在Dockerfile中,stage(也称为构建阶段或构建阶段目标)是一种构建策略,允许开发者将Docker镜像构建过程分割成多个逻辑部分或阶段。每个阶段定义了一个新的构建环境,可......
  • 在Docker中,Docker和虚拟机有什么不同?
    在Docker中,与传统虚拟机(VirtualMachines,VMs)相比,Docker采用的是操作系统层面的轻量级虚拟化技术,主要体现在以下几个方面的不同:架构和资源使用:虚拟机:运行在hypervisor之上,每个虚拟机都包含一个完整的操作系统副本(内核+用户空间),占用较多的系统资源,如CPU、内存、磁盘空间等。......
  • 在Docker中,Docker容器有几种状态?
    在Docker中,容器可以从一种状态转换到另一种状态,以下是Docker容器可能出现的主要状态:created(已创建):当您使用dockercreate命令创建一个容器但尚未启动它时,容器处于此状态。容器的文件系统结构和配置已经准备完毕,但是还没有开始运行任何进程。restarting(重启中):此状态表明......
  • docker概述
    1.Docker组件Docker客户端:ClientDocker服务器:DockerdaemonDocker镜像:ImageRegistryDocker容器:ContainerDocker采用的是Client/Server架构。客户端向服务器发送请求,服务器负责构建、运行和分发容器。客户端和服务器可以运行在同一个Host上,客户端也可以通......
  • 在Docker中,Docker可以用来做什么?
    Docker作为一种开源的应用容器引擎,主要用于解决应用软件开发、分发和部署过程中面临的环境一致性、可移植性和资源高效利用等问题。以下是一些Docker的主要用途:标准化和隔离应用环境:Docker通过容器技术为每个应用程序及其依赖提供一个独立的、可移植的运行环境。每个容器就像......