(重点)理论+实验——Docker镜像服务

一、Docker镜像的分层

在这里插入图片描述

二、Docker镜像的创建

2.1 Docker镜像

  • 应用发布的标准格式
  • 支撑一个Docker容器的运行

2.2 Docker镜像的创建方法

  • 基于已有镜像创建
  • 基于本地模板创建
  • 基于Dockerfile创建

在这里插入图片描述

2.2.1 基于已有镜像创建

//创建容器
docker create- it centos:7 /bin/bash
docker commit -m "new" -a "daoke" c83aee844ae0 daoke:test
docker images丨grep daoke
'-m:说明信息,-a:作者信息,-p:生成过程中停止容器运行'

2.2.2 基于本地模板创建

wget http://downIoad.openvz.org/template/precreated/debian-7.0-x86-minimaI.tar.gz
cat debian-7.O-x86-minimaI.tar.gz丨docker import - daoke:new
docker images丨grep new

2.2.3 基于Dockerfile创建

■ Dockerfile是有一组指令组成的文件
■ Dockerfile结构四部分

  • 基础镜像信息
  • 维护者信息
  • 镜像操作指令
  • 容器启动时执行指令

■ Dockerfile每行支持一条指令,每条指令可携带多个参数,支持使用以“#”号开头的注释
Dockerfile操作指令

指令含义
FROM 镜像指定新镜像所基于的镜像,第一条指令必须位FROM指令,每创建一个镜像就需要一条FROM指令
MAINTAINER 名字说明维护人信息
RUN命令在所基于的镜像上执行命令,并提交新的镜像中。在容器中执行的命令
CMD[运行的程序,参数1,参数2]指定启动容器时才会执行的指令,如果指定多条只会执行最后一条
EXPOSE容器对外暴露的端口,并不是映射端口
ENV 环境变量 变量值设定环境变量,会被后面RUN使用
ADD 源文件/目录 目标文件/目录将源文件复制到目标文件,源文件要与dockerfile位于相同目录中或一个URL,将宿主机文件放入容器中
COPY 源文件/目录 目标文件/目录容器内部的文件复制
VOLUME [目录]数据卷容器,宿主机共享目录出来能够给容器使用,在容器中创建挂载点
USER 用户名/UID指定容器运行时的用户
WORKDIR 路径为后续RUN、CMD、ENTRYPOINT指定工作目录,相当于容器内的cd
ONBUILD指定生成的镜像作为一个基础镜像时所需要运行时的命令
HEATHCECK健康检查

实验:

mkdir apache
cd apache

vim Dockerfile

#基于的基础镜像
FROM centos:7
#维护镜像的用户信息
MAINTAINER The porject <cloud-ops@centos.org/
#镜像操作指令安装apache软件
RUN yum -y update
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"]

'接下来在apache文件夹中创建放入的两个文件'
vim run.sh

#!/bin/bash
rm -rf /run/httpd/*   ##如果有apche清空然后执行
exec /usr/sbin/apachectl -D FOREGROUND    ##强制执行启动apache


echo "web test" > index.html
或者
vi index.html
<h1>test</h1>#测试页面

//生成镜像
docker build -t httpd:centos .(注意别忘了末尾有"."

报错:

[root@localhost apache]# docker build -t httpd:centos .
Sending build context to Docker daemon  4.096kB
Step 1/9 : FROM centos:7
 ---> 92786e8f2cad
Step 2/9 : MAINTAINER The porject <cloud-ops@centos.org/
 ---> Using cache
 ---> 0059b401a0b6
Step 3/9 : RUN yum -y update
 ---> Running in e4ca200a2334
Loaded plugins: fastestmirror
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
^C

解决方法:

[root@localhost apache]# yum clean all
已加载插件:fastestmirror, langpacks
正在清理软件源: base docker-ce-stable extras updates
Cleaning up everything
Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos
Cleaning up list of fastest mirrors
[root@localhost apache]# rm -rf /var/cache/yum
 
'###然后删除多余的容器和镜像,就可以了'

重新执行:docker build -t httpd:centos .(注意别忘了末尾有"."

新镜像运行容器

docker run -d -p 1216:80 httpd:centos

测试:
真机输入20.0.0.21:1216,显示如下,即成功
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值