Dockerfile

Docker镜像原理:

  • docker镜像是由特殊的文件系统叠加而成
  • 最低端的是boofs,并使用宿主机的bootfs
  • 第二层是root文件系统rootfs,称为base image
  • 让再往上叠加其他的镜像文件
  • 统一文件系统(Union FileSystem)技术能够将不同的层整合成一个文件系统,为这些层提供了一个统一的视角这样就隐藏了多层的存在,在用户的角度看来,只存在个文件系统
  • 一个镜像可以放在另一个镜像的上面。位于下面的镜像称为父镜像,最底部的镜像成为基础镜像。
  • 当从一个镜像启动容器时,Docker会在最顶层加载一个读写文件系统作为容器

操作系统的组成部分:

  • 进程调度子系统
  • 进程通信子系统
  • 内存管理子系统
  • 设备管理子系统
  • 文件管理子系统
  • 网络通信子系统
  • 作业控制子系统

镜像制作:

容器转为镜像

docker commit 容器id 镜像名称:版本号  

docker save -o 压缩文件名称 镜像名称:版本号   #将镜像打包成压缩文件,可以发给测试人

docker load -i 压缩文件名称  #测试人解压文件

注意:如果是镜像卷的方式挂载的文件,则打包镜像压缩后镜像中挂载失效,但是文件是存在的

Dockerfile概念

  • Dockerfile 是一个文本文件
  • 包含了一条条的指令
  • 每一条指令构建一层,基于基础镜像,最终构建出一个新的镜像
  • 对于开发人员:可以为开发团队提供一个完全一致的开发环境,构建一个新的镜像开始工作了
  • 对于测试人员:可以直接拿开发时所构建的镜像或者通过Dockerfile文件
  • 对于运维人员:在部署时,可以实现应用的无缝移植

举例,一、基于centos基础镜像构建java应用镜像

1.上传jdk

创建文件夹,将jdk安装包上传到该目录下

mkdir -p /root/dockerfile/java

FROM centos:7
# 配置环境变量,JDK的安装目录
ENV JAVA_DIR=/usr/local
# 拷贝jdk和java项目的包
COPY ./jdk-8u131-linux-x64.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/app.jar
# 安装JDK
RUN cd $JAVA_DIR \
 && tar -xf ./jdk-8u131-linux-x64.tar.gz \
 && mv ./jdk1.8.0_131 ./java8
# 配置环境变量
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin
# 暴露端口
EXPOSE 8080
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar

3.生成镜像

#docker build -f 文件名 -t 镜像名 .代表从当前目录

docker build -f dockerfile_java -t myjava:1.0 .

4.验证镜像是否生成成功

docker images

5.启动容器

docker run --name myjava -d -p 8080:8080 myjava:1.0

二、通过java构建应用镜像

1.编写dockerfile

FROM java:8-alpine
COPY ./docker-demo.jar /tmp/app.jar
# 暴露端口
EXPOSE 8080
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar
 

2.生成镜像

#docker build -f 文件名 -t 镜像名 .代表从当前目录

docker build -f dockerfile_java2 -t myjava:2.0 .

3.验证镜像是否成功

docker images

4.启动容器

docker run --name myjava2 -d -p 8081:8080 myjava:2.0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值