首先我们得知道怎么下载镜像:

docker search 镜像名称                                         //电脑联网情况下在docker HUB里面查找镜像
docker pull 仓库服务器/仓库/镜像名称:标签         //通过查询到的镜像信息来下载镜像

第一个方法:在运行的container中安装service然后导出为image

整体思路:运行一个容器,在运行容器的基础上添加需要的服务,然后导出为新的images。

[root@localhost ~]#docker run -it docker.io/centos     //根据image运行容器
[root@845e8472f250 /]#                                 //运行容器的ID号
[root@845e8472f250 /]# yum -y install *****            //安装一些服务
[root@845e8472f250 /]# exit

命令中 i 、t 的参数可以docker run –help查看

现在的容器很明显已经被我们改动了,然后通过以下命令新建images:

docker commit -m “Description” -a “users <users@163.com>” 845e8472f250 centos:v1

-m:来指定提交的说明信息
-a:指定更新的作者和邮箱
命令中的一串数字是刚才运行container’s ID
数字后面的是新建镜像的repository:tag

Complete

第二个方法:基于dockerfile文件来创建新的image

整体思路:新建一个dockerfile,文件名必须是dockerfile,写入命令。创建完使用docker build命令来创建新image。

dockerfile文件中基本分为4部分:
1.注释部分
2.基础镜像地址
3.维护者信息
4.命令部分

mkdir -p /docker/httpd
cd /docker/httpd

vim  dockerfile                         //这里文件名必须为dockerfile
#This is http service                   //注释部分,类似于文件说明
FROM docker.io/centos:latest           //以哪个image作为基础
MAINTAINER user <user@163.com>          //维护者的信息
RUN yum -y install apr apr-utils        //在创建镜像中运行以下命令
RUN yum -y install httpd

根据dockerfile创建新images:

docker build -t=centos:v2 /docker/httpd

-t:添加镜像name:tag信息
后面的/docker/httpd路径为dockerfile的绝对路径,也可在/docker/httpd的当前路径下使用 “.”来代替绝对路径

说明:dockerfile中的指令被一行一行的执行,每执行完一行命令都要创建一个新的容器。当所有命令都执行完,会返回一个镜像ID,中间步骤所产生的所有容器ID都会被清除。一个镜像不能超过127层

Complete

小tips:
基于已有image进行创建的时候,可能会因为下载国外网站的镜像很慢。如果你在本地有镜像,可以通过以下命令本地导入镜像,这里再贴出导出镜像的命令

docker load -input 镜像名称:标签                          //本地导入镜像
docker save -output  创建归档文件名 镜像名称:标签           //本地导出镜像
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐