• docker制作镜像


    当我们从docker镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改:
    (1)从已经创建的容器中更新镜像,并且提交这个镜像
    (2)使用Dockerfile指令来创建一个新的镜像
    1 基于容器制作镜像

    Options 参数
    -a,作者(例如,“along along@along.com”)
    -c,修改Dockerfile指令应用于创建的镜像
    -m,提交的描述信息,即记录本次修改的内容
    -p,在提交期间暂停容器(默认为true)

    1)示例1:简单的基于容器创建一个新的镜像
    A.先运行一个容器

    [root@localhost ~]# docker run --name b1 -it busybox 
    / # ls / 
    bin dev etc home proc root sys tmp usr var 
    / # mkdir -p /data/html 
    / # echo busybox httpd server >/data/html/index.html 
    / # cat /data/html/index.html 
    busybox httpd server
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    B.不用退出这个容器,另起终端在b1容器基础上,制作新镜像
    保存镜像:

    [root@localhost ~]# docker commit -p b1
    
    • 1

    C.给新制作的镜像打标签

    [root@localhost ~]# docker tag 5d6 along/httpd:v0.1
    
    • 1

    D.删除同一镜像的标签,只是把这个镜像的标签去掉,直到删除这个镜像的最后一个标签,此镜像才会被删除。

    [root@localhost ~]# docker image rm along/httpd:latest
    
    • 1

    E.基于新的镜像运行一个容器,验证是否是基于b1创建成功的

    [root@localhost ~]# docker run --name b2 -it --rm along/httpd:v0.1 
    / # cat /data/html/index.html 
    busybox httpd server
    
    • 1
    • 2
    • 3

    2)示例2:基于容器创建新的镜像,并修改执行命令CMD
    A.基于容器b1创建新的镜像,并修改命令为执行httpd服务

    [root@localhost ~]# docker commit -a "Along " -c 'CMD ["/bin/httpd","-f","-h","/data/html"]' -p b1 along/httpd:v0.2
    
    • 1

    B.运行新的镜像v0.2

    [root@localhost ~]# docker run --name b3 -d along/httpd:v0.2
    
    • 1

    C. 验证

    [root@localhost ~]# docker inspect b3 | grep -i ipaddress 						"SecondaryIPAddresses": null, "IPAddress": "172.17.0.3", "IPAddress": "172.17.0.3", 
    [root@localhost ~]# curl 172.17.0.3 
    busybox httpd server
    
    • 1
    • 2
    • 3

    2 基于Dockerfile制作镜像

    1. 创建一个名为“Dockerfile”的文件
      注意,文件名必须是“Dockerfile”,“D”是大写字母。

    [root@server ~]# mkdir /myimg
    [root@server~]# cd /myimg/
    [root@server myimg]# vim Dokerfile
    [root@server myimg]# cat Dokerfile
    #This is a demo Image
    FROM ubuntu
    MAINTAINER root@server.com
    RUN apt-get update
    CMD [“echo”, “Image created”]

    第一行#This is a demo Image 是一条注释。Dockerfile 中注释以#开头。

    下一行需以 FROM 关键字开始。构建自己的镜像时,通常以其他镜像为基础。FROM ubuntu 表示将以 ubuntu 镜像为基础创建一个镜像。

    MAINTAINER root@server.com 指明镜像维护者。

    RUN 指令用于执行命令。这里更新 ubuntu 系统。

    最后一个指令向用户显示一条消息。
    2 创建镜像----docker build 命令用于从 Dockerfile 构建镜像
    典型用法:docker build -t ImageName:TagName dir

    [root@kittod myimg]# docker build -t myimg:0.1 .
    
    • 1

    查看定制的镜像

    [root@server myimg]# docker images
    
    • 1

    运行定制镜像

    [root@server myimg]# docker run myimg:0.1
    
    • 1

    Dockerfile指令:https://www.runoob.com/docker/docker-dockerfile.html

  • 相关阅读:
    【云计算知识库】什么是云?什么是云计算?计算的是什么?openstack是什么?nova计算组件?【持续更新中】
    中国500米分辨率年最大LAI数据集(2000-2020)
    Vue3.0跨端Web SDK访问微信小程序云储存,文件上传路径不存在/文件受损无法显示问题(已解决)
    一文读懂MP4封装格式
    leetcode day12 对称二叉树
    项目运维工作的心得总结
    JUCE框架教程(3)—— Component Class&Graphics入门
    React18 新特性
    java-net-php-python-java交通事故档案管理系统PPT计算机毕业设计程序
    序列查询
  • 原文地址:https://blog.csdn.net/anran_06/article/details/126854299