`

4、Docker镜像

 
阅读更多
一、什么是Docker镜像
        是一种使用联合加载技术实现的重叠的只读文件系统
    是容器的基石。

        使用docker info命令查看docker使用的存储驱动和存储位置
         ls -l /var/lib/docker/aufs
         ams文件夹下保存镜像文件

二、查看和删除镜像
        1、列出镜像
                docker images [optsions] [repository]
                        -a , --all=false        显示所有镜像
                        -f ,  --filter=[]         在显示时的过滤条件
                        --no-trunc=false    ID是否截断,默认截断
                        -q,  --quiet=false    只显示镜像的惟一ID
               
                repository 仓库,一个仓库包含的是一系列关联的镜像
                tag    镜像标签,一个镜像可以对应多个标签

        2、查看镜像的详细信息
                docker inspect [options] container|image  [container|image]
               
                docker inspect 仓库名:tag名
        3、删除镜像
                docker rmi [options]  image [image...]
                        -f , --force=false        会强制删除镜像
                        --no-prune=false       会保留被删除镜像标签的父镜像

                docker rmi ubuntu:latest
                一次删除多个镜像   docker rmi ubuntu:latest  ubuntu2:latest2 ......
                删除所有镜像    docker rmi $(docker images -q ubuntu) ,会删除ubuntu仓库中的所有镜像


三、如何获取和推送镜像
        1、查找镜像
                a)docker hub  https://registry.hub.docker.com
                        需先注册账号
   
                b)docker search [options] term
                    --automated=false        自动化选项,只会显示自动化构建的镜像
                    --no-trunc=false            选择了true会以截断的方式输出
                    -s , --stars=0                    限制显示结果的最低星级

        2、拉取镜像
                docker pull ubuntu:14.04      速度非常慢
                使用 --registry-mirror 选项,使用国内的docker仓库镜像服务器
                    1、修改 /etc/default/docker
                    2、添加:DOCKER_OPTS = "--registry-mirror=https://www.daocloud.io"
                        DOCKER_OPTS="$DOCKER_OPTS --registry-mirror=http://f2d6cb40.m.daocloud.io"

        3、推送镜像
                 
                docker push不会把镜像整个提交上去,只会把修改的部分提交上去

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

                1、docker commit 通过容器构建
                        docker commit [options] container [repository[:tag]]
                                -a, --author=""            指定镜像的作者
                                -m,--message=""        记录镜像构建的信息
                                 -p,--pause=true         指示commit不暂停正在执行的容器

                        docker run -i -t -p 80 --name commit_test  ubuntu /bin/bash
                     
                        以容器web,创建一个镜像,名字为nginx_web,仓库myrep01
                        docker commit -a 'chentian' -m 'nginx'  web myrep01/nginx_web
                       

                        以nginx_web镜像启动容器
                       

                2、docker build  通过dockerfile文件构建
                        先编写dockerfile文件
                            #First Dockerfile
                            FROM ubuntu:14.04
                            MAINTAINER chentian114 "chentian114@sina.com"
                            RUN apt-get update
                            RUN apt-get install -y nginx
                            EXPOSE 80
                           

                         docker build -t='myrep01/df_test1' .
                            -t 设置创建镜像的名字
                            path : dockerfile文件所在目录

                        docker images查看已存在的镜像
                       
                        以创建的df_test1镜像创建docker容器
                         docker run -d --name nginx_df1 -p 80 "myrep01/df_test1" nginx -g "daemon off;"
                       

                            #First Dockerfile
                            FROM ubuntu:14.04
                            MAINTAINER chentian114 "chentian114@sina.com"
                            RUN apt-get update
                            RUN apt-get install -y nginx
                            EXPOSE 80

                    1、FROM指令       用来指定镜像
                                FROM指令格式   a)FROM <image>   b)FROM <image>:<tag>
                                必须是已经存在的镜像,后序指令都会基于这个镜像运行。帮叫基础镜像
                                必须是第一条非注释指令
                    2、MAINTAINER <name> 指定镜像的作者信息,包含镜像的所有者和联系信息

                    3、RUN 用来指定当前镜像中运行的命令
                                 有两种指令模式
                                 a) RUN <command> (shell模式)
                                        该模式下执行命令 : 
                                 b)RUN [ "executable","param1","param2"] (exec模式)
                                        该模式下可指定其它形式的shell执行指令
                       docker build -t="myrep01/df_test1" path  查看构建过程    
                       
   
                        4、EXPOSE 用来指定运行该镜像的容器使用的端口,它可以指定一个或多个端口,也可以多次使用EXPOSE
                                EXPOSE <port> [<port>....]
                             容器运行时,仍需要手动指定映射端口
                           
                              
                        5、CMD  用来提供容器运行的默认命令,与RUN命令类似,都是用来执行指令,但RUN指令中的命令是在镜像构建
                                   过程中运行的,而CMD指定的指令是在容器运行时运行的。当我们使用docker run指定了容器运行的命令时,
                                   CMD命令会被覆盖,即CMD只是指定容器启动默认执行的命令。
                                   CMD指令的模式
                                   
                              
                                 #First Dockerfile
                                FROM ubuntu:14.04
                                MAINTAINER chentian114 "chentian114@sina.com"
                                RUN apt-get install -y nginx
                                EXPOSE 80

                                docker build -t="myrep01/df_test2" .
                                docker run -p 80 --name="cmd_test1" -d myrep01/df_test2

                               
                               
                               
                          
                    6、ENTRYPOINT命令 与CMD类似,惟一不同是不会被docker run指定的命令覆盖,如果要覆盖需要在docker run中指定
                                    docker run --entrypoint覆盖
                           
                   
       
                    构建缓存
                       
                   

docker镜像与容器关系总结:
            1、先是根据镜像创建一个容器;
            2、容器其实相当于一个微型虚拟机,可以在里面安装软件和部署应用
            3、容器可以被整个打包,提交成一个镜像;
            4、创建一个新的镜像可以基于一个已经存在的镜像






分享到:
评论

相关推荐

    基于alpine系统构建docker镜像,实现可配置和易于管理的docker镜像

    基于alpine系统构建docker镜像,实现可配置和易于管理的docker镜像。 项目简介 提供非常小的docker镜像。 提供易于配置的docker镜像。 提供非常稳定的docker镜像。 使用docker镜像快速启用微服务架构。 使用docker...

    mysql8 docker 镜像

    MySQL8 Docker镜像是一种将MySQL数据库管理系统打包为可以在Docker容器中运行的形式。Docker是一个开源的应用容器引擎,可以将应用程序及其依赖打包到一个可移植的容器中,然后发布到任何支持Docker的平台上。MySQL...

    mysql5.7的docker镜像

    MySQL作为最流行的开源关系型数据库管理系统,也被整合进了Docker镜像市场中,让数据库的部署和管理变得更加轻便和灵活。 在本文中,我们将深入探讨如何使用MySQL 5.7的Docker镜像。首先,需要明确的是,Docker镜像...

    mysql 8.4.2 docker镜像包

    Docker镜像是一种轻量级、可执行的独立软件包,包含运行应用程序所需要的一切:代码、运行时环境、库、环境变量和配置文件。 本篇将详细讨论有关MySQL 8.4.2版本的Docker镜像包的信息。首先,MySQL 8.4.2是数据库的...

    neo4j Docker镜像-5.21.0

    尽管本文档没有提供具体的文件名称列表,但从标题“neo4j Docker镜像-5.21.0”可以推断,这些文件很可能是与Docker镜像有关的文档、配置文件、脚本或其他支持性文件,它们一起组成了能够让用户快速部署和使用Neo4j...

    docker镜像 mysql-5.7.44.tar

    Docker镜像是一种轻量级、可执行的独立软件包,包含运行应用程序所需的所有内容:代码、运行时、库、环境变量和配置文件。 标题中提到的“docker镜像 mysql-5.7.44.tar”指的是一个特定的Docker镜像文件,这个文件...

    nginx arm版本 docker镜像

    Nginx ARM版本Docker镜像通常包含了为ARM架构优化的Nginx二进制文件及其依赖库,同时也可能包含了Dockerfile,这是一个文本文件,包含了用于创建Docker镜像的所有命令。通过Dockerfile,开发者可以轻松地重新构建出...

    es 7.17.24docker镜像包

    Elasticsearch 7.17.24 Docker 镜像包是针对7.17.24版本的Elasticsearch构建的Docker镜像,适用于需要在Docker容器中部署和运行Elasticsearch服务的场景。Elasticsearch 是一个基于Lucene构建的开源、分布式、...

    mysql 5.7 docker 镜像 离线安装包

    mysql 5.7 docker 镜像 离线安装包 mysql 5.7 docker 镜像 离线安装包 mysql 5.7 docker 镜像 离线安装包 mysql 5.7 docker 镜像 离线安装包 mysql 5.7 docker 镜像 离线安装包 mysql 5.7 docker 镜像 离线安装包

    docker镜像openjdk8离线加载包

    Docker镜像是一个轻量级、可执行的独立软件包,包含运行应用程序所需要的所有内容:代码、运行时、库、环境变量和配置文件。由于镜像包含应用程序的执行环境,这就意味着它比传统的虚拟机更为轻便、启动速度更快。 ...

    Ubuntu:20.04 ARM64 docker镜像

    Ubuntu 20.04 ARM64 docker镜像是一种基于ARM架构的Ubuntu 20.04版本的docker镜像,它包含了Ubuntu操作系统的所有基本软件和功能,并且专门为ARM架构的处理器进行了优化。这种镜像非常适合在基于ARM处理器的设备上...

    docker镜像mysql5.7.24

    docker镜像mysql5.7.24

    kibana-7.17.24.tar docker镜像包

    标题中提到的“kibana-7.17.24.tar docker镜像包”,指的是7.17.24版本的Kibana软件的Docker镜像压缩包。Docker是一个开源的应用容器引擎,它允许开发者打包他们的应用以及依赖包到一个可移植的容器中,然后发布到...

    docker镜像 mysql-8.0.39(arm64).tar

    Docker镜像作为Docker容器运行的基石,是包含运行某个应用程序所需的所有文件和配置的包,可以说是Docker技术中的核心概念之一。Docker镜像的文件格式通常为.tar,它可以通过多种方式被构建、存储和分发。在本例中,...

    nginx1.26.2版本docker镜像

    “nginx1.26.2版本docker镜像”意味着这是一个由官方或其他开发者构建的 Docker 容器镜像,该镜像内置了预装好的 Nginx 服务器,版本为 1.26.2。使用 Docker 镜像的好处在于,它允许用户在多种不同的环境下,快速...

    ubuntu24.04的docker镜像

    ubuntu24.04的docker镜像

    rabbitmq docker镜像压缩包

    rabbitmq docker镜像压缩包

Global site tag (gtag.js) - Google Analytics