docker使用Dockerfile构建镜像

    docker获取镜像,除了docker pull,docker load之外还可以通过自定义Dockerfile的方式通过命令docker build 来构建新镜像。通过这种方式可以很自由的定义想要安装的镜像,想要安装的软件,配置环境变量,更改配置文件等一切人为操作。先介绍Dockerfile中一些常见的语法:

  • FROM:来源,可以是本地已经安装的镜像,也可以是docker hub仓库中的镜像
  • MAINTAINER:维护者信息,一般输入个人邮箱
  • COPY|ADD:拷贝/添加本地文件文件夹到操作系统镜像容器中,这个很方便用户配置安装软件,不过COPY只是拷贝,而ADD不仅是拷贝,如果是压缩文件,它默认会解压,所以无须人工进行tar或者unzip命令来解压,强行解压还会报错,提示解压原始文件不存在。
  • WORKDIR:切换工作空间,类似于linux/dos命令的cd
  • RUN:运行linux命令,后面紧跟的是linux命令
  • ENV:设置环境变量
  • CMD:容器启动时执行的命令,有多个命令的话只会执行最后一个,该指令与ENTRYPOINT功能类似。

    通过Dockerfile构建的镜像是一个二次镜像,加工过的,在这个镜像里面,我们需要一个原始镜像,也就是FROM指定的镜像,在后面,我们可以进行拷贝文件,执行linux命令,暴露端口,最后还必须指定容器启动之后运行的命令CMD或者ENTRYPOINT,否则,构建镜像可能不会报错,但是一通过docker run,我们的镜像就是Exit状态。

    简单的示例:这个示例中,我们通过拷贝已经编译好的redis安装目录到centos7-ansible原始镜像中,构建一个redis的docker服务镜像。

    1、准备Dockerfile文件

    

    2、在Dockfile文件所在的目录,我们只需要存放Dockfile文件和redis.tar.gz压缩文件即可。 

    3、最后构建镜像的命令 docker build -t tagname:version . 。最后的一个点表示当前目录,这个参数必须指定一个目录,默认情况下就是当前目录,docker命令运行后, 会默认找到当前文件夹下的Dockerfile,Dockerfile中配置的关于ADD命令都是相对于这个目录。

    

    4、利用我们构建的镜像来启动一个docker服务。

      

    镜像启动正常,会显示Up状态,这时候,我们可以通过docker exec -it redis /bin/bash进入容器查看或者使用redis服务。 

使用 Docker Desktop 根据 `Dockerfile` 构建镜像,可以按照以下步骤操作: 1. **准备 Dockerfile** 确保在项目目录中已经存在一个 `Dockerfile`,例如以下是一个简单的示例,用于构建一个基于 Alpine 镜像并运行 `bc` 基准测试的脚本: ```dockerfile # A simple /bin/sh CPU benchmark using bc on alpine image FROM alpine RUN apk update && apk add bc WORKDIR '/payload' ADD benchmark_bc.sh . CMD ["sh", "benchmark_bc.sh"] ``` 2. **打开 Docker Desktop** 启动 Docker Desktop 应用程序,并确保 Docker 引擎正在运行。 3. **使用终端构建镜像** 在包含 `Dockerfile` 的目录中打开终端(或 PowerShell),然后运行以下命令来构建镜像: ```bash docker build -t your-image-name . ``` 其中 `your-image-name` 是你希望为镜像指定的名称。构建完成后,可以在 Docker Desktop 的 **Images** 选项卡中看到新构建镜像。 4. **运行容器** 构建完成后,可以使用以下命令运行容器: ```bash docker run -it your-image-name ``` 如果需要将容器映射到特定端口或挂载卷,可以使用 `-p` 和 `-v` 参数进行配置,例如: ```bash docker run -itd --name your-container-name -p 8080:8080 -v /host/path:/container/path your-image-name ``` 5. **验证构建结果** 在 Docker Desktop 的 **Containers** 选项卡中,可以看到正在运行的容器。可以点击进入容器的日志或终端,验证应用是否正常运行。 ### 使用 Docker Desktop 图形界面构建镜像 1. **导入项目** 在 Docker Desktop 中,可以通过 **Add Kubernetes resources** 或直接在本地文件系统中定位到包含 `Dockerfile` 的目录。 2. **构建镜像** 在 Docker Desktop 的 **Images** 选项卡中,点击 **Build Image** 按钮,选择包含 `Dockerfile` 的目录,并输入镜像名称,然后点击构建。 3. **查看构建日志** 构建过程中,Docker Desktop 会显示构建日志,确保没有错误。 4. **运行容器** 构建完成后,可以在 **Images** 列表中找到镜像,点击 **Run** 按钮来启动容器,并根据需要配置端口映射、环境变量等。 ### 注意事项 - 确保 Docker Desktop 已启用 **WSL2**(在 Windows 环境下),以便更好地支持 Linux 容器。 - 如果遇到网络问题,可以检查 Docker 的代理设置或尝试使用 `--network host` 参数。 - 如果需要构建多阶段镜像,确保 `Dockerfile` 中的语法正确,并且 Docker Desktop 支持多阶段构建功能[^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luffy5459

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值