如何将项目打包成 Docker 镜像并推送到 Docker Hub

如何将 Docker 镜像打包并推送到 Docker Hub

引言

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。本文将详细介绍如何将 Docker 镜像打包并推送到 Docker Hub,以便其他人可以轻松地拉取和运行你的镜像。

安装 Docker

首先,确保你已经在你的机器上安装了 Docker。如果没有安装,可以参考 Docker 官方文档 进行安装。

编写 Dockerfile

在你的项目目录中创建一个 Dockerfile,用于定义如何构建你的 Docker 镜像。以下是一个简单的示例:

bash 复制代码
## AdoptOpenJDK 停止发布 OpenJDK 二进制,而 Eclipse Temurin 是它的延伸,提供更好的稳定性
FROM eclipse-temurin:8-jre
LABEL authors="guanpeijia"
## 创建目录,并使用它作为工作目录
RUN mkdir -p /boot-demo
WORKDIR /boot-demo
## 将后端项目的 Jar 文件,复制到镜像中
COPY ./target/boot-demo.jar app.jar

## 设置 TZ 时区
ENV TZ=Asia/Shanghai
## 设置 JAVA_OPTS 环境变量,可通过 docker run -e "JAVA_OPTS=" 进行覆盖
ENV JAVA_OPTS="-Xms512m -Xmx512m -Djava.security.egd=file:/dev/./urandom"

## 应用参数
ENV ARGS=""

## 暴露后端项目的 8888 端口
EXPOSE 8888

## 启动后端项目
CMD java ${JAVA_OPTS} -jar app.jar $ARGS

解释 Dockerfile

这段 Dockerfile 主要用于构建一个基于 Eclipse Temurin JDK 8 的镜像,并部署一个 Java 应用程序,具体解析见代码注释。

构建 Docker 镜像

在包含 Dockerfile 的目录中运行以下命令来构建 Docker 镜像:

bash 复制代码
docker build -t your-username/your-image-name:tag .
  • your-username 是你在 Docker Hub 上的用户名。
  • your-image-name 是你给镜像起的名字。
  • tag 是镜像的标签,通常是版本号,例如 latest1.0.0
  • . 表示 Dockerfile 所在的当前目录。

示例

项目结构如下:

  1. 编写 Dockerfile
bash 复制代码
## AdoptOpenJDK 停止发布 OpenJDK 二进制,而 Eclipse Temurin 是它的延伸,提供更好的稳定性
FROM eclipse-temurin:8-jre
LABEL authors="guanpeijia"
## 创建目录,并使用它作为工作目录
RUN mkdir -p /boot-demo
WORKDIR /boot-demo
## 将后端项目的 Jar 文件,复制到镜像中
COPY ./target/boot-demo.jar app.jar

## 设置 TZ 时区
ENV TZ=Asia/Shanghai
## 设置 JAVA_OPTS 环境变量,可通过 docker run -e "JAVA_OPTS=" 进行覆盖
ENV JAVA_OPTS="-Xms512m -Xmx512m -Djava.security.egd=file:/dev/./urandom"

## 应用参数
ENV ARGS=""

## 暴露后端项目的 8888 端口
EXPOSE 8888

## 启动后端项目
CMD java ${JAVA_OPTS} -jar app.jar $ARGS
  1. 构建镜像
bash 复制代码
docker build -t qq719779232/boot-demo:v1.0.0 .

登录 Docker Hub

确保你已经注册并登录到 Docker Hub。如果你还没有账户,可以先去 Docker Hub 注册一个。

在终端中执行以下命令进行登录:

bash 复制代码
docker login

系统会提示你输入 Docker Hub 的用户名和密码。成功登录后,你会看到 Login Succeeded 的提示。

推送 Docker 镜像

登录成功后,使用以下命令将镜像推送到 Docker Hub:

bash 复制代码
docker push your-username/your-image-name:tag

示例

继续上面的例子:

bash 复制代码
docker push qq719779232/boot-demo:v1.0.0

验证推送结果

你可以通过 Docker Hub 的网页界面验证你的镜像是否成功推送。访问 Docker Hub 并登录你的账户,你应该能看到你推送的镜像。

拉取和运行镜像

其他人可以通过以下命令拉取并运行你的镜像:

bash 复制代码
 docker pull qq719779232/boot-demo:v1.0.0
bash 复制代码
docker run -p 8080:8080 qq719779232/boot-demo:v1.0.0

实时查询容器运行日志

bash 复制代码
docker logs -f --tail 100  boot-demo2

总结

通过以上步骤,你已经成功地将 Docker 镜像打包并推送到 Docker Hub。这不仅方便了你自己的部署和分发,也使得其他人可以轻松地使用你的应用。

希望本文对你有所帮助!如果有任何问题或建议,欢迎在评论区留言。

参考资料

相关推荐
MAVER1CK11 小时前
Install VNC in Docker container
运维·docker·容器
阿正的梦工坊13 小时前
Registry是什么意思?镜像仓库
docker
云达闲人15 小时前
搭建DevOps企业级仿真实验环境:003Proxmox 系统优化与国内源配置
运维·devops·服务器搭建·实验环境搭建·apt源配置·虚拟化运维·实验指南
LSL666_15 小时前
3 安装docker
运维·docker·容器
云达闲人15 小时前
搭建DevOps企业级仿真实验环境:002Proxmox 系统安装流程详解
运维·虚拟化·devops·kvm·proxmox·实验环境搭建·web管理
小江的记录本15 小时前
【微服务与云原生架构】DevOps、CI/CD流水线、GitOps 系统性知识体系
分布式·后端·ci/cd·微服务·云原生·架构·devops
LSL666_16 小时前
4 Docker 镜像安装与容器启动
运维·docker·容器
云达闲人16 小时前
搭建DevOps企业级仿真实验环境:001Proxmox VE 8.x 系统介绍与安装准备
运维·devops·proxmox·idrac·实验环境搭建
安逸sgr17 小时前
Hermes Agent + Obsidian 打造第二大脑(三):Docker 部署详解——从零到生产环境的完整实战指南!
运维·docker·容器·obsidian·hermes·hermesagent
小熊吃保安18 小时前
Excel下载变成了ZIP?Docker 容器里的 Content-Type 离奇失踪案
docker·go