资讯专栏INFORMATION COLUMN

Dockerfile 基础实战:构建基础的 ubuntu14.04 镜像

Jason_Geng / 3529人阅读

摘要:但是看了下,里面的软件源还是官方的,而且没有安装,所以就打算自己写一个,用它来构建适合自己的基础镜像。我事先配置好的,都是些基础的配置。添加的文件必须以构建上下文为根目录来找,不能超出构建上下文的范围。

  

我们可以从Docker Hub上下载官方仓库中的镜像,我自己就下载了ubuntu镜像,只有188M左右,很小巧了。但是看了下,里面的软件源还是官方的,而且没有安装vim,所以就打算自己写一个Dockerfile,用它来构建适合自己的ubuntu基础镜像。

languagedeb http://archive.ubuntu.com/ubuntu/ trusty main restricted
deb-src http://archive.ubuntu.com/ubuntu/ trusty main restricted
...................
构建上下文

build context,一个自定义的文件夹,里面放置Dockerfile和一些需要的文件。比如我的:

Dockerfile...这个是必须的

sources.list...自己在官方社区找的ubuntu14.04的源

vimrc...安装好vim后用到的配置文件。我事先配置好的,都是些基础的配置。

language.
├── baseimage
│   ├── Dockerfile
│   ├── README.md
│   ├── sources.list
│   └── vimrc
Dokerfile

制作image有两种方法:

从现有容器通过commit命令创建

dockerfile中不方便的操作可以在容器中操作然后提交

没有批量启动容器的需要

自己学、习练习,不需要移植

利用Dockerfile构建

方便,灵活,可移植

适合部署大量的镜像和容器

Dockerfile基础

"#"表示注释,一般Dockerfile第一行注释容器的基本信息和版本。

Dockerfile以命令:参数为基本构建语句,命令全部大写,后面的参数视命令而定

FROM,必须是第一个命令项,表示我的镜像是以哪个镜像为基础构建的

languageFROM ubuntu

MAINTAINER,后面接构建这的姓名和邮箱,方便联系

languageMAINTAINER adolphlwq 

LABEL,用键值对的方式来指定image的元数据

languageLABEL Description="it is used as a basic image for DuoHuoStudio and my study.I will update and install vim." Vendor="Basic image"

ADD,在构建时向Docker daemon传递文件

languageADD sources.list /etc/apt/

RUN,接操作和命令sudo apt-get install -y vim

languageADD sources.list /etc/apt/ 

CMD,构建成功的镜像第一次启动时默认启动的命令

CMD只有1条,一般默认在Dockerfile的最后

如果有多个CMD,只有最后一个起作用

CMD会被docker run ..后面的命令覆盖

languageCMD ["/bin/bash"]

ENV,设置环境变量

languageENV REFRESHED_AT 2015-05-18

构建命令
languagecd baseimage(构建上下文文件夹)
docker build -t="duohuosrudio/ubuntu:14.04_64_base_image" .

docker build-t表示容器的名字
duohuosrudio/ubuntuduohuostudio表示仓库名(不允许大写),ubuntu表示镜像名。
ubuntu:14.04_64_base_image后的14.04_64_base_image是标签,如果没有指定,默认的是latest

构建过程:

实践中遇到的错误

apt-get upgradeapt-get install vim都要加上** -y**选项,不然会报错

ADD后面必须接两个参数,ADD ... 表示要添加的文件,表示文件添加到哪里。

ADD添加的文件必须以构建上下文为根目录来找,不能超出构建上下文的范围。

如果除错停止构建了也不要担心,Docker会把构建过程中的文件都缓存起来,再次构建时会从缓存的地方开始,节省时间。

除错停止后docker images会出现一个只有IMAGE ID的镜像,这个就是构建失败后留下的缓存,我们可以通过image id来运行这个镜像,然后执行除错的命令来检查为什么出错!(下图的最后1行)

languageadolph@geek:~/programs/DockerWorkspace/dockerfile/baseimage$ docker images
REPOSITORY               TAG                   IMAGE ID            CREATED             VIRTUAL SIZE
test/ubuntu              14.04_64_base_image   e9390454465c        14 hours ago        269.1 MB
test2/ubuntu             14.04_64_base_image   e9390454465c        14 hours ago        269.1 MB
duohuostudio/ubuntu      14.04_64_base_image   e9390454465c        14 hours ago        269.1 MB
                                   f6efc4dac25a        16 hours ago        269.1 MB

总结
languagedocker build -t="duohuostudio/ubuntu:14.04_64_base_image" .

这条命令的最后一个参数是用来指定Dockerfile的路径,千万不要忘记。

dockerfile已经上传到 github 地址

镜像也已经上传到Docker Hub上了,可以通过下列命令下载镜像

docker pull adolphlwq/ubuntu

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/26412.html

相关文章

  • Docker 实践(二):使用教程

    摘要:以下为几个常用的指令依赖镜像所有都必须以命令开始,表示其依赖的镜像。的端口不使用公有端口。与命令使用数组语法。推荐阿里云,毕竟有钱,稳定。参数表示后台守护进程运行容器。执行,运行应用。 docker 即容器 一些概念 Docker Registry Docker 远程镜像仓库 DockerHub DaoCloud / Aliyun Docker Images Docker Imag...

    Neilyo 评论0 收藏0
  • 使用docker搭建开发环境

    摘要:我的主力机是下面有太多提升效率的软件但是开发的时候不得不使用就单单开发而言我还是喜欢使用所以就造成了我得在下面使用虚拟机这是最开始的办法后面得知有这个东西之后用了一阵子感觉还不错但是我使用的时候动不动就会出现一些问题所以一怒之下决定学学然后 我的主力机是windows,windows下面有太多提升效率的软件.但是开发的时候不得不使用linux.就单单开发而言.我还是喜欢使用linux....

    caozhijian 评论0 收藏0
  • 从零开始学习 Docker

    摘要:此命令下载测试镜像并在容器中运行它。国内很多云服务商都提供了加速器服务,例如阿里云加速器注册用户并且申请加速器,会获得如这样的地址。获取镜像阿里云镜像库上有大量的高质量的镜像可以用,这里我们就说一下怎么获取这些镜像并运行。 showImg(https://segmentfault.com/img/remote/1460000012924583); 这篇文章是我学习 Docker 的记录...

    lily_wang 评论0 收藏0
  • Docker 搭建靶场利器

    摘要:后联合广东,致力于北伐,他所统领的七军被誉为钢军,奠定了南京国民政府的基础,龙潭一役,奠定了统一全国的基础。这本书爆出很多历史事实,比如北伐,国民党内部纷争,蒋介石的为人。 最近在看《李宗仁回忆录》,断断续续看了一个星期,因白天没时间,只能抽出晚上的时间,荒废了好多学习的时间,自觉惭愧。本来就对历史非常感兴趣,而李宗仁的这个回忆录,写得真是太好啦,每天晚上回来,本想着打开书就看一会,然...

    Jeff 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<