docker之dockerfile

什么是Dockerfile

    Dockerfile 是一个文本格式的配置文件, 用户可以使用 Dockerfile 来快速创建自定义的镜像,另外,使用Dockerfile去构建镜像好比使用pom去构建maven项目一样,有异曲同工之妙

Dockerfile的基本结构

  1. 基础镜像信息
命令说明
FROM指定哪种镜像为新镜像的基础镜像,比如ubuntu,centos
  1. 维护者信息
命令说明
MAINTAINER指明该镜像的作者和其电子邮件
  1. 镜像操作指令
命令说明
USER指定运行容器时的用户名或 UID,后续的 RUN 也会使用指定用户
WORKDIR在构建镜像时,指定镜像的工作目录
(COPY/ADD)COPY单纯的复制
ADD复制之后还会对文件进行提取和解压等操作
EVN配置坏境变量
EXPOSE指定容器要暴露的端口
VOLUME用来向基于镜像创建的容器添加数据卷
RUN在新镜像内部要执行的命令,比如安装一些软件、配置一些基础环境,可使用\来换行
  1. 容器启动时执行指令
命令说明
CMD比如:CMD [“java”,"-jar",“eureka-server-cluster.jar”,“spring.profiles=peer1”]
指定启动容器时执行的命令,每个 Dockerfile 只能有一条 CMD 命令。如果指定了多条命令,只有最后一条会被执行。如果用户启动容器时候指定了运行的命令,则会覆盖掉 CMD 指定的命令。
ENTRYPOINT配置容器启动后执行的命令,并且不可被 docker run 提供的参数覆盖。每个 Dockerfile 中只能有一个 ENTRYPOINT ,当指定多个时,只有最后一个起效

结论:ENTRYPOINT 不能覆盖掉执行时的参数,CMD 可以掉覆盖默认的参数

注1:各命令的详细使用见:资料1资料2

使用Dockerfile基于centos创建JDK8的镜像

  • 先换元
  1. 看一下自己之前是否安装过
    yum list wget

  2. 如果没有安装
    yum -y install wget

  3. mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak #备份Linux自带的EPEL源

  4. wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 下载yum

  5. yum clean all #清空缓存

4)yum makecache #更新本地YUM缓存

5)yum -y install lrzsz

安装完lrzsz软件后上传jdk安装包
在这里插入图片描述

  • 创建文件夹上传jdk的安装包,和在同级目录下编写Dockerfile文件
    touch Dockerfile

  • 编写 Dockerfile 文件
    vi Dockerfile

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

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

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

#4.一个复制命令,把jdk安装文件复制到镜像中,语法:ADD <src>... <dest>
ADD jdk-8u221-linux-x64.tar.gz /usr/local/java/

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

Dockerfile文件中的内容1、2可以自己更改镜像本版号和作者名及电子邮件,3、4可以自己更改路径
在这里插入图片描述

  • 执行Dockerfile文件,构建jdk8的镜像 (备注:依赖的基础镜像如果不存在,它会自动帮你下载)
    docker build -t jdk8:v1.0 .

    注1:-t jdk8:v1.0 给新构建的镜像取名为 jdk8, 并设定版本为v1.0
    注2:注意最后有个点,代表使用当前路径的 Dockerfile 进行构建
    在这里插入图片描述

  • 查看镜像
    docker images
    在这里插入图片描述

  • 创建并启动容器
    docker run -it -d --name tomcat02 jdk8:v1.0 /bin/bash
    在这里插入图片描述

  • 进入容器
    docker exec -it tomcat02 bash
    在这里插入图片描述

  • 检查是否有问题-
    javac 或者 java -version
    在这里插入图片描述

基于最小的操作系统Alpine的镜像构建容器

  • docker images

  • docker pull alpine (备注:Alpine Linux是一个轻型Linux发行版,被称为最小的操作系统)

  • docker images

  • docker ps -a

  • docker run -itd --name tomcat03 jdk:v2.0 /bin/sh (备注:使用alpine镜像创建一个tomcat01的容器)

  • docker ps -a

  • docker exec -it tomcat01 sh (备注:进入tomcat01的容器)

  • ls(可以看到也是一个类似linux的坏境的容器)(备注:查看一下,可以看到alpin麻雀虽小,五脏俱全)

总结

在这里插入图片描述

Docker部署Dockerfile是通过使用Docker来构建和运行镜像的一种方式。可以使用手动部署的方式来熟悉部署流程,也可以使用插件方式来编写Dockerfile文件。 对于手动部署,首先需要修改docker配置,开放远程部署(上传)端口。可以通过编辑docker.service文件,在ExecStart=后添加配置"-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock"来实现。 对于使用插件的方式,则是通过配置Dockerfile的命令参数来生成Dockerfile文件,并最终根据jar包和Dockerfile构建镜像。 在进行Docker部署之前,首先需要进行Docker的安装和部署。具体的流程包括配置Docker、测试Docker、镜像的分层以及镜像的构建。 Docker部署Dockerfile的具体步骤包括: 1. 配置Docker,确保远程部署(上传)端口已经开放。 2. 使用插件方式或手动方式编写Dockerfile文件。 3. 将需要的jar包和Dockerfile放置在同一个目录下。 4. 使用命令行工具进入到该目录,并执行docker build命令来构建镜像。 5. 根据构建后的镜像,运行相应的容器。 通过以上步骤,就可以成功部署Dockerfile并运行相应的容器。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [docker实战之Dockerfile构建部署项目(三)](https://blog.csdn.net/weixin_42322925/article/details/121697564)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [Docker 1 (安装部署、Dockerfile详解)](https://blog.csdn.net/qq_38664479/article/details/119488160)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值