首页 > 其他分享 >Dockerfile构建镜像

Dockerfile构建镜像

时间:2023-03-02 11:03:25浏览次数:37  
标签:容器 eureka 构建 镜像 docker Dockerfile

一、什么是Dockerfile

Dockerfile 用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本

二、Dockerfile构建镜像过程

本文以构建一个eureka单机版服务镜像为例

1.首先将需要添加到镜像里面的eureka_server.jar文件放到docker服务器中,然后在jar文件同目录下新建一个dockerfile文件:如下图我在/opt/目录下新建了一个eureka文件夹,然后将eureka-1.0.jar放到该目录下,同时新建了一个buildfile文件用于之后构建镜像

编辑dockerfile文件,内容如下

#指定基础镜像,可以先在docker服务器中下载好对应版本的openjdk镜像
FROM openjdk:8
#创建文件夹,应用容器产生的临时数据存放在这个文件夹 VOLUME /var/datas
#复制宿主机中需要加到镜像里面的文件到容器,并重新命名 ADD eureka-1.0.jar eureka.jar
#eureka服务启动命令 ENTRYPOINT ["java","-jar","eureka.jar"]
#对外发布的端口
EXPOSE 8761

2. docker build :使用docker build命令构建进行,他会根据dockerfile文件内容去构建镜像

docker build -f ./buildfile -t eureka:1.0 .   #指定使用当前目录的buildfile基于当前目录.创建镜像,并设置镜像名称和标签为eureka:1.0

格式:docker build  [OPTIONS]  PATH | URL | -

常用OPTIONS说明:

  • -f :指定要使用的Dockerfile路径;

  • --tag, -t: 设置要创建镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。

PATH|URL:基于哪个目录下的文件构建镜像,可以是路径也可以是URL

docker build -t runoob/ubuntu:v1 .   #使用当前目录的 Dockerfile 创建镜像,标签为 runoob/ubuntu:v1
docker build github.com/creack/docker-firefox  #使用路径github.com/creack/docker-firefox下的dockerfile文件创建镜像

3. docker run :根据上一步创建的镜像创建容器并启动

docker run --name eureka1.0 -d -p 8761:8761  eureka:1.0   #根据镜像eureka:1.0创建名称为eureka1.0并后台运行容器,并设置容器与宿主机8761端口映射

4.验证根据dockerfile构建的镜像所创建的容器运行正常

客户端网页输入:http://192.168.0.117:8761/       其中192.168.0.117为docker宿主机IP地址

5.将新构建的镜像上传到阿里云镜像仓库(方便其他人下载使用)

1.注册阿里云账户
阿里云官方网站链接:https://dev.aliyun.com
2.登陆账户
3.切换到控制台,搜索“容器镜像服务”,配置Docker加速器
4.进入到默认实例,创建个人实例,这里会需要设置仓库密码
5.创建镜像仓库的命名空间

6.创建镜像仓库(创建镜像仓库时需要选择代码源,如果是已经在docker服务器中构建好的镜像则选择本地)

 

 

 

 

 

7.根据操作指南第3步进行镜像推送操作

$ docker login --username=aliyun6258153872 registry.cn-shenzhen.aliyuncs.com   #这个是登录阿里云镜像仓库
$ docker tag [ImageId] registry.cn-shenzhen.aliyuncs.com/nanc/eureka:[镜像版本号]  #给需要上传的镜像取一个别名,[ImageId]表示的需要上传的镜像的ID
$ docker push registry.cn-shenzhen.aliyuncs.com/nanc/eureka:[镜像版本号]

 上传成功以后在镜像版本页面就可以看到对应镜像

三、Dockerfile常用命令

命令 作用
FROM image_name:tag 指定基础镜像,镜像名称:版本
VOLUMN 设置容器挂载目录,容器启动时产生的临时数据存放在这里
ADD source_dir/file dest_dir/file 将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压
ENTRYPOINT 设置容器的入口程序
EXPOSE 设置发布端口
ARG 设置编译镜像时加入的参数
MAINTAINER user_name 声明镜像的作者
ENV key value 设置环境变量 (可以写多条)
CMD 设置容器的启动命令
RUN command 编译镜像时运行的脚本(可以写多条)
WORKDIR path_dir 设置工作目录

标签:容器,eureka,构建,镜像,docker,Dockerfile
From: https://www.cnblogs.com/xnancy/p/17169000.html

相关文章

  • K8S 1.20 弃用 Docker 评估之 Docker 和 OCI 镜像格式的差别
    背景2020年12月初,Kubernetes在其最新的Changelog中宣布,自Kubernetes1.20之后将弃用Docker作为容器运行时。弃用Docker带来的,可能是一系列的改变,包括不限于:......
  • 基于alpine基础镜像构建jdk镜像以及tomcat镜像及业务构建
    1.1制作alpine自定义镜像Alpine使用的c库使用mini版的musllibc与其他Linux发行版使用的gnulibc不一样。虽说号称兼容,但也只是部分兼容了。Alpine官方给出了Alpine的三......
  • pip镜像源和配置
    pip是python必不可少的的包管理工具,但是要在国内用得爽,必须要配置镜像源。有哪些镜像站可用,以及如何配置,网上都有很多分享了。我常用的是阿里云镜像站。这里有一点......
  • Maven 模块 + 构建单个特定模块
    我有一个多模块Maven项目,其中包含一个父项目P和三个子模块A、B和C。和B都是C战争项目,都依赖于A.我可以输入mvncompile并P正确编译所有子模块。当我想对特定模块进......
  • Docker生成镜像
    Docker生成镜像 dockercommit:提交为新镜像:dockercommit-m="描述消息"-a="作者"容器ID或容器名镜像名:TAG#例:#dockercommit-m="修改了首页"-a="华......
  • 【IoT】2023裁员潮还在继续,构建规划能力也许是一剂良方
    今天要分享的主题是华为的市场管理方法论。 市场管理这个词总体来说还是有些抽象,本质上来看或者说从个人的角度来看,其实就是一种规划的能力。 无论是创业,还是作为职场人,规......
  • 2,docker基础之---镜像构建及挂载
    查看当前镜像:[root@docker~]#dockerimagesREPOSITORYTAGIMAGEIDCREATEDSIZE[root@docker~]#很明显docker是咱们新搭建的所以目前还没有镜像1,搜索镜像:[......
  • [go]封装go的docker镜像
    前言多阶段封装docker镜像,使用scratch镜像,尽量减小镜像包的体积。封装用于编译的go镜像DockerfileFROMgolang:1.20.1ASbuilderWORKDIR/appsCOPY./apps/ENVCG......
  • Jenkins任务构建失败导致项目无法正常访问
    觉得每次自己部署都很麻烦,如果能交给Jenkins省事太多而且也能够做到即时部署但是同时也觉得Jenkins很难用,各种配置很容易出问题,就导致了自动构建任务失败结果原本能正常访......
  • Containerd是如何存放容器镜像和数据的--overlayfs
    overlayfs是内核支持的文件系统,具体可参考​​overlayfsinkernel​​文档中的解释。overlaylfs是文件系统之上的文件系统。可以称之为上层文件系统。了解虚拟化的同学应该......