IDEA 打包docker镜像(以打包Jdk8为例)

Posted 依然是那个墨镜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IDEA 打包docker镜像(以打包Jdk8为例)相关的知识,希望对你有一定的参考价值。

目录

1、Idea项目中准备jdk8打包docker镜像的相关文件

2、编写Dockeffile文件

3、编辑Configurations 添加Dockerfile

4、创建镜像


Idea中docker插件安装和docker服务的连接,参看另一篇博文:

Idea配置连接Linux环境的docker服务_依然是那个墨镜的博客-CSDN博客

1、Idea项目中准备jdk8打包docker镜像的相关文件

 文件说明:

  • java8u333:文件夹,包含制作jdk8的docker资源和配置文件
  • Dockerfile:制作镜像的配置文件
  • jdk-8u333-linux-x64.tar.gz:下载的jdk8的压缩包

2、编写Dockeffile文件

#1.指定基础镜像,并且必须是第一条指令    
FROM centos:7

#2.指明该镜像的作者和其电子邮件
MAINTAINER mj "mj@qq.com"

#3.在构建镜像时,指定镜像的工作目录,之后的命令都是基于此工作目录,如果不存在,则会创建目录
WORKDIR /usr/local/java

#4.一个复制命令,把jdk安装文件复制到镜像中,语法:ADD <src>... <dest>,注意:jdk*.tar.gz使用的是相对路径
ADD jdk-8u333-linux-x64.tar.gz /usr/local/java/

#5.配置环境变量
ENV JAVA_HOME=/usr/local/java/jdk1.8.0_333
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH

#容器启动时需要执行的命令
#CMD ["java","-version"]

3、编辑Configurations 添加Dockerfile

 

4、创建镜像

可以在idea中,运行编辑好的configuration,直接创建镜像。如下图,左下角窗口services中Images中,多了一个【jdk8u:1.8.333】的镜像。

如下是创建镜像成功的log信息:

也可以进入Linux,运行命令【docker images】,查看jdk8u333的镜像是否存在

 

 

 

docker镜像打包

以 .NET CORE 3.0重新打包加入gdiplus为例

镜像打包

1 查找镜像

1 从dockerhub拉取指定镜像

docker pull [images]:[version]

此处,我用dockerfile拉取的,我的命令

FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim

2 查看镜像信息列表

docker images

镜像是静态的,得到镜像id,880d85db3775

2 修改容器

1 将镜像运行起来
后台启动docker,并指定宿主机端口和docker映射端口。

docker run -p 8000:80 -tdi --privileged [imageID] [command]
-i:以交互模式运行容器,通常与 -t 同时使用;
-d:后台运行容器,并返回容器ID;
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--privileged 容器将拥有访问主机所有设备的权限

通常情况下 [command] 填下 /bin/bash 即可。

特殊情况下,如需要在centos镜像中使用systemctl,则应添加--privileged 并设置[command ]为 init。

我的命令

docker run -p 9699:80 -tdi --privileged 880d85db3775 /bin/bash

2 查看运行中的所有容器,得到容器id为

docker ps -a

3 当镜像通过run 启动后,便会载入到一个动态的container(容器)中运行,此时若需要进入终端交互模式:

sudo docker exec -it [containerID] /bin/bash

交互模式中,使用 ctrl+p+q 退出交互 保持运行,使用 exit命令退出并停止容器。

我的命令,在docker内安装gdiplus,安装后退出交互

sudo docker exec -it 12b89974bc2b /bin/bash
apt-get update && apt-get install -y libgdiplus libc6-dev && ln -s /usr/lib/libgdiplus.so /usr/lib/gdiplus.dll

4 在容器非交互模式下,通过命令来启动/停止已部署的容器服务。

docker start/stop

5 删除容器

docker rm [containerID]

6 删除镜像

docker rmi [imageID]

7 将宿主机内的指定文件传输至容器内部的指定地址

docker cp [YourHostFilePath] [containerID]:[DockerPath]

3 制作新镜像

1 将修改后的容器重新打包成镜像

docker commit [containerID] [ImageName]:[Version]

我的命令,打包后并查看

docker commit 12b89974bc2b wscore3:v1
docker images

将容器保存为新的镜像,并添加提交人信息和说明信息。

docker commit -a "ws" -m "wscore3v1" 12b89974bc2b wscore3:v1

参数说明
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。

3 提交镜像到云仓库

docker push [ImageID] [repertory_address]

参考

Docker常用命令大全
.NET Core 图片操作在 Linux/Docker 下的坑

以上是关于IDEA 打包docker镜像(以打包Jdk8为例)的主要内容,如果未能解决你的问题,请参考以下文章

IDEA集成Docker插件实现项目打包镜像一键部署与Docker CA加密认证

IDEA整合docker构建打包启动配置教程

IDEA整合docker构建打包启动配置教程

SpringBoot 部署 docker 打包镜像

IDEA安装Docker插件,并将微服务项目打包镜像上传到阿里云CentOS服务器

SpringBoot微服务项目打包成Docker镜像详解