`

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、创建一个新的镜像可以基于一个已经存在的镜像






分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics