通过Dockerfile构建Docker镜像的方法步骤

 更新时间:2021年02月19日 11:11:29   作者:fengbingchun  
这篇文章主要介绍了通过Dockerfile构建Docker镜像的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

Dockerfile是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建.

Dockerfile支持Shell类的行尾添加"\"的命令换行方式,以及行首"#"进行注释的格式.

使用Dockerfile构建Docker镜像时注意事项:

(1).尽量选取满足需求但较小的基础系统镜像;

(2).清理编译生成文件、安装包的缓存等临时文件;

(3).安装各个软件时候要指定准确的版本号,并避免引入不需要的依赖;

(4).添加.dockerignore文件或使用干净的工作目录.

Dockerfile常用指令:

(1).FROM:用于指定要构建的镜像的基础镜像,它通常是Dockerfile中的第一条指令;

(2).LABEL:用于添加标签来帮助组织镜像、记录许可信息、辅助自动化构建等,标签是键值对,以字符串存储;

(3).RUN:用于在镜像中执行命令,这会创建新的镜像层,每个RUN指令创建一个新的镜像层,永远将apt-get update和apt-get install组合成一条RUN;

RUN指令有两种格式:

A.shell格式:RUN <命令>,就像直接在命令行中输入的命令一样;

B.exec格式:RUN ["可执行文件", "参数1", "参数2"];

(4).COPY:支持简单将本地文件拷贝到容器中,通常使用COPY指令将应用代码赋值到镜像中;

(5).EXPOSE:用于记录应用所使用的网络端口;

(6).ENTRYPOINT:用于指定镜像以容器方式启动后默认运行的程序;

(7).ENV:为容器中安装的程序更新PATH环境变量.

下面的Dockerfile用于在容器中可以直接编译执行https://github.com/fengbingchun/Messy_Test:

FROM ubuntu:16.04
LABEL maintainer="FengBingchun fengbingchun@163.com" \ 
   version="1.0" \
   description="dockerfile test"
RUN dep_items='git cmake g++-5' \
  && apt-get update \
  && apt-get install -y $dep_items \ 
  && ln -s /usr/bin/g++-5 /usr/bin/g++ \
  && rm -rf /var/lib/apt/lists/*

构建镜像,执行以下命令后会成功生成名字为fengbingchun/ubuntu:16.04的镜像:

docker build -t fengbingchun/ubuntu:16.04 .

通过挂载主机目录,新建容器test,执行以下命令:

docker run -it -P --name test --mount type=bind,source=e:\GitCode\docker,target=/home/fengbingchun fengbingchun/ubuntu:16.04 /bin/bash

然后,在容器内,cd到/home/fengbingchun目录下,clone Messy_Test执行以下命令:

git clone https://github.com/fengbingchun/Messy_Test

然后cd到cd Messy_Test/prj/linux_cmake_CppBaseTest目录下,依次执行如下命令

./build.sh
./build/CppBaseTest

执行结果如下图所示,说明通过Dockerfile构建的镜像可以正常编译执行Messy_Test:

保存镜像fengbingchun/ubuntu:16.04到tar包,执行以下命令:

docker save -o ubuntu_16.04.tar fengbingchun/ubuntu:16.04

将ubuntu_16.04.tar拷贝到ubuntu系统下,从tar包加载一个镜像,执行以下命令:

docker load -i ubuntu_16.04.tar

然后执行windows上类似的操作,在新创建的容器test中编译、执行Messy_Test,依次执行如下命令:

docker run -it -P --name test --mount type=bind,source=/home/xxxx/Disk/GitHub/docker,target=/home/fengbingchun fengbingchun/ubuntu:16.04 /bin/bash
cd /home/fengbingchun/
git clone https://github.com/fengbingchun/Messy_Test
cd Messy_Test/prj/linux_cmake_CppBaseTest/
./build.sh
./build/CppBaseTest

执行结果如下图所示:说明在Windows上生成的镜像打包后,在Ubuntu上load后可正常使用.

到此这篇关于通过Dockerfile构建Docker镜像的方法步骤的文章就介绍到这了,更多相关Dockerfile构建Docker镜像内容请搜索程序员之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持程序员之家!

相关文章

  • 初次使用Docker的体验笔记总结

    初次使用Docker的体验笔记总结

    这篇文章主要介绍了初次使用Docker的体验笔记总结,对初学Docker具有一定的参考价值,有需要的可以了解一下。
    2016-11-11
  • Docker中的images存储路径修改

    Docker中的images存储路径修改

    这篇文章主要介绍了Docker中的images存储路径修改方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • docker部署code-server的方法

    docker部署code-server的方法

    这篇文章主要介绍了docker部署code-server的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • Dockerfile构建Redis镜像的方法实现(yum方式)

    Dockerfile构建Redis镜像的方法实现(yum方式)

    本文主要介绍了Dockerfile构建Redis镜像的方法实现(yum方式),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • docker安装nacos的详细教程

    docker安装nacos的详细教程

    这篇文章主要介绍了docker安装nacos,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • docker-compose统一管理多个容器使用详解

    docker-compose统一管理多个容器使用详解

    这篇文章主要为大家介绍了docker-compose统一管理多个容器使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • Docker部署mysql远程连接 解决2003的问题

    Docker部署mysql远程连接 解决2003的问题

    这篇文章主要介绍了Docker部署mysql远程连接 解决2003错误的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Docker 容器之间的互相通信实现示例

    Docker 容器之间的互相通信实现示例

    本文主要介绍了Docker 容器之间的互相通信实现示例,通过创建自定义网络,你可以轻松地在 Docker 容器之间建立通信,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-01-01
  • docker search命令的具体使用

    docker search命令的具体使用

    本文主要介绍了docker search命令的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • Docker挂载资料卷部署Nginx

    Docker挂载资料卷部署Nginx

    这篇文章介绍了Docker挂载资料卷部署Nginx,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-01-01

最新评论

?


http://www.vxiaotou.com