首先我们得知道怎么下载镜像:
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 创建归档文件名 镜像名称:标签 //本地导出镜像