Dockerfile 学习笔记

Dockerfile

Dockerfile 的作用是用来构建 docker 镜像(image),使用 Dockerfile 我们可以构建出更符合自己需要的镜像,而编写好的 Dockerfile 我们可以多次使用。

Dockerfile 中的保留字

Dockerfile 中的保留字在使用时全部需要大写,保留字不能再作为属性的值使用。

  • FROM:指定当前镜像是基于哪个镜像来构建的
  • RUN:构建镜像是需要运行的指令
  • EXPOSE:当前容器对外暴露的端口
  • WORKDIR:指定容器创建后,终端默认的进入的路径(PATH)
  • EVN:用来定义在构建过程中设置环境变量,使用$引用
  • ADD:把宿主机目录下的文件和目录拷贝到容器,如果是 tar 文件则会镜像自动解压,如果 ADD 的第一个参数是URL,则会下载文件然后拷贝到容器
  • COPY:把宿主机目录下的文件拷贝到容器,不对被拷贝进行操作,功能通 cp 命令
  • VOLUME:设置容器容器数据卷,用于容器中数据持久化存储
  • CMD:指定一个容器启动时运行的命令,使用 docker run 命令最后加的命令会覆盖 CMD 指定的命令
  • ENTRYPOINT:指定一个容器启动时要运行哪个命令,功能同 CMD 但不能被覆盖。通常与CMD配合使用,注意:配合使用时要用数组方式执行命令,即 ENTRYPOINT ["java","-jar"]

Dockerfile 示例

构建 springboot 镜像,启动时运行 springboot 项目

FROM:openjdk:8-jre
# 指定进入容器默认进入路径
WORKDIR /app
# 拷贝jar包并重命名
ADD demo-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-jar"]
CMD ["app.jar]

构建后端 api 使用的镜像

FROM centos:7
# 指定工作目录(进入容器的默认目录)
WORKDIR /project
# 在 centos7 中安装相关依赖
RUN yum -y update \
    && yum -y install vim \
    && yum -y install git \
    && yum -y install java-1.8.0-openjdk-devel.x86_64 \
    && yum install -y maven \
    && mkdir ~/.m2
# 配置 maven
RUN echo '<?xml version="1.0" encoding="UTF-8"?><settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"><mirrors><mirror><id>alimaven</id><mirrorOf>central</mirrorOf><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/repositories/central/</url></mirror></mirrors></settings>' > ~/.m2/settings.xml

构建 nvm(node version manage)镜像

# 依赖centos环境
FROM centos:latest
# 指定工作目录(进入容器的默认目录)
WORKDIR /project
#安装vim和git环境
RUN yum -y update \
    	&& yum -y install vim \
	&& yum -y install git \
	&& git --version \
	&& cd ~/ \
	&& git clone https://hub.fastgit.org/nvm-sh/nvm.git .nvm \
	&& echo "source ~/.nvm/nvm.sh" >> ~/.bashrc && source ~/.bashrc

实践总结:

  • 通常在 Dockerfile 中尽量少使用 RUN 命令,因为每个 RUN 命令会对容器包装一层
  • 通常在基于某个镜像构建我们自己的镜像时,可以先用该镜像创建一个容器,在里面把软件的安装过一遍,数据卷映射规划一遍,最后再编写Dockerfile,这样思路会更清晰一点

使用 Dockerfile 构建镜像

通常我们将要构建镜像要用的 Dockerfile、配置文件、数据等放在一个文件夹里,然后在这个文件夹中运行 docker build 命令。

# 使用默认 Dockerfile, 比如构建 api 容器, -t 设置镜像标签,这里 api 镜像的标签为 api:v1, 最后要加一个路径,(.)表示当前路径 
docker buil -t api:v1 .

# 使用 Dockerfile-api 构建 api 镜像,-f 指定 Dockerfile,-t 设置标签
docker build -f  Dockerfile-api -t api:v1 .

Dockerfile构建镜像的流程

image.png

使用镜像

# 运行容器,-i 交互运行 -t tty终端 --name 设置容器启动的名字,api:v1指定使用的镜像,"/bin/bash" 为非必须参数
docker run -itd --name my-api api:v1 /bin/bash
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然,我会帮助你记录和学习Docker的知识点。下面是一份Docker学习笔记: 1. 什么是Docker? Docker是一个开源的容器化平台,可以帮助开发者创建、打包、部署和运行应用程序,使应用程序可以在不同的环境中无缝运行。 2. Docker的优势有哪些? - 轻量化:Docker容器与虚拟机相比更加轻量级,启动和停止速度更快。 - 可移植性:Docker容器可以在任何支持Docker的平台上运行,无需担心环境不一致的问题。 - 隔离性:Docker使用容器技术进行隔离,每个容器之间相互独立,不会相互影响。 - 效率:Docker可以将应用程序及其依赖项打包为一个镜像,部署和扩展非常方便。 3. Docker常用的概念: - 镜像(Image):一个只读的模板,包含了运行应用程序所需的所有文件和依赖项。 - 容器(Container):基于镜像创建的可执行实例,可以运行、停止、删除等操作。 - 仓库(Registry):用于存储和分享镜像的地方,常用的有Docker Hub。 - Dockerfile:用于定义镜像构建过程的文本文件,包含了一系列的指令和配置。 4. Docker基本使用命令: - `docker pull <image-name>`:从仓库中拉取指定镜像。 - `docker run <image-name>`:创建并运行一个新的容器。 - `docker ps`:查看当前正在运行的容器。 - `docker stop <container-id>`:停止指定容器的运行。 - `docker rm <container-id>`:删除指定容器。 - `docker rmi <image-name>`:删除指定镜像。 5. Docker常见应用场景: - 镜像管理:可以通过Docker镜像进行应用程序开发、测试和部署。 - 微服务架构:通过容器化实现应用程序的模块化,方便管理和扩展。 - CI/CD:在持续集成和持续部署过程中使用Docker来构建、测试和发布应用程序。 这些是Docker学习过程中的一些基础知识点和常用命令。希望对你有帮助!如果你还有其他问题,可以随时问我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值