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 设置工作目录
posted @ 2023-03-02 10:47  机智的老猫咪  阅读(190)  评论(0编辑  收藏  举报