05 Dockerfile
构建镜像,用来构建镜像的构建文件。命令脚本
01 基本规则
1 格式
FROM centos
VOLUME ["volume1", "volume2"]
CMD echo "-----end-----"
CMD /bin/bash
#
为注释- 指令大写,内容小写
- ,从上向下执行逐行执行,每个指令都会创建一个新的镜像层,并提交
- 每个dockerfile的第一行非注释指令,必须是“FROM”指令,用于作为镜像文件构建过程中,指定基准镜像,后续的指令运行于此基准镜像所提供的环境种
- 基准镜像可以是任何可用的镜像文件,默认情况下,docker build会在docker主机(本地)上查找指定的镜像文件,当本地不存在时,从远端检索并pull镜像文件。
构建步骤:
- 编写Dockerfile文件
- docker build -f Dockerfile文件 -t 镜像名字
- docker run
- docker push到仓库
02 核心指令
docker build -f dockerfile文件 -t 镜像名字 .
在Dockerfile
文件当前目录下执行
特别注意:最后的.
生成镜像并打tag
docker build . -t docker.io/lynntian/nginx_docker_file:0.0.1
FROM # 基础镜像,一切从这里开始
MAINTAINER # 谁写的,姓名+邮箱
RUN # 镜像构建时需要运行的命令
ADD # 添加,一般是压缩包,例如tomcat的压缩包,压缩包会自动解压
WORKDIR # 镜像的工作目录
VOLUME # 挂载的目录
EXPOSE # 暴漏端口
CMD # 指定容器启动的时候要运行的命令,只有最后一个生效,可被替代
ENTRYPOINT。 # 指定容器启动的时候要运行的命令,追加命令
ONBUILD。 # 构建一个被继承DockerFile,会触发
COPY # 将文件复制到镜像中,一般是文件
ENV # 环境命令
1 USER/WORKDIR
语法:
Dockerfile
FROM docker.io/library/nginx:latest
USER root
WORKDIR /usr/share/nginx/html
补充:
USER
跟的是容器的用户
WORKDIR
是进入容器的默认目录
whoami
查看用户
2 ADD/EXPOSE
语法:
Dockerfile
FROM docker.io/library/nginx:latest
ADD index.html /usr/share/nginx/html/index.html
EXPOSE 80
补充:
ADD
相当于copy,把指定的文件复制到容器的制定目录下
EXPOSE
指定对外暴露的端口
3 RUN/ENV
语法:
Dockerfile
FROM centos:7
ENV VER 9.11.4
RUN yum install bind-$VER -y
docekr build . -t docker.io/lynntian/bind-docker:0.0.1
cat /etc/redhat-release printenv
补充:
ENV
环境变量
RUN
构建镜像时,执行的命令
4 CMD/ENTRYPOINT
启动容器时,默认执行的命令是 /entrypoint.sh
命令
CMD语法:
Dockerfile
FROM centos:7RUN yum install httpd -yCMD ["httpd", "-D", "FOREGROUND"]
补充:
CMD
容器启动时执行的命令
ENTRYPOINT语法:
Dockerfile
FROM centos:7RUN yum install epel-release -q -y && yum install nginx -yADD entrypoint.sh /entrypoint.shENTRYPOINT /entrypoint.sh
记得给entrypoint.sh
加执行权限
entrypoint.sh
#!/bin/basj/sbin/nginx -g "daemon off;"
chmod +x entrypoint.sh
补充:
ENTRYPOINT
指定容器启动时,执行的脚本
例子:
03 数据卷容器
--volumes-from
多个容器共享数据(备份),只要有一个容器存在,数据就不会丢失
docker run -it --name 容器名字 --volumes-from 要挂载的容器 镜像名 /bin/bash
实现两个容器中的数据共享同步
注意:
数据卷容器的生命周期,一直持续到没有容器使用为止。但是持久化到了本地,本地数据不会删除。
镜像名放在要挂载的容器之后
![image-20211018144017218](/Users/user/Library/Application Support/typora-user-images/image-20211018144017218.png)