Docker镜像制作

Copy on Write(写时复制)

Docker镜像实际上一个文件系统,但只有顶层可以读写。

Dockerfile是软件的原材料,Docker镜像是软件的交付品,而Docker容器则可以认为是软件的运行态。

从应用软件的角度来看,Dockerfile、Docker镜像与Docker容器分别代表软件的三个不同阶段,

Dockerfile面向开发,Docker镜像成为交付标准,Docker容器则涉及部署与运维,三者缺一不可,合力充当Docker体系的基石。

 

1.查看一类镜像

$ docker image ubuntu

 

2.查看一个镜像的详细信息

$ docker inspect ubuntu100

 

3.Docker镜像的制作方法:

1)使用Commit命令 (不推荐)

2) 使用DockerFile

 

4.使用Commit制作镜像

$ docker run -i -t ubuntu:lastest /bin/bash

$ apt-get update

$ apt-get install apache2

$ docker commit [container] [newcontainername]

 

5.使用DockerFile制作镜像

1)创建static_web文件,创建文件Dockerfile,内容如下:

 # Version: 0.0.1

FROM ubuntu:14.04

MAINTAINER edison "xiangxingyong@qq.com"

RUN apt-get update

RUN apt-get install -y nginx

RUN echo 'Hello,edison' \

       >/usr/share/nginx/html/index.html

EXPOSE 80

橙色部分全部使用大写字母。

 

2)Docker执行Dockerfile文件的流程如下:

  • Docker从基础镜像运行一个容器。
  • 执行一条指令,对容器做出修改。
  • 执行类似Docker Commit的操作,提交一个新的镜像层。
  • Docker再基于刚提交的镜像运行一个新容器。
  • 执行Dockerfile中的下一条指令,直到所有指令都执行完毕。

 

3)Docker build命令执行上下文。

$ docker build -t="docker/static_web" .

 

4)从新镜像启动容器

$ docker run -d -p 80 --name static_web docker/static_web nginx -g "daemon off;"

-d选项表示以分离(detached)的方式在后台运行。

nginx -g "daemon off;"是在容器中执行的命令,启动nginx来作为Web服务器。

-p 用来控制Docker在运行时应该公开那些网络端口给外部宿主机。

可以指定外部宿主机的具体端口号来映射容器公开的端口。例如:-p 10000:80

如果不指定外部宿主机的具体端口,Docker会选择49000~49900之间的随机端口。

 

5)查看Images的历史信息

$ docker history docker/static_web

 

posted @ 2016-11-16 16:18  Edisonxiang  阅读(326)  评论(0编辑  收藏  举报