1.前言简介
在看本文之前 需要有
基础的docker知识
了解 镜像与容器 的区别
同时也需要了解 宿主机与容器之间的关系
例如在端口与目录挂载等位置使用
1.1 专栏传送门
1.1.2 上文传送门
2. docker镜像制作一: jdk
2.1 制作jdk镜像
2.1.1 准备工作
下载
centos7.9
操作系统镜像(就是一个文件系统)
创建文件夹 (任意)
进入文件夹 cd
编辑Dockerfile
文件
docker pull centos:7.9.2009
mkdir -p /usr/local/src/docker/jdk8
cd /usr/local/src/docker/jdk8
vim Dockerfile
2.1.2 jdk镜像的Dockerfile
注意Dockerfile 文件名称
#!/bin/bash
FROM centos:7.9.2009
MAINTAINER pingzhuyan
# ADD 拷贝文件或目录到容器中,如果是URL或压缩包便会自动下载或自动解压 (注意:拷贝的文件要跟Dockerfile文件同级)
# 将jdk1.8添加到/usr/local/pro/jdk目录下并解压
ADD jdk-8u65-linux-x64.tar.gz /usr/local/jdk
ENV JAVA_HOME /usr/local/jdk/jdk1.8.0_65
ENV JRE_HOME /usr/local/jdk/jdk1.8.0_65/jre
ENV PATH $JAVA_HOME/bin:$PATH
2.1.3 基于Dockerfile构建镜像
docker build -t 镜像名称
.
#注意这个点
docker build -t jdk8-image .
2.1.4 docker使用镜像运行容器
基于
jdk8-image
运行容器
指令如下
docker run -di --name=jdk1.8 jdk8-image
2.1.5 进入jdk1.8容器内测试
进入后 看到Java版本即为成功
指令如下
docker exec -it jdk1.8 bash
java -verion #执行成功
3. docker镜像制作二: java镜像(jar包)
3.0 准备工作
创建文件夹存放jar包(使用jenkins等打版工具上传)
指令如下 如上图 (涂掉的地方是 3.2 方法二使用
先忽略
)
mkdir -p /usr/local/src/docker/jar/test
3.1 制作方法一: 基于jdk8-image镜像一键启动jar容器
3.1.1 创建并启动jar容器
设置
本目录 与 容器内自己挑选的位置
挂载
示例: -v /usr/local/src/docker/jar/test:/usr/local/jar
设置个开机自启 --restart=always
基于jdk8-image镜像启动容器
docker run -d -p 9090:9090 --restart=always \
-v /usr/local/src/docker/jar/test:/usr/local/jar \
--name pzy_test.jar jdk8-image java -jar -Dserver.port=9090 /usr/local/jar/pzy_test.jar
3.2 制作方法二: Dockerfile制作java的镜像并创建运行容器
3.2.0 准备工作
创建Dockerfile
cd /usr/local/src/docker/jar/test
vim Dockerfile
如图所示:
3.2.1 Dockerfile制作java的镜像
Dockerfile逻辑:
- 基于
本地jdk8-image
镜像(Java环境)- 设置
工作目录
/usr/local/src/docker/jar/test- 将当前目录下的renren.jar复制到容器的任意目录中 /usr/local/src/docker/jar/test/pzy_test.jar
- 暴露应用的端口 默认8080
- 一个日志 查看Java的path是否正常
- 启动执行命令cmd
# 使用本地镜像
FROM jdk8-image
# 设置工作目录为 (自定义)
WORKDIR /usr/local/src/docker/jar/test
# 将当前目录下的renren.jar复制到容器的任意目录中
COPY pzy_test.jar /usr/local/src/docker/jar/test/pzy_test.jar
# 暴露应用的端口 默认8080
EXPOSE 9090
RUN which java || echo "Java not found in PATH"
RUN echo $PATH
# 容器启动时执行的命令
CMD ["java", "-jar", "/usr/local/src/docker/jar/test/pzy_test.jar"]
构建docker镜像制作pzy_test-image
docker build -t pzy_test-image .
3.2.2 docker创建运行jar容器
目录挂载 设置开机自启 使用pzy_test-image 镜像 端口9091
docker container logs -f pzy_test.jar
#查询日志
docker run --name pzy_test.jar -p 9091:9090 \
-v /usr/local/src/docker/jar/test:/usr/local/src/docker/jar/test \
-d --restart=always pzy_test-image
4. 文章的总结与预告
4.1 本文总结
4.1.1 问题总结
有一些注意事项, 上面如果遇到问题, 先看看这里有没有对应的错误操作
- 镜像名字与容器名字不能相同 不然会出现各种问题
- 查看自己的jdk包解压后是什么名称 在制作jdk镜像时需要填写正确
- 不要认为在容器内修改文件后镜像会有变化, 镜像时静态的不会有变化(不对
请指出
哈)- 在容器的所有操作,记住
容器与宿主机
概念, 运行都是在容器目录下操作, 上传是宿主机挂载目录
4.2 下文预告
批量生成docker镜像并启动容器脚本, 结合jenkins使用
效果: git自动拉取, maven打版, 上传到指定文件夹, 根据脚本生成docker新镜像(保留之前),完成启动
@author: pingzhuyan
@description: ok
@year: 2024