docker容器之Dockerfile使用

本文介绍了如何使用Dockerfile构建一个安装了JDK的镜像,包括Dockerfile的基本结构、指令解释和实际操作步骤,如FROM、MAINTAINER、ADD和ENV等。还讲解了如何准备Docker环境,上传Dockerfile,构建镜像以及运行容器。
摘要由CSDN通过智能技术生成

一、Dokcerfile介绍

  • docker推荐使用dockerfile的定义文件和docker build命令来构建镜像。dockerfile使用基本的基于DSL(面向领域语言)语法的指令来构建Docker镜像。另一种创建Docker镜像的方式是使用docker commit,不推荐使用。
  • dockerfile有一系列指令和参数组成,每条指令都必须为大写,执行时按顺序从上到下执行,所以应该根据需要合理安排指令的顺序。
  • 使用建议: 精简镜像用途:尽量让每个镜像的用途都比较集中单一,避免构造大而复杂、多功能的镜像
  • 选用合适的基础镜像:容器的核心是应用,选择过大的父镜像(如Ubuntu系统镜像)会造成最终生成应用镜像的膝肿,推荐选用瘦身过的应用镜像或者较为小巧的系统镜像(alpine)

  • 基础镜像信息 :FROM 维护者信息
  • MAINTAINER 镜像操作指令: RUN、(COPY/ADD)、EXPOSE、WORKDIR、ONBUILD、USER、VOLUME等
  • 容器启动时执行指令: CMD、ENTRYPOINT

下面给大家演示一个通过Dockerfile的方式构建一个安装了jdk的镜像。

二、Docker准备

1、创建目录

创还能一个目录,目录里面创建一个Dokcerfile文件,文件名必须以大写开头,必须是Dockerfile,且不能有文件扩展名。不能更改任何,否则就无效了。
在这里插入图片描述
在这里插入图片描述

2、编辑Dockerfile文件

用记事本打开编辑,添加下面的配置。
在这里插入图片描述

#第一步:指定基础镜像
FROM ubuntu:18.04

#第二步:指定维护信息
MAINTAINER aq "lisensir@qq.com"

#第三步:复制jdk-8u151-linux-x64.tar.gz  /jdk1.8.0_151
ADD jdk-8u151-linux-x64.tar.gz /usr/local/java

#第四步:环境变量设置
ENV JAVA_HOME=/usr/local/java/jdk1.8.0_151
ENV PATH=${JAVA_HOME}/bin:$PATH

3、上传linux

1、打开Xftp
在这里插入图片描述

2、在虚拟机里面找一个目录来存放,把装有Dokcerfile和jdk的母录文件传过来。在这里插入图片描述
回到虚拟机查看一下有没有。
在这里插入图片描述

4、构建镜像

1、进入上传文件的那个目录下,使用命令做成可用的镜像容器。

docker build -t jdk8mage .

在这里插入图片描述
2、上面的命令执行完了之后,再查看一下,就能发现已经被做好成为镜像了。

docker images

在这里插入图片描述

5、通过镜像运行容器

docker run -it jdk8mage /bin/bash

在这里插入图片描述

  • 14
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker 中,一个已运行的容器是由一个镜像启动的,而镜像是由 Dockerfile 构建的。因此,一个已运行的容器并没有 Dockerfile,但是可以通过以下步骤找到镜像的 Dockerfile。 1. 查看容器的镜像 ID 首先,需要查看容器的镜像 ID。可以使用以下命令来列出所有正在运行的容器: ```bash docker ps ``` 然后,从输出结果中找到目标容器的 ID。 2. 查看镜像的历史记录 接下来,需要查看容器使用的镜像的历史记录。可以使用以下命令来列出镜像的历史记录: ```bash docker history <image ID> ``` 将 `<image ID>` 替换为容器的镜像 ID。 这个命令会输出镜像的历史记录,包括每一层的 ID、创建时间、创建者和指令。镜像的每一层都是由 Dockerfile 中的一条指令构建的。 3. 定位 Dockerfile 根据镜像的历史记录,可以定位到创建镜像的 Dockerfile 中的每一条指令。可以从镜像的最后一层开始,向上查找,找到第一条指令。这些指令的顺序和 Dockerfile 中的顺序是相反的,因为 Dockerfile 是从上往下执行的,而镜像的历史记录是从下往上构建的。 通过这些指令,可以推断出 Dockerfile 中的每一条指令。如果 Dockerfile 文件还存在于本地或者 Git 仓库中,就可以直接查看 Dockerfile 文件。如果 Dockerfile 文件已经丢失,可以根据镜像的历史记录重新构建 Dockerfile 文件。 总之,虽然不能直接查询一个已运行的容器Dockerfile,但可以通过查询容器的镜像历史记录来推断 Dockerfile 中的每一条指令,并根据需要重新构建 Dockerfile 文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值