(一)docker commit方法
- 定义
- 每一次commit都是往版本控制系统里提交一次变更(软件安装和修改)。
- 步骤
- (1)启动容器:docker run container_old;
- (2)进入容器:docker exec -it -d container_old /bin/bash;
- (3)自定义镜像内容;
- (4)commit镜像:docker commit container_old container_new:tag;
- (5)运行镜像:docker run -d -it container_new:tag;
- container_old:原docker容器名称;
- container_new:现docker容器名称;
- tag:自定义版本号;
- 缺点
- 容器内部操作,效率较低;
- 黑箱操作,没有操作记录,不易维护;
- 镜像会随着修改的增加,越来越庞大;
(二)docker build方法(利用dockerfile文件,推荐)
- 定义
- build命令根据给定的Dockerfile和上下文以构建Docker镜像;
- 步骤
- (1)Dockerfile文件(由命令行组成,支持#注释)
- From:指定基础镜像(必须为第一条指令);
- Run:构建容器时运行指定的命令;注意:多行命令不要写多个RUN,原因是Dockerfile中每一个指令都会建立一层。多少个RUN就构建了多少层镜像,会造成镜像的臃肿、多层,不仅仅增加了构件部署的时间,还容易出错。RUN书写时的换行符是\
- CMD:容器启动时需要执行的命令(只允许有一条CMD命令);
- Label:为镜像指定标签;
- Maintainer:指定作者;
- Expose:暴露容器运行的监听端口;
- Env:设置环境变量;
- Add:把文件复制到镜像中,其中src可以是本地文件或url;
- Copy:复制命令,src只允许为本地文件;
- Entrypoint:启动时的默认命令;
- Workdir:设置工作目录;
- ...
- (2)Docker build ImageName FilePath/DockerfileName;
- (3)Docker run -d -it ImageName;
- (1)Dockerfile文件(由命令行组成,支持#注释)
- 构建原则
- 镜像用途集中、单一;
- 选择合适的基础镜像;
- 完整的注释信息;
- 标注版本号;
- 减少镜像层数;
- 删除临时文件和缓存文件;
- 合理的指令顺序;
参考链接
- https://docs.docker.com/engine/reference/builder/
- https://www.cnblogs.com/zhangshuyang/p/8138288.html
- https://www.cnblogs.com/zhengxingpeng/p/6686258.html
- https://www.cnblogs.com/jie-fang/p/7927643.html