我们知道,docker容器启动的时候在最上层挂载了一个可写层,比如说我在容器里面创建一个文件,这个文件是存放在可写层的,这时候容器要是销毁了,那么我们对容器的一些写入操作也就没了,我这个文件也会随着容器销毁而销毁了,我们要是想要保存我们对容器的一些写入操作的话,可以使用commit命令然后将容器制作成一个镜像,这样下次run起来该镜像的时候,我们之前的写入操作就还存在了。除了使用commit方式制作镜像,还有一种方式就是编写Dockerfile 然后使用build命令来制作镜像了。 #是注释 docker是按照Dockerfile指令顺序依次执行的,也就是说从上到下。 每一个Dockerfile的第一行都是非注释性的,也就是说第一行不能是注释,必须是FROM指令,来指定基础镜像,后面的指令都以基础镜像为运行环境。如果构建过程中本地没有指定镜像文件,就会去远端仓库拉。 这个FROM指令是dockerfile的第一个指令,然后指定了基础镜像,后面的所有指令都是运行在该基础镜像环境上的。 该指令是描述的维护者信息 USER 指令指明docker里面主进程,也就是pid是1的那个进程是用什么用户跑的,可以在容器终端中whoami来测试 WORKDIR 是指下面的指令都在WORKDIR 指定目录下面工作,这个与linux 里面的cd 差不多 演示: 2.build: 这里. 指的是构建当前目录下的Dockerfile ,然后-t 就是打tag ADD指令是用来将宿主机某个文件或目录放到(复制)容器某个目录下面。 演示: 2.Dockerfile: 3.build: 这里使用了-p 指定宿主机端口映射容器端口,可以使用-P 来随机宿主机端口 COPY 指令类似ADD 指令,但是ADD指令范围更广些,ADD能够自动解压文件,能够访问网络资源,而COPY指令做不到。 EXPOSE 指令用于暴露容器里的端口,我们在3.5里面演示过了,nginx暴露的端口是80,但是启动容器的时候需要指定宿主机端口来映射你暴露的端口。需要暴露多个端口的话可以使用多个EXPOSE,也可以一个EXPOSE指令后面跟多个端口,端口之间用空格隔开。 ENV指令是用于设置环境变量的 演示: 2.build: RUN指令用于在容器中执行命令。我们常用来安装基础软件。 演示: 2.build CMD 指令是你在容器启动的时候帮你运行的命令,而RUN 这个指令是构建镜像的时候帮你运行的命令。 演示: 2.build 我们每一个docker镜像其实都有一个默认的启动命令,我启动这个容器如果不指定命令,它会默认执行根路径下面的entrypoint.sh这个脚本 nginx镜像演示 2.编辑entrypoint.sh 3.给entrypoint 脚本执行权限 4.build
1.Dockerfile介绍
Dockerfile是我们构建docker镜像的源码,可以理解成我们的脚本,然后docker可以使用Dockerfile里面的指令来自动化构建镜像,其实Dockerfile就像是一个组织镜像的清单,来告诉docker 引擎我这一步干啥,然后下一步干啥。
2.Dockerfile的规则
2.1 格式
指令建议要大写,内容小写。这样更能区分2.2 执行顺序
2.3 其他
3. 指令
3.1 FROM
FROM image FROM image:tag FROM image@digest
3.2 MAINTAINER
MAINTAINER username
3.3 USER
USER linux用户
3.4 WORKDIR
WORKDIR 目录
1.Dockerfile:FROM nginx WORKDIR /usr/share/nginx
docker build . -t docker.io/library/nginx:v1.19.0_workdir
3.运行容器:docker run -it --rm 27bd30f69d34 /bin/bash
就可以进入容器看到默认是在worddir目录下面了。3.5 ADD
ADD 宿主句文件 容器文件
1.准备:
下载index.html wget www.baidu.com -O index.html
FROM nginx ADD index.html /usr/share/nginx/html/index.html EXPOSE 80
docker build . -t docker.io/library/nginx:v1.19.0_add
4.启动容器验证: docker run --rm -d --name nginx_add -p80:80 fe12a2f7ccef
浏览器验证:
3.6 COPY
3.7 EXPOSE
EXPOSE 端口
3.8 ENV
ENV key=value ENV key value
1.Dockerfile:FROM nginx ENV T_OPT=nginx_c
docker build . -t docker.io/library/nginx:v1.19.0_env
3.启动容器: docker run --rm --name nginx_env 731c7b670c20 printenv
我们可以看到,我们设置环境的变量就打印出来了。3.9 RUN
RUN 需要执行命令
1.Dockerfile:FROM centos:centos7 RUN yum install net-tools.x86_64 -y
docker build . -t docker.io/library/centos:7_net-tool
3.启动容器docker run -it 998e648663b1 /bin/bash
默认centos7镜像里面是没有net-tools这个工具的,我们使用RUN yum install 指令给安装上了。3.10 CMD
CMD ["命令","参数"]
1.Dockerfile:FROM centos:centos7 RUN yum install httpd -y CMD ["httpd","-D","FOREGROUND"]
docker build . -t docker.io/library/centos:7_httpd
3.启动容器验证: docker run --rm -d --name httpd -p80:80 3da609352ae5
浏览器验证:
3.11 ENTRYPOINT
ENTRYPOINT 脚本
1.DockerfileFROM centos:centos7 ADD entrypoint.sh /entrypoint.sh RUN yum install epel-release -q -y && yum install nginx -y ENTRYPOINT /entrypoint.sh
#!/bin/bash /sbin/nginx -g "daemon off;"
chmod +x entrypoint.sh
docker build . -t docker.io/library/centos:nginx_
5.运行容器 docker run -d --rm --name c_nginx -p80:80 d10dacbcb9f9
浏览器访问:
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算