1 Docker镜像用途
- 统一应用发布的标准格式
- 支撑一个Docker容器的运行
2 Docker镜像的创建方法
- 基于已有镜像创建
- 基于本地模板创建
- 基于Dockerfile创建 (实际环境中用的最多)
2.1 基于已有镜像的创建
将容器里面运行的程序及运行环境打包生成新的镜像
docker commit [选项] 容器ID/名称 仓库名称:[标签]
- -m:说明信息
- -a:作者信息
- -p:生成过程当中停止容器的运行
## 创建容器
docker create -it centos:7 /bin/bash
docker commit -m "new" -a dakao ee9dbcd1dc2b daoke:test
## commit 是提交
docker images | grep dakao
2.2 基于本地模板创建
a.通过导入操作系统模板文件生成新的镜像
b.使用wget命令导入为本地镜像
wget http://download.openvz.org/template/precreated/debian-7.0-x86- minimal.tar.gz
c.导入成功后可查看本地镜像信息
docker images | grep new
2.3 基于Dockerfile创建
- Dockerfile是由一组指令组成的文件
- Dockerfile结构四部分
- 基础镜像信息
- 维护者信息
- 镜像操作指令
- 容器启动时执行指令
- Dockfile每行支持一条指令,每条指令可携带多个参数,支持使用以“#”号开头的注释
Dockerfire操作指令
3 Dockerfile实战
本章节以各种镜像制作为案例展示通过dockerfile制作容器镜像的过程。
3.1 构建apache容器服务
1)基础镜像目录
# mkdir apache
# cd apache
2)编辑镜像dockerfile
# vim Dockerfile#基于的基础镜像
FROM centos:7
#维护镜像的用户信息
MAINTAINER The porject <cloud-ops@centos.org>
#镜像操作指令安装apache软件
RUN yum -y update #更新yum
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"]
3)编辑启动脚本
# vim run.sh
#!/bin/bash
rm -rf /run/httpd/*
exec /usr/sbin/apachectl -D FOREGROUNDecho "web test" > index.html
4) 构建镜像
//生成镜像
# docker build -t httpd:centos . (注意别忘 了末尾有".",且.前面有空格)
5)镜像容器启动运行
//新镜像运行容器
# docker run -d -p 1216:80 httpd:centos
6)测试验证
//测试
# curl http://192.168.40.30:1216
3.2 构建sshd容器服务
centos:7的镜像发现无法使用sshd服务,需要手工添加sshd服务。
sshd为secure shell 的简称,可以通过网络在主机中开机shell的服务。
操作步骤
- 下载基础镜像
- 建立工作目录
- 创建并编写Dockfile文件
- 生成镜像
- 启动容器
# mkdir sshd
# cd sshd# vim DockerfileFROM centos:7
MAINTAINER The CentOS Project <cloud-centos>
RUN yum -y update
RUN yum -y install openssh* net-tools lsof telnet passwd
RUN echo '123456' | passwd --stdin root
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
RUN sed -i '/^session\s\+required\s\+pam_loginuid.so/s/^/#/' /etc/pam.d/sshd
RUN mkdir -p /root/.ssh && chown root.root /root && chmod 700 /root/.ssh
EXPOSE 22
CMD ["/usr/sbin/sshd","-D"] //生成镜像
docker build -t sshd:new .//启动容器并修改root密码
docker run -d -P sshd:new #随机映射端口号
ssh localhost -p ***** #此处的*****端口号需要自己用docker ps 查看一下随机映射的是多少端口号