前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2023学习日志

2023学习日志

原创
作者头像
TomoriNao
发布2023-07-31 14:35:57
1730
发布2023-07-31 14:35:57
举报
文章被收录于专栏:每月技术成长

docker

docker commit

语法

docker commit 语法格式为:

代码语言:shell
复制
    docker commit [选项] <容器id或容器名> [<仓库名>[:<标签>]]

作用

可以通过docker commit命令将容器的存储层保存下来成为镜像,也即将通过原容器构建新的镜像。

注意事项

docker commit 会导致大量与实际目的无关的文件被添加进镜像中,导致镜像极为臃肿。此外,生成的镜像前容器中执行的命令是未知的,无法得知其具体情况,被称为黑箱镜像难以进行后续维护

Dockerfile 创建镜像

makefile类似,可以通过执行Dockerfile中的指令,来构建目标镜像,由于Dockerfile中有详细的指令信息,可以通过查看指令来了解镜像的生成过程,便于维护和修改

语法

代码语言:shell
复制
    // 第一行必须为 “FROM <镜像名>”,指定基础镜像。也可以为“FROM scratch”
    //scratch 为虚拟概念,表示空白的镜像,“FROM scratch”意为不以任何镜像为基础,接下来的指令作为镜像第一层存在
    FROM 镜像名
    //Dockerfile指令
    ...

RUN 执行指令

Dockerfile中,可以通过RUN指令来执行命令行命令

RUN指令两种格式:

  • shell格式:RUN <命令> 示例:
代码语言:shell
复制
    RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
  • exec 格式: RUN "可执行文件", "参数1", "参数2"(类似于函数调用)

注意事项Dockerfile中的每一个指令都会建立一层,在其上执行命令,再commit修改,构成新的镜像,而镜像是有层数限制的,因此应尽量将目的相同的命令放在同一层执行。

示例:

代码语言:shell
复制
    FROM debian:stretch
    RUN set -x; buildDeps='gcc libc6-dev make wget' \
    && apt-get update \
    && apt-get install -y $buildDeps \
    && apt-get purge -y --auto-remove $buildDeps

值得注意的是,需要在RUN指令的最后进行清理工作,删除不必要的软件,清理apt缓存文件等,避免导致镜像过于臃肿

构建镜像

可以通过docker build 命令进行镜像构建。

  • 语法 docker build [选项] <上下文路径/URL/->示例: // -t nginx指定了镜像的最终名称 // docker build 默认上下文路径中名为Dockerfile的文件作为Dockerfile执行 docker build -t nginx:v3 .
  • 上下文路径 上下文路径是指构建镜像的上下文路径,docker build 会将该路径下所有文件打包后发送给docker引擎进行镜像构建。 因此,Dockerfile中只能使用相对路径,应将需要的资源文件复制到上下文目录中,否则docker引擎无法获取到那些文件,构建镜像失败。
  • 其他docker build 用法
    • 使用Git repo构建
    • 使用给定压缩包构建
    • 标准输入中读取Dockerfile构建
    • 标准输入中读取上下文压缩包构建

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • docker
    • docker commit
      • 语法
      • 作用
      • 注意事项
    • Dockerfile 创建镜像
      • 语法
      • RUN 执行指令
      • 构建镜像
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档