1.基于已有镜像创建
步骤:
1.将原始镜像加入容器并运行
2.在原始镜像中部署各种服务
3.退出容器
4.使用下面命令将容器生成新的镜像
现在我们在这个容器里做了一些配置,我们要把他做成自己镜像
docker commit -m "centos7_123" -a "tarro" 6025e38d6e59 docker:centos7 # docker commit -m "说明" -a "作者" 基于容器ID 生成后的镜像名称和标签
执行完docker commit 以后就会通过容器制作一个镜像了
docker inspect 镜像ID
就能看到详细的信息了,比如作者什么的
2.基于本地模板创建
Download/template/precreated - OpenVZ Virtuozzo Containers Wikihttps://wiki.openvz.org/Download/template/precreated下载一个模板
我这里随便下了个debian的模板并导入了系统中
cat debian-7.0-x86_64-minimal.tar.gz | docker import - docker:debain # cat 模板 | docker import - 创建的镜像名和标签
3.基于Dockerfile创建
我们要创建一个http的容器,需要使用到ftpyum仓库
我们要使用这个centos镜像
首先先去编译Dockerfile
vim Dockerfile 写入 #设置基础镜像 FROM centos #维护该镜像的用户信息 MAINTAINER tarro #设置本地yum源 RUN mkdir /etc/yum.repos.d/bak ; mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak ADD centos.repo /etc/yum.repos.d/centos.repo #清除缓存 RUN yum clean all # 安装apache服务 RUN yum -y install httpd #开启端口80 EXPOSE 80 #复制位置网站首页文件 ADD index.html /var/www/html/index.html #复制执行脚本到镜像中 ADD run.sh /run.sh RUN chmod 755 /run.sh #启动容器时执行脚本(制作镜像中不运行) CMD ["/run.sh"]
vim run.sh 写入 #!/bin/bash # 清理httpd的缓存 rm -fr /run/httpd/* # 启动apache服务 exec /usr/sbin/apachectl -D FOREGROUND
echo "hello world" > index.html
vim centos.repo 写入 [123] name=123 baseurl=ftp://192.168.6.1/ck enabled=1 gpgcheck=0
在上面的dockerfile中使用到了,yum仓库,网页,还有一个shell脚本用来设置同容器一起启动,编写完以后即可开始制作
docker run -d -p 8888:80 --name httpd apache:ly
开启一下,再进行一个端口转换看看效果