文章目录
1、FROM指令
-
当前的镜像基于哪个镜像构建
-
第一个指令就是FROM
2、RUN指令
- 构建镜像
RUN rm -rf /etc/yum.repos.d/* && curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo && yum makecache && yum -y install vim
RUN ["yum","-y","install","vim"]
# 这2个写法都可以
3、EXPOSE指令
- 声明一个对外暴露的端口,不会真的映射,还是需要输入命令
FROM centos:latest
RUN rm -rf /etc/yum.repos.d/* && curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo && yum makecache && yum -y install vim
EXPOSE 80 #声明容器中服务的端口
docker run -tid -P
docker run -tid -p 主机端口:容器端口 就可以进行暴露容器中的服务端口了
访问主机+主机端口就能转发到容器里面的服务了
4、WORKDIR
-
在创建容器后,终端默认登录进来的工作目录
-
如果这个目录不存在的话,会自动的创建一个目录
-
绝对路径和相对路径都可以
[root@docker docker]# cat Dockerfile
FROM centos:latest
RUN rm -rf /etc/yum.repos.d/* && curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo && yum makecache && yum -y install vim
EXPOSE 80
WORKDIR /apps #登录后进入的是/apps/data这个目录
WORKDIR data
[root@docker docker]# docker run -ti centos:workdir
[root@81a1a7785bac apps]# pwd
/apps
5、add指令
-
将宿主机目录拷贝到容器里面
-
如果是压缩文件的话,可以进行解压
-
url地址的也可以直接进行下载
FROM centos:latest
RUN rm -rf /etc/yum.repos.d/* && curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo && yum makecache && yum -y install vim
EXPOSE 80
WORKDIR /apps
add ./tmp.tar . # 解压到了/apps目录下面
WORKDIR data
ADD https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.30/bin/apache-tomcat-10.1.30.tar.gz .
6、copy指令
-
将宿主机目录拷贝到容器里面
7、ENV指令
-
非常的有用,方便,用变量的形式来代替
-
避免代码的冗余,容器修改
ENV BASE_PATH=/apps/data
WORKDIR /apps
WORKDIR data
WORKDIR /
COPY ./tmp.tar $BASE_PATH
WORKDIR $BASE_PATH
8、volume指令
-
只是声明一个挂载点
-
还是需要使用-v 来实现挂载
-
一个匿名的卷
VOLUME /share/data # 声明容器中的/share/data是一个匿名卷
docker -v 宿主机目录:容器目录
9、ENDTRYPOINT指令
-
容器启动默认执行的命令
-
推荐使用json数组的形式
-
命令行参数不支持传参
-
–entrypoint=ls 可以覆盖entrypoint
FROM centos:latest
RUN rm -rf /etc/yum.repos.d/* && curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo && yum makecache && yum -y install vim
EXPOSE 80
ENV BASE_PATH=/apps/data
WORKDIR /apps
WORKDIR data
WORKDIR /
COPY ./tmp.tar $BASE_PATH
WORKDIR $BASE_PATH
CMD ls $BASE_PATH
10、CMD指令
-
容器启动时默认执行的命令
-
如果有多个的话,只有最后一个生效
-
cmd 命令运行时,要覆盖的话,在docker run的时候,可以覆盖
11、cmd和ent
- 配合使用
-
entrypoint 编写固定的指令
-
cmd 是传参的
-
必须是json数组的形式,[]
-
[root@docker docker]# cat dockerfile
FROM centos:latest
RUN rm -rf /etc/yum.repos.d/* && curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo && yum makecache && yum -y install vim
EXPOSE 80
ENTRYPOINT ["ls"]
CMD ["/"]
#默认是查看的ls /
# 当闯进容器的时候,可以进行传参即可,覆盖cmdss