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服务。
还没有评论,来说两句吧...