建议:
- 尽量使用官方镜像
- 为了减小镜像体积,尽量依赖于现有镜像
- 尽量少的使用指令
构建过程中,每个指令都会构建一层,从而使镜像变得臃肿
- 尝试使用
docekr history
来检查镜像层体积- 尝试使用
多阶段Docker构建
以减少镜像体积注: 可以分构建阶段、部署阶段
格式
- 由
指令``参数``注释``解析器指令
组成 - 不区分大小写,但是指令通常是大写的,方便于参数进行区分
- 使用
#
注释注:不可在换行符中间使用
构建命令
# 进入项目目录
cd /docker_project/
# 编写镜像文件
vi dockerfile
# 构建镜像
docker build \
-t daived/demo:1.0 \
.
# -t 设置镜像名和版本
常用指令
FROM
设置基础镜像 结合
ARG
指令可动态管理版本
ARG BASE_VERSION=latest
FROM alpine:${BASE_VERSION}
RUN
构建时
执行命令 会在镜像新层
中执行
并保留结果 在下一次构建期间,指令缓存不会自动失效,需要使用--no-cache
参数
RUN /bin/bash -c "source $HOME/.bashrc"
RUN /bin/bash -c \
"source $HOME/.bashrc"
RUN ["/bin/bash","-c","source $HOME/.bashrc"]
CMD
容器
运行时
执行 仅可执行一次,如有多个指令,则执行最后一个 如果在运行容器时指定参数
则会覆盖该指令
CMD echo "hello world"
CMD ["/bin/echo","hello world"]
EXPOSE
计划发布的端口
对外的一种端口文档类型,关于打算发布的端口
若未填写协议,则
EXPOST 80/tcp
EXPOST 80/udp