Docker基础之十一: 镜像操作(Dockerfile)
Docker镜像(Dockerfile)
(对Docker感兴趣的朋友可以加我的微信ghostcloud2016,然后我把你加到我们的一个Docker爱好者群组里面。)
https://docs.docker.com/engine/reference/builder/
Docker可以通过Dockerfile的指令来编译Image,Dockerfile的主要好处是可以通过极少的空间来动态构建一个镜像,但是对国内用户而言,通常是比较通过的,因为下载国外的资源都比较慢。
1 Dockerfile 参考手册
1.1 如何使用
建立了Dockerfile之后,进入到所在目录,然后执行docker build.
通过-f选项,可以指定 Dockerfile:
$ docker build -f /path/to/a/Dockerfile .
通过-t选项可以为镜像添加一个tag:
$ docker build -t shykes/myapp .
build过程中,会一条一条的执行语句,比如:
$ docker build -t svendowideit/ambassador . Sending build context to Docker daemon 15.36 kB Step 0 : FROM alpine:3.2 ---> 31f630c65071 Step 1 : MAINTAINER SvenDowideit@home.org.au ---> Using cache ---> 2a1c91448f5f Step 2 : RUN apk update && apk add socat && rm -r /var/cache/ ---> Using cache ---> 21ed6e7fbb73 Step 3 : CMD env | grep _TCP= | sed 's/.*_PORT_\([0-9]*\)_TCP=tcp:\/\/\(.*\):\(.*\)/socat -t 100000000 TCP4-LISTEN:\1,fork,reuseaddr TCP4:\2:\3 \& wait/' | sh ---> Using cache ---> 7ea8aef582cc Successfully built 7ea8aef582cc
1.2 Dockerfile格式
# Comment INSTRUCTION arguments
指令是不区分大小写的,不过一般都使用大写来区分指令和参数。Dockerfile的第一句指令,必须是'FROM',这个后面紧跟的是基础镜像名称。#可以用来注释。
1.3 环境变量替换指令
环境变量指令是ENV,这个类似于编程语言的变量,只能在Dockerfile中使用。例如:
FROM busybox ENV foo /bar WORKDIR ${foo} # WORKDIR /bar ADD . $foo # ADD . /bar COPY \$foo /quux # COPY $foo /quux
其中支持变量应用的指令包括:
ADD COPY ENV EXPOSE LABEL USER WORKDIR VOLUME STOPSIGNAL ONBUILD
1.4 dockerignoe file
如果你的编译目录下有一些文件是不需要打包进Image的,你可以使用该文件进行过滤。重要涉及的指令是ADD和COPY。
1.5 FROM
FROM <image>
或者
FROM <image>:<tag>
或者
FROM <image>@<digest>
FROM指令指定了目标Image的基础镜像。tag是某个特定版本的镜像, digest是最新引入的一种ID,类似于唯一标示符。
1.6 MAINTAINER
MAINTAINER <name>
这个字段一目了然,就是设置作者。
1.7 RUN
RUN包含两种格式:
- RUN (shell格式,这种命令运行在shell中 /bin/sh -c)
- RUN ["executable", "arg1", "arg2"] (exec格式) RUN指令可以执行任何命令,并在当前image的顶层添加一个文件层,并提交到新的image中。由此我们可以看出,每一个RUN指令都会新加一层文件系统,虽然这个并不占多少空间,不过还是推荐尽可能多的减少指令。因此我们可以使用\来做换行处理。
不换行形式:RUN /bin/bash -c 'source $HOME/.bashrc ;\ echo $HOME'
exec模式:RUN /bin/bash -c 'source $HOME/.bashrc ; echo $HOME'
RUN apt-get dist-upgrade -y
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Docker基础之十: 存储镜像到Docker Hub
存储镜像到Docker Hub (对Docker感兴趣的朋友可以加我的微信ghostcloud2016,然后我把你加到我们的一个Docker爱好者群组里面。) 到目前为止,我们已经学习了docker的基本用法,包括拉取镜像,运行容器,编译镜像文件等等。接下来,我们将学习如何通过docker hub来简化你的操作,并提高你的工作效率。 Docker Hub是Docker的主仓库,由Docker公司进行维护。这个仓库里面包含了系统的官方镜像,同时提供简单的用户认证信息,以及其他的附属功能。默认情况下,这个仓库是免费的,但是你的所有镜像也是公开的。跟github类似,如果你需要一个私有的仓库,那么需要付费。 1 Docker Hub相关的命令 Docker 本身和仓库相关的命令包括docker search, pull, login, push。下面我们将详细介绍这些命令的用法。 1.1 用户创建和登录 如果你没有Docker Hub账号,你可以从https://hub.docker.com进行注册。注册成功后,通过下面命令进行登录: $docker login 这个命令将提示你输入用户名和...
- 下一篇
阿里云容器服务 - 提速云端应用部署与运维
阿里云容器服务 - 提速云端应用部署与运维 阿里云容器服务简介 什么是容器服务 什么是容器 容器服务解决了什么问题 容器服务架构 容器服务使用流程及场景 容器服务 阿里云容器服务(Container Service)是一种高性能可伸缩的容器管理服务。支持一键部署Docker集群,提供便利的基于容器的服务与应用的编排、部署及完整的生命周期管理。提供阿里云Docker镜像加速管理服务,支持基于Git等代码仓库集成。http://www.aliyun.com/product/containerservice 什么是容器 Docker是近年来发展最迅速的开源项目之一,短短两年多的时间,建立在Docker容器软件内的应用被下载超过5.35亿次。全球有超过400万人在使用Docker,约有150,000个在线应用靠Docker容器运行。 容器技术是一种轻量级的操作
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8编译安装MySQL8.0.19
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,CentOS8安装Elasticsearch6.8.6