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服务。 

发布了529 篇原创文章 · 获赞 287 · 访问量 147万+

猜你喜欢

转载自blog.csdn.net/feinifi/article/details/67062102
今日推荐