• Docker学习(三)——Docker镜像使用


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

    1、镜像使用
        (1)列出镜像列表:docker images
            使用docker images来列出本地主机上的镜像

    docker images          
    	REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    	ubuntu              14.04               90d5884b1ee0        5 days ago          188 MB
    	php                 5.6                 f40e9e0f10c8        9 days ago          444.8 MB
    	nginx               latest              6f8d099c3adc        12 days ago         182.7 MB
    	mysql               5.6                 f2e8d6c772c0        3 weeks ago         324.6 MB
    	httpd               latest              02ef73cf1bc0        3 weeks ago         194.4 MB
    	ubuntu              15.10               4e3b13c8a266        4 weeks ago         136.3 MB
    	hello-world         latest              690ed74de00f        6 months ago        960 B
    	training/webapp     latest              6fae60ef3446        11 months ago       348.8 MB
    各个选项说明:
    	REPOSITORY:表示镜像的仓库源
    	TAG:镜像的标签
    	IMAGE ID:镜像ID
    	CREATED:镜像创建时间
    	SIZE:镜像大小
    同一仓库源可以有多个TAG,代表这个仓库源的不同个版本,如ubuntu仓库源里,有15.10、14.04等多个不同的版本,我们使用REPOSITORY:TAG来定义不同的镜像。
    如果你不指定一个镜像的版本标签,例如你只使用ubuntu,docker 将默认使用ubuntu:latest 镜像。
    

        (2)获取一个新的镜像:docker pull
            当我们在本地主机上使用一个不存在的镜像时Docker就会自动下载这个镜像。如果我们想预先下载这个镜像,我们可以使用docker pull命令来下载它。
        (3)查找镜像:docker search
            使用docker search命令来搜索镜像。比如我们需要一个httpd的镜像来作为我们的web服务。我们可以通过docker search命令搜索httpd来寻找适合我们的镜像。

    docker search httpd
    各个选项说明:
    	NAME:镜像仓库源的名称
    	DESCRIPTION:镜像的描述
    	OFFICIAL:是否docker官方发布
    	stars: 类似Github里面的star,表示点赞、喜欢的意思。
    	AUTOMATED: 自动构建。
    

        (4)运行镜像:docker run 镜像名
        (5)删除镜像:docker rmi 镜像名
        (6)创建镜像
            当我们从 docker 镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改:
            ①从已经创建的容器中更新镜像,并且提交这个镜像。
            ②使用Dockerfile指令来创建一个新的镜像。

    2、更新镜像
          i.更新镜像之前,我们需要使用镜像来创建一个容器。

    runoob@runoob:~$ docker run -t -i runoob/ubuntu:v2 /bin/bash                            
    root@1a9fbdeb5da3:/# 
    

          ii.在运行的容器内使用 apt-get update 命令进行更新。
            在完成操作之后,输入exit命令来退出这个容器。
          iii.此时ID为e218edb10161的容器,是按我们的需求更改的容器。我们可以通过命令docker commit来提交容器副本。

    runoob@runoob:~$ docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2
    sha256:70bf1840fd7c0d2d8ef0a42a817eb29f854c1af8f7c59fc03ac7bdee9545aff8
     各个参数说明:
    	-m:提交的描述信息
    	-a:指定镜像作者
    	e218edb10161:容器ID
        runoob/ubuntu:v2: 指定要创建的目标镜像名
    

          iv.我们可以使用docker images命令来查看我们的新镜像runoob/ubuntu:v2:

      runoob@runoob:~$ docker images
    	REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    	runoob/ubuntu       v2                  70bf1840fd7c        15 seconds ago      158.5 MB
    	ubuntu              14.04               90d5884b1ee0        5 days ago          188 MB
    	php                 5.6                 f40e9e0f10c8        9 days ago          444.8 MB
    	nginx               latest              6f8d099c3adc        12 days ago         182.7 MB
    	mysql               5.6                 f2e8d6c772c0        3 weeks ago         324.6 MB
    	httpd               latest              02ef73cf1bc0        3 weeks ago         194.4 MB
    	ubuntu              15.10               4e3b13c8a266        4 weeks ago         136.3 MB
    	hello-world         latest              690ed74de00f        6 months ago        960 B
    	training/webapp     latest              6fae60ef3446        12 months ago       348.8 MB
    

          v.使用我们的新镜像runoob/ubuntu 来启动一个容器

      runoob@runoob:~$ docker run -t -i runoob/ubuntu:v2 /bin/bash                            
      root@1a9fbdeb5da3:/#
    

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

    runoob@runoob:~$ cat Dockerfile 
    FROM            centos:6.7
    MAINTAINER      Fisher "fisher@sudops.com"
    
    RUN     /bin/echo 'root:123456' |chpasswd
    RUN     useradd runoob
    RUN     /bin/echo 'runoob:123456' |chpasswd
    RUN     /bin/echo -e "LANG="en_US.UTF-8"" >/etc/default/local
    EXPOSE  22
    EXPOSE  80
    CMD     /usr/sbin/sshd -D
    每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。
    第一条FROM,指定使用哪个镜像源
    RUN 指令告诉docker 在镜像内执行命令,安装了什么。。。
    

          ii.使用Dockerfile文件,通过docker build命令来构建一个镜像。

    runoob@runoob:~$ docker build -t runoob/centos:6.7 .
    	Sending build context to Docker daemon 17.92 kB
    	Step 1 : FROM centos:6.7
    	 ---> d95b5ca17cc3
    	Step 2 : MAINTAINER Fisher "fisher@sudops.com"
    	 ---> Using cache
    	 ---> 0c92299c6f03
    	Step 3 : RUN /bin/echo 'root:123456' |chpasswd
    	 ---> Using cache
    	 ---> 0397ce2fbd0a
    	Step 4 : RUN useradd runoob
    	......
    参数说明:
    	-t:指定要创建的目标镜像名
    	. :Dockerfile文件所在目录,可以指定Dockerfile的绝对路径
    

          iii.使用docker images查看创建的镜像已经在列表中存在,镜像ID为860c279d2fec

      runoob@runoob:~$ docker images 
    	REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
    	runoob/centos       6.7                 860c279d2fec        About a minute ago   190.6 MB
    	runoob/ubuntu       v2                  70bf1840fd7c        17 hours ago         158.5 MB
    	ubuntu              14.04               90d5884b1ee0        6 days ago           188 MB
    	php                 5.6                 f40e9e0f10c8        10 days ago          444.8 MB
    	nginx               latest              6f8d099c3adc        12 days ago          182.7 MB
    	mysql               5.6                 f2e8d6c772c0        3 weeks ago          324.6 MB
    	httpd               latest              02ef73cf1bc0        3 weeks ago          194.4 MB
    	ubuntu              15.10               4e3b13c8a266        5 weeks ago          136.3 MB
    	hello-world         latest              690ed74de00f        6 months ago         960 B
    	centos              6.7                 d95b5ca17cc3        6 months ago         190.6 MB
    	training/webapp     latest              6fae60ef3446        12 months ago        348.8 MB
    

          iv.使用新的镜像来创建容器

    runoob@runoob:~$ docker run -t -i runoob/centos:6.7  /bin/bash
    [root@41c28d18b5fb /]# id runoob
    uid=500(runoob) gid=500(runoob) groups=500(runoob)
    

          v.设置镜像标签:docker tag

    使用docker tag命令,为镜像添加一个新的标签:
    docker tag 镜像ID 新的标签名
    
  • 相关阅读:
    android 75 新闻列表页面
    android 74 下载文本
    android 73 下载图片
    android 72 确定取消对话框,单选对话框,多选对话框
    android 71 ArrayAdapter和SimpleAdapter
    android 70 使用ListView把数据显示至屏幕
    maven如何将本地jar安装到本地仓库
    Centos6.7搭建ISCSI存储服务器
    解决maven打包编译出现File encoding has not been set问题
    MySQL 解决 emoji表情 的方法,使用utf8mb4 字符集(4字节 UTF-8 Unicode 编码)
  • 原文地址:https://www.cnblogs.com/shujk/p/13664358.html
Copyright © 2020-2023  润新知