创建docker镜像的三种方法,分别是基于已有的容器创建、基于本地模板创建、以及dockerfile创建。

1.基于以有容器创建镜像。

基于已有的容器创建主要是使用docker commit命令。实质就是把一个容器里面运行的程序以及该程序的运行环境打包起来生成新的镜像。

命令:docker commit 选项 容器ID/名称 仓库名称:标签

常用的选项:

-m:说明信息

-a:作者

-p:生成过程中停止容器的运行(一般不会使用)

docker commit -m "this is a test image" -a "duzhe" mytomcat testimg:1.0

sha256:aa675b1e538c0463c4d0df45e8be34c7cfe71225ec896009b0ee7a754b3db283

2.基于本地模板镜像创建:

通过导入操作系模板文件可以生成镜像,模板可以从OPENVZ开源项目下载,下载地址为:https://wiki.openvz.org/Download/template/precreated


Cat 镜像包 | docker import - 生成的镜像名:标签

cat ubuntu-12.04-x86_64-minimal.tar.gz | docker import - myubuntu:1

sha256:17dccdf9e0a761de3eb582d5ca370377aa602e0881e58ce07c76cf6223904bcd

3.用dockerfile生成镜像:

Dockerfile结构的四个部分:基本镜像信息维护者信息镜像操作指令容器启动执行指令

3.1建立工作目录:

mkdir dockerdir
cd dockerdir

3.2创建并编写dockerfile文件:

FROM centos:7
MAINTAINER duzhe
ENV PATH $PATH:/usr/local/nginx/sbin
WORKDIR /usr/local/nginx
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

3.3编写执行脚本文件:

vim run.sh

#!/bin/bash
rm -rf /run/httpd/*
exec /usr/sbin/apachectl -D FOREGROUND

3.4创建测试页面:

echo “then is httpd”>index.html
 ls
Dockerfile index.html run.sh

3.5使用dockerfile生存镜像文件:

命令docker build 选项 路径
常用选项:
-t:指定镜像的标签选项。

docker build -t centos:1.0 .

3.6使用新的镜像运行容器:

将容器中的暴露端口映射到宿主机上端口号为8888

docker run -it -d -p 8888:80 centos:1.0 bash
c3b0432591612bf0697404e4044eeb45d42e072ea27388e8b498697a2ebb7436