docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > Docker容器镜像生成

Docker容器镜像生成的三种方法详解

作者:爱码少年 00fly.online

本文介绍了三种生成Docker镜像的方法:1)使用Dockerfile配合docker build命令;2)通过docker-compose.yml文件构建;3)借助docker-maven-plugin插件,以h2数据库为例,详细说明了Dockerfile编写要点和各方法的实现步骤,需要的朋友可以参考下

一、简要概述

容器化部署, 生成docker镜像是基础。如何生成docker镜像,其法有三。

二、生成镜像的三种方式

1,准备Dockerfile

下面我们以h2-1.4.200.jar生成镜像为例来说明。
首先,定义Dockerfile 文件

#基础镜像
FROM adoptopenjdk/openjdk8-openj9:alpine-slim

#设置时区与时间
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone

#项目jar包引入
COPY *.jar  /app.jar

#指定交互端口
EXPOSE 8082
EXPOSE 9092

CMD ["-web", "-webAllowOthers", "-tcp", "-tcpAllowOthers", "-ifNotExists"]

#启动脚本
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-Xshareclasses", "-Xquickstart", "-cp", "/app.jar", "org.h2.tools.Server"]

Dockerfile 是一个用来构建镜像的文本文件, 简单来说就是通过此文件定义了打包镜像的过程。

常见命令如下

2,借助docker build

Dockerfile 同级创建img-build.sh,内容如下

#!/bin/bash
curl -k -O https://repo1.maven.org/maven2/com/h2database/h2/1.4.200/h2-1.4.200.jar
docker build --no-cache -t registry.cn-shanghai.aliyuncs.com/00fly/h2:1.4.200 .

3,借助docker compose build

Dockerfile 同级创建docker-compose.yml文件,内容为:

services:
  h2-server:
    image: registry.cn-shanghai.aliyuncs.com/00fly/h2:1.4.200
    build:
      context: .
      dockerfile: Dockerfile
    container_name: h2-server
    deploy:
      resources:
        limits:
          cpus: '2.0'
          memory: 64M
        reservations:
          cpus: '2.0'
          memory: 64M
    ports:
    - 8082:8082
    restart: on-failure
    logging:
      driver: json-file
      options:
        max-size: 5m
        max-file: '1'

重点是这几行,分别定义了镜像名,路径,dockerfile文件名等生成镜像需要的参数。

image: registry.cn-shanghai.aliyuncs.com/00fly/h2:1.4.200
build:
  context: .
  dockerfile: Dockerfile

新建img-build.sh

#!/bin/bash
curl -k -O https://repo1.maven.org/maven2/com/h2database/h2/1.4.200/h2-1.4.200.jar
docker compose build --no-cache

4,借助docker-maven-plugin

插件有3种,分别是

需要说明的是,本文中连接远程docker服务器未启用TLS,具有安全风险。

5,推送镜像

docker-maven-plugin已经支持自动推送镜像到公开或私有仓库。下面说明手动推送过程

首先,在docker服务器登录阿里云docker镜像仓库,输入密码登录。

docker login --username=<用户名>  registry.cn-shanghai.aliyuncs.com

其次,执行命令推送镜像。例如:

docker push registry.cn-shanghai.aliyuncs.com/00fly/h2:1.4.200

三、使用比较

方式运行环境优劣说明
docker build服务器docker环境环境依赖最少
docker compose build服务器docker-compose环境依赖docker/docker-compose,编排文件职责不单一
docker-maven-plugin本地连接远程docker环境灵活,java工程编译时绑定

到此这篇关于Docker容器镜像生成的三种方法详解的文章就介绍到这了,更多相关Docker容器镜像生成内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文