• Docker 入门 7 构建镜像


    前言

    优点:

    • 保存对容器的修改,并再次使用
    • 自定义镜像
    • 以软件形式打包并分发服务及其运行环境

    命令总结:

    • 通过容器构建

      docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
      
    • 通过 Dockerfile 文件构建

      docker build
      

    通过容器构建

    docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
    
    • -a :默认 --author="" ,用来指定镜像的作者,通常填写作者名和联系方式。
    • -m :用来记录镜像构建的信息,
    • -p :由于容器构建时,会暂停运行中的容器,该参数可以不暂停正在运行的容器。

    示例

    # 通过容器构建镜像
    $ docker commit -a "yogile" -m "commit test" commit_t yogile/commit_t
    sha256:8429b31f250ee3e6ac4f9cef2e209e5e5b0f186bfbe0eb70359886560ccd6e7e
    
    # 查看镜像
    $ docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    yogile/commit_t     latest              8429b31f250e        23 seconds ago      209MB
    

    这时,我们就构建了一个镜像,可以根据这个镜像运行容器了。

    使用 Dockerfile 文件构建

    这种方法实际上是编写类似于脚本的文件并执行它,再根据命令一步步形成一个想要得到的容器。

    创建 Dockerfile 文件

    创建存放 Dockerfile 目录

    mkdir -p dockerfile/df_test1
    

    创建 Dockerfile 文件

    vim dockerfile/df_test1/Dockerfile
    

    这里 Dockerfile 文件的命名必须为 Dockerfile ,否则报错:

    unable to prepare context: unable to evaluate symlinks in Dockerfile path: lstat /home/debiana/dockerfile/df_test1/Dockerfile: no such file or directory
    

    示例

    # Dockerfile
    # 选择镜像的所需 Repository 仓库
    FROM ubuntu:18.04
    # 填写维护人员信息
    MAINTAINER "Yogile" "Yogile@example.com"
    # 执行 apt-get update 命令
    RUN apt-get update
    # 执行下载安装 nginx 命令
    RUN apt-get install nginx -y
    # 绑定端口 80
    EXPOSE 80
    

    使用 docker build 构建镜像

    docker build [OPTIONS] PATH | URL | -
    
    • -t :--tag="" ,指定构建的镜像名字
    • PATH :指定 Dockerfile 文件的路径

    示例

    docker build -t ubuntu_yyy dockerfile/df_test1
    

    推送镜像

    登录

    docker login -u [用户名]
    

    注意:

    这里的用户名应为全英文小写,因为注册时就硬性规定为全英文小写。

    登陆成功提示:

    Login Succeeded
    

    提交镜像

    docker push [用户名]/[镜像名]:[TAG]
    

    注意

    如果是首次 build 的镜像,则需要重新规定 tag 才能推送到仓库。

    如果出现如下错误,就说明你输入的 [用户名]/[镜像名]:[TAG] 不存在,需要检查你输入的信息与生成的镜像是否一致:

    An image does not exist locally with the tag: [用户名]/[镜像名]:[TAG]
    

    该问题特别易出现在初学者身上。对于初学者而言,最开始学 Docker 时大部分都没有申请自己的 DockerHub 账户,同时目前流行于网上的大部分教程都忽略的这一点,问题的具体原因也没有的到解决,只是通过 docker tag 来对 TAG进行总体性的修改。

    当然这样也没有什么问题,也是对 tag 命令的活用。示例:

    docker build -t [用户名]/[镜像名]:[TAG] .
    docker tag [原用户名]/[原镜像名]:[原TAG] [现用户名]/[现镜像名]:[现TAG]
    docker push yogile/respbian:1.0
    
  • 相关阅读:
    使用element-ui table expand展开行实现手风琴效果
    使用js生成二维码和条形码
    js时间戳转换时间、距当前时间
    使用js在浏览器中禁止右键、审查元素、复制功能
    VS Code编辑器插件整理及配置设定
    在vue项目中使用canvas-nest.js,报parameter 1 is not of type 'Element'
    JS中的函数
    Babel 7 初探
    package-lock.json 文件
    Js 中的数组
  • 原文地址:https://www.cnblogs.com/Yogile/p/12513856.html
Copyright © 2020-2023  润新知