Dockerfile的初体验+本地私有仓库
文章目录
一: Dockerfile简述
-
Docker在运行之前,需要以镜像作为基础环境,可以说镜像是整个Docker容器创建的关键,而创建镜像的三种方法中基于Dockerfile创建的方法使用最为灵活。
-
Dockerfile可以看作是被Docker程序所解释翻译的脚本,是由一组命令集合而成,每条命令对应一条操作指令,由docker翻译为Linux下的具体命令。用户可以通过自定义其内容来快速创建镜像。
-
在 Docker 的术语里,一个只读层被称为镜像,一个镜像是永久不会变的。由于 Docker 使用一个统一文件系统,Docker 进程认为整个文件系统是以读写方式挂载的。 但是所有的变更都发生顶层的可写层,而下层的原始的只读镜像文件并未变化,所以Docker镜像是分层的
-
Dockerfile指令
-
指令 含义 FROM 镜像 指定新镜像所基于的镜像,第一条指令必须为FROM指令,每创建一个镜像就需要一条FROM指令 MAINTAINER 名字 说明新镜像的维护人信息 RUN 命令 在所基于的镜像上执行命令,并且提交到新的镜像中 CMD [“要运行的程序”,“参数1”,“参数2”] 指定启动容器时要运行的命令或者脚本,Dockerfile只能有一条CMD命令,如果指定多条则只有最后一条执行 EXPOSE 端口号 指定新镜像加载到Docker时要开启的端口 ENV 环境变量 变量值 设置一个环境变量的值,会被后面的RUN使用 ADD 源文件 /目录 目标文件 /目录 将源文件复制到目标文件,源文件要与Dockerfile位于相同目录中,或者是一个URL COPY 源文件 /目录 目标文件 /目录 将本地主机上的源文件 / 目录复制到目标地点,源文件 / 目录要与Dockerfile在相同的目录中 VOLUME [“目录”] 在容器中创建一个挂载点 USER 用户名 /UID 指定运行容器时的用户 WORKDIR 路径 为后续的RUN、CMD、ENTRYPOINT 指定工作目录 ONBUILD 命令 指定所生成的镜像作为一个基础镜像时所要运行的命令 -
我们构建镜像一般有三种方式:
1、基于Dockerfile(最常用)创建
2、基于已有的镜像容器进行创建镜像
3、基于本地模板进行构建
-
Docker镜像的分层
Dockerfile中每个指令都会创建一个新的镜像层
镜像层将被缓存和复用
当Dockerfile的指令修改了,复制的文件变化了,或者构建镜像时指定的变量不同了,对应的镜像层缓存就会失效
某一层的镜像缓存失效之后,它之后的镜像层缓存都会失效
镜像层是不可变的,如果在某一层中添加一个文件,然后再下一层中删除它,则镜像中依然会包含该文
-
什么是Dockerfile?
Dockerfile是由一组指令组成的文件
Dockerfile结构分成四个部分:
1、基础镜像信息
2、维护者信息
3、镜像操作指令
4、容器启动时指定指令
二: 基于Dockerfile构建Apache镜像
1、编写Dockerfile文件
mkdir apache
cd apache
cat > Dockerfile <<-'EOF'
#1.基于的基础镜像
FROM centos:7
#2.维护镜像的用户信息
MAINTAINER this is kgc
#3.更新yum源,安装httpd
RUN yum -y update
RUN yum install -y httpd
#4.暴露容器内部端口
EXPOSE 80
#5.复制网站首页文件
ADD index.html /var/www/html/index.html
#6.将执行脚本复制到镜像中
ADD run.sh /run.sh
RUN chmod 755 /run.sh
#7.启动容器时执行的脚本
CMD ["/run.sh"]
EOF
2.编写执行脚本与首页内容
[root@docker apache]# vim run.sh
#!/bin/bash
rm -rf /run/httpd/* '//清除缓存'
exec /usr/sbin/apachectl -D FOREGROUND '//启动apache'
[root@docker apache]# echo "web test" > index.html
3、生成镜像
docker build -t httpd:centos .
4.新镜像运行容器
docker run -d -p 8081:80 httpd:centos
5.测试容器

三: 基于已有的容器创建镜像
- 创建容器
root@docker01<

本文介绍如何使用Dockerfile构建Apache镜像,并详细解析Dockerfile指令。此外,还介绍了基于现有容器和本地模板创建镜像的方法,以及如何搭建Docker私有仓库。
最低0.47元/天 解锁文章
1215

被折叠的 条评论
为什么被折叠?



