docker之程序应用打包成镜像

658 阅读2分钟

Java为例

以前的步骤:

  • SpringBoot打包成可执行jar
  • 把jar包上传给服务
  • 服务器运行java -jar jar包名

使用docker:
所有机器都安装Docker,任何应用都是镜像,所有机器都可以运行

步骤:

  1. java程序打包成jar包
  2. 创建Dockerfile文件,写入以下内容
# 基础环境,是程序运行所需的基础镜像,这里选用linux的镜像
FROM openjdk:8-jdk-slim
# 标签,表示作者
LABEL maintainer=warson

# 这里表示复制  target/*.jar 到容器的/app.jar
# *.jar的写法是方便,这需要我们确保target目录下只有一个jar包
COPY target/*.jar   /app.jar

# 启动容器的命令,表示运行app.jar,因为上面已经复制了一个jar包到容器的/app.jar包了
ENTRYPOINT ["java","-jar","/app.jar"]
  1. 构建镜像 在Dockerfile所在的目录下执行:
# -t 表示构建的镜像名以及版本
# . 表示根目录,COPY命令以根目录去找target/*.jar,所以我们写 . 表示我们需要确保target目录是与Dcokerfile是在同一目录的
docker build -t java-demo:v1.0 .
  1. 启动镜像 构建完镜像后,就可以使用docker images命令去查看本地的镜像了。 启动镜像创建容器:
docker run -d -p 8080:8080 --name myjava-app java-demo:v1.0 
  1. 推送镜像 只要把当前的镜像推送到自己的dockerhub仓库,那么以后就可以随时地拉取这个镜像,运行这个java程序了,不需要再重新配置java环境。
# 登录docker hub
docker login

#给旧镜像起名,leifengyang要改为你自己的github账号
docker tag java-demo:v1.0  leifengyang/java-demo:v1.0

# 推送到docker hub,leifengyang/java-demo:v1.0就是完整的dockerhub仓库地址,docker就是根据这个地址来推送的
docker push leifengyang/java-demo:v1.0

# 别的机器
docker pull leifengyang/java-demo:v1.0

# 别的机器运行
docker run -d -p 8080:8080 --name myjava-app java-demo:v1.0 

以GO为例

TODO...