【Dockerfile学习笔记】常用命令及参数意义

什么是 Dockerfile?
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

下面罗列一下常用的与镜像有关的命令:

列举本地的镜像:docker images
拉取镜像:docker pull tomcat
在仓库中查找镜像:docker search tomcat
根据名称删除镜像:docker rmi tomcat:alpine
根据id删除镜像:docker rmi 8b8b1eb786b5
构建镜像:docker build -t mytest:v1 .
设置标签:docker tag tomcat:alpine tomcat:alpine-test
相当于只是设置了软链接!下面可以看到Image ID都是一样的!
上下文路径
docker build -t mytest:v1 .
-t:设置镜像名称和标签,默认标签是latest,完整格式my-test:latest
.:构建上下文路径
Dockerfile指令
上面的Dockerfile涉及几种指令:FROM、RUN、COPY、CMD、EXPOSE,除此之外,还有其他指令,下面我们逐条分析它们!
FROM:指定基础镜像
COPY:复制文件
从上下文路径中copy文件到容器的指定路径!
RUN:运行命令 (支持shell和exec格式)
Run touch test-1.txt

Run [“touch”,”text-2.txt”]

CMD:运行命令(启动容器时
区别是运行时机不一样:
RUN:构建镜像(docker build)时运行命令
CMD:启动容器(docker run)时运行命令

指定容器启动时的命令:
FROM alpine
RUN touch test-1.txt
RUN [“touch”, “test-2.txt”]
CMD [“echo”, “Hello Docker!”]

非常重要的一点:
CMD的作用是给容器指定默认的程序,所以当命令结束时,容器也会退出!

docker run my-test
Hello Docker!

也就是说容器的生命周期随着CMD指令的完成而退出!!!!
当Dockerfile中声明多条CMD指令时,前面的会被最后一条CMD命令覆盖!
FROM alpine
RUN touch test-1.txt
RUN [“touch”, “test-2.txt”]
CMD [“echo”, “Hello 1”]
CMD [“echo”, “Hello 2”]

上面的容器,只会输出Hello 2
另外,CMD指令也会被docker run指定的命令覆盖!
docker run my-test echo “This is Docker”
This is Docker
ENTRYPOINT:运行命令(启动容器时)
FROM alpine
RUN touch test-1.txt
RUN [“touch”, “test-2.txt”]
CMD [“echo”, “Hello 1”]
CMD [“echo”, “Hello 2”]
ENTRYPOINT [“echo”, “Hello ENTRYPOINT 1”]
ENTRYPOINT [“echo”, “Hello ENTRYPOINT 2”]
ARG:设置变量
相当于局部变量,只是在构建镜像时可用$VERSION_ARG
ARG VERSION_ARG=1001
ENV:设置环境变量
ARG的加强版,同时设置到环境变量中:
ENV VERSION_ENV=8
ARG VERSION_ARG=1001
VOLUME:定义默认的数据卷
EXPOSE :声明端口
1.相当于注释,告诉修改镜像的人,这些容器端口对外暴露了
2.作为默认端口使用
WORKDIR:设置工作目录
构建镜像的过程中,每个RUN都会新建一层,所以只有工作目录会一直存在!相当于构建镜像时,层与层之间的共享目录!
 USER:指定命令执行的用户
切换用户,然后执行接下来的指令

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值