zoukankan      html  css  js  c++  java
  • docker探索-镜像使用(四)

     前言

      当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载。

    1、查看本地主机上的镜像列表

    [root@jacky jacky]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    <none>              <none>              5ae9a10a7f42        15 hours ago        209.1 MB
    jacky/ubuntu        v2                  9634808b727b        18 hours ago        137.2 MB
    docker.io/ubuntu    14.04               3aa18c7568fc        11 days ago         188 MB
    docker.io/ubuntu    15.10               9b9cb95443b5        16 months ago       137.2 MB

     各个选项说明:

    • REPOSITORY:表示镜像的仓库源

    • TAG:镜像的标签

    • IMAGE ID:镜像ID

    • CREATED:镜像创建时间

    • SIZE:镜像大小

    同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,如ubuntu仓库源里,有15.10、14.04等多个不同的版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。

    所以,我们如果要使用版本为15.10的ubuntu系统镜像来运行容器时,命令如下:

    [root@jacky jacky]# docker run -t -i ubuntu:15.10 /bin/bash
    WARNING: IPv4 forwarding is disabled. Networking will not work.
    root@4ec45ca29362:/#

    如果要使用版本为14.04的ubuntu系统镜像来运行容器时,命令如下:

    [root@jacky jacky]# docker run -t -i ubuntu:14.04 /bin/bash 
    WARNING: IPv4 forwarding is disabled. Networking will not work.
    root@95227f4f6e29:/# 

    如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像。

    2、下载一个新镜像

    当我们在本地主机上使用一个不存在的镜像时 Docker 就会自动下载这个镜像。如果我们想预先下载这个镜像,我们可以使用 docker pull 命令来下载它。

    [root@jacky jacky]# docker pull centos:7.2.1511
    Trying to pull repository docker.io/library/centos ... 
    7.2.1511: Pulling from docker.io/library/centos
    f2d1d709a1da: Pull complete 
    Digest: sha256:7c47810fd05ba380bd607a1ece3b4ad7e67f5906b1b981291987918cb22f6d4d
    [root@jacky jacky]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    <none>              <none>              5ae9a10a7f42        16 hours ago        209.1 MB
    jacky/ubuntu        v2                  9634808b727b        18 hours ago        137.2 MB
    docker.io/ubuntu    14.04               3aa18c7568fc        11 days ago         188 MB
    docker.io/centos    7.2.1511            0a2bad7da9b5        12 days ago         194.6 MB
    docker.io/ubuntu    15.10               9b9cb95443b5        16 months ago       137.2 MB

    3、搜索镜像

      使用 docker search 命令来搜索镜像。比如我们需要一个httpd的镜像来作为我们的web服务。我们可以通过 docker search 命令搜索 httpd 来寻找适合我们的镜像

    [root@jacky jacky]# docker search httpd
    INDEX       NAME                                          DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
    docker.io   docker.io/httpd                               The Apache HTTP Server Project                  1338      [OK]       
    docker.io   docker.io/hypriot/rpi-busybox-httpd           Raspberry Pi compatible Docker Image with ...   38                   
    docker.io   docker.io/centos/httpd                                                                        15                   [OK]
    docker.io   docker.io/armhf/httpd                         The Apache HTTP Server Project                  8                    
    docker.io   docker.io/centos/httpd-24-centos7             Platform for running Apache httpd 2.4 or b...   4                    
    docker.io   docker.io/macadmins/netboot-httpd             use in combination with bruienne/bsdpy          4                    [OK]
    docker.io   docker.io/lolhens/httpd                       Apache httpd 2 Server                           2                    [OK]
    docker.io   docker.io/salim1983hoop/httpd24               Dockerfile running apache config                2                    [OK]
    docker.io   docker.io/antoineco/httpd-mod_cluster         Apache HTTP Server with JBoss mod_cluster       1                    [OK]
    docker.io   docker.io/lead4good/httpd-fpm                 httpd server which connects via fcgi proxy...   1                    [OK]
    docker.io   docker.io/rgielen/httpd-image-php5            Docker image for Apache httpd with PHP 5 b...   1                    [OK]
    docker.io   docker.io/rgielen/httpd-image-simple          Docker image for simple Apache httpd based...   1                    [OK]
    docker.io   docker.io/antoineco/httpd                     Extra OS variants for the official HTTPd i...   0                    [OK]
    docker.io   docker.io/dockerpinata/httpd                                                                  0                    
    docker.io   docker.io/efrecon/httpd                       A micro-sized httpd. Start serving files i...   0                    [OK]
    docker.io   docker.io/jbpt/httpd                                                                          0                    [OK]
    docker.io   docker.io/manageiq/httpd                      Container with httpd, built on CentOS for ...   0                    [OK]
    docker.io   docker.io/manasip/httpd                                                                       0                    
    docker.io   docker.io/openbucks/httpd                                                                     0                    
    docker.io   docker.io/ppc64le/httpd                       The Apache HTTP Server Project                  0                    
    docker.io   docker.io/publici/httpd                       httpd:latest                                    0                    [OK]
    docker.io   docker.io/sbutler/pie-httpd                   PIE httpd server                                0                    
    docker.io   docker.io/tplatform/aws-linux-httpd24-php70   aws-linux-httpd24-php70                         0                    [OK]
    docker.io   docker.io/trollin/httpd                                                                       0                    
    docker.io   docker.io/visualops/httpd 

    4、创建镜像

    当我们从docker镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。

    • 1.从已经创建的容器中更新镜像,并且提交这个镜像
    • 2.使用 Dockerfile 指令来创建一个新的镜像

    5、通过更新的方式创建镜像

    [root@jacky jacky]# docker run --dns 8.8.8.8 --dns 8.8.4.4 -it -P centos:7.2.1511 /bin/bash

    运行的容器内使用 yum install vim  命令进行更新。

    在完成操作之后,输入 exit命令来退出这个容器。

    [root@jacky jacky]# docker commit -m="jacky update" -a="jacky" 488f3af35f5e jacky/centos:v3
    sha256:67a8ec824059fe71bc162984e9e8ed65af8d03511c92f5c8f69c4a0783210d99
    [root@jacky jacky]# 

    各个选项说明:

    • -m:提交的描述信息

    • -a:指定镜像作者

    • 488f3af35f5e:容器ID
    • jacky/centos:v3:指定要创建的目标镜像名

    使用 docker images 命令来查看我们的新镜像jacky/centos:v3

    6、通过Dockerfile文件的方式创建镜像

    我们使用命令 docker build , 从零开始来创建一个新的镜像。为此,我们需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像

    [root@jacky ubantu]# vim Dockerfile

    Dockerfile文件内容如下:

    FROM ubuntu:14.04
    MAINTAINER dormancypress "1073740572@qq.com"
    RUN apt-get update
    EXPOSE  22
    EXPOSE  80
    CMD /usr/sbin/sshd -D

    每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。

    第一条FROM,指定使用哪个镜像源

    RUN 指令告诉docker 在镜像内执行命令,安装了什么。。。

    然后,我们使用 Dockerfile 文件,通过 docker build 命令来构建一个镜像。

    [root@jacky ubantu]# docker build -t jacky/ubuntu:14.05 .
    Sending build context to Docker daemon 2.048 kB
    Step 1 : FROM ubuntu:14.04
     ---> 3aa18c7568fc
    Step 2 : MAINTAINER dormancypress "1073740572@qq.com"
     ---> Using cache
     ---> 7cc1c96b8616
    Step 3 : RUN apt-get update
     ---> Using cache
     ---> 5ae9a10a7f42
    Step 4 : EXPOSE 22
     ---> Running in c9ffc6389c8a
     ---> a82207354da4
    Removing intermediate container c9ffc6389c8a
    Step 5 : EXPOSE 80
     ---> Running in 1d45086f7859
     ---> c2cfb89e4d3e
    Removing intermediate container 1d45086f7859
    Step 6 : CMD /usr/sbin/sshd -D
     ---> Running in b81b738a142b
     ---> ff41e3aca80b
    Removing intermediate container b81b738a142b
    Successfully built ff41e3aca80b

    参数说明:

    • -t :指定要创建的目标镜像名

    • . :Dockerfile 文件所在目录

    使用docker images 查看创建的镜像已经在列表中存在,然后根据镜像创建容器并启动

    7、设置镜像标签

    我们可以使用 docker tag 命令,为镜像添加一个新的标签。

    [root@jacky ubantu]# docker tag ff41e3aca80b jacky/ubuntu:dev

    各选项说明

    • ff41e3aca80b  镜像Id
    • jacky/ubuntu:dev REPOSITORY:TAG

    查询镜像,如下:

  • 相关阅读:
    GPON和820.1p学习及资料(zt)
    modelsim(3)
    JTAG 学习 -SVF格式
    看来人工智能不可阻挡,将和网络与计算机一样服务于各行各业!
    【管理心得之二十六】职场中的“武功”
    【管理心得之二十五】组织中的骂名 ----------墙头草
    【管理心得之二十四】成功乃失败之母
    【管理心得之二十三】道是道,非常道。名可名,非常名。
    【管理心得之二十二】小人物 仰视 大授权
    【管理心得之二十一】管得少就是管得好
  • 原文地址:https://www.cnblogs.com/520playboy/p/7843911.html
Copyright © 2011-2022 走看看