Docker容器镜像生成的三种方法详解
一、简要概述
容器化部署, 生成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种,分别是
- com.spotify.docker-maven-plugin 已停更,官方建议dockerfile-maven-plugin
- com.spotify.dockerfile-maven-plugin 近两年无更新,不支持操作容器
- io.fabric8.docker-maven-plugin 支持直接操作容器,且仍在持续更新,推荐使用
需要说明的是,本文中连接远程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容器镜像生成内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Windows Server 2016 安装 Docker的过程及遇到问题
若要在 Windows Server 上安装 Docker,可以使用由 Microsoft 发布的 OneGet 提供程序 PowerShell 模块,接下来通过本文给大家介绍Windows Server 2016 安装 Docker的过程及遇到问题,一起看看吧2021-09-09


最新评论