Dokcer创建镜像

Docker面试经常被问到的问题,一直困扰自己。希望可以帮助到你,望君面试顺利。

dockerfile文件

dockerfile:构建docker镜像的配置文件,包含了一条条的指令,来告知如何去创建docker镜像。

常用参数:

参数含义
FROM(*)指定基础镜像,是dockerfile中最重要的参数。
WORKDIR(*)指定shell语句执行到哪个目录下,不存在则自动创建
COPY(*)将当前主机上的文件拷贝到容器某目录下(推荐)
ADD和COPY类似,除了本机目录外,也可以是url资源
RUN(*)构建时运行shell语句
CMD(*)运行时运行shell语句(推荐)
ENTRYPOINT和CMD类似,不过优先级比CMD高
EXPOSE指定暴露端口
VOLUME数据卷
ENV参数,作用域为构建镜像到容器运行结束
ARG参数,作用域为构建镜像的过程
LABEL指定元数据信息,对镜像没有影响。做标识
ONBUILD当基于此镜像进行构建镜像时,会被继承。
STOPSIGNAL指定信号来终止容器(不常用)
HEALTHCHECK检查容器健康状态
SHELL指定文件使用的shell类型

CMD的json格式可参考:博客
注意:

RUN是构建镜像时运行的脚本,CMD是容器运行时运行的脚本,脚本运行结束之后容
器的生命周期结束。

当文件中同时存在CMD和ENTRYPOINT时,如果ENTRYPOINT是非json格式时,则按
照ENTRYPOINT执行。如果二者都是json格式,则将二者拼接成shell。

EXPOSE:如nginx暴露端口为80,可以使用docker inspect nginx查看详细信息。
这样做的好处是,可以在运行镜像时通过P参数来端口映射

构建镜像:

docker build -t [name]:[version] /path/to/dockerfile

举例:docker build -t test:1.0 /root/docker

运行镜像

docker run [name]:[version]

实例:基于alpine构建镜像

1.先编写简单的Dockerfile文件
[root@localhost ~]# cat Dockerfile 
FROM alpine		
WORKDIR /app
COPY ./test.txt /app/
run echo "world!" >>test.txt
cmd cat test.txt
2.构建镜像以及运行镜像。
[root@localhost ~]# docker build -t test .
Sending build context to Docker daemon   16.9kB
Step 1/5 : FROM alpine
Step 2/5 : WORKDIR /app
Step 3/5 : COPY ./test.txt /app/
Step 4/5 : run echo "world!" >>test.txt
Step 5/5 : cmd cat test.txt
[root@localhost ~]# docker run test
hello
world!

更好的理解参数ENV和ARG:

3.1在Dcokerfile文件中添加参数
ENV A=10
CMD echo $A
3.2构建镜像以及运行镜像。
[root@localhost ~]# docker run test
10
4.1在Dcokerfile文件中添加参数
ARG B=11
CMD echo $B
4.2构建镜像以及运行镜像
[root@localhost ~]# docker run test
              

另外需要注意的是,Dockerfile文件中定义的ARG参数是默认值,我们在运行镜像时,可以通过–build-arg B=12进行重新赋值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值