zoukankan      html  css  js  c++  java
  • Docker之镜像

    1、镜像

    镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容包括代码、运行时、库、环境变量和配置文件。

    镜像由多个层组成,每层叠加之后,从外部看来就如一个独立的对象。镜像内部是一个精简的操作系统(OS),同时还包含应用运行所必须的文件和依赖包。

    2、镜像相关命令

    2.1、查看镜像列表(docker images)

    docker images 命令列出本地主机上的镜像:

    上面可以看到只有一个 hello-world 的镜像。

    上面的各个选项说明:

    • REPOSITORY:表示镜像的仓库源

    • TAG:镜像的标签

    • IMAGE ID:镜像ID

    • CREATED:镜像创建时间

    • SIZE:镜像大小

    同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,如 ubuntu 仓库源里,有 12.10、14.04 等多个不同的版本,我们使用 REPOSITORY:TAG(比如:tomcat:3.2 )来定义不同的镜像。如果不指定一个镜像的版本标签,docker 将默认使用该镜像的 latest ,即最新镜像。

    也可以通过直接查看某个镜像:docker images 镜像名,示例:

    2.2、搜索镜像(docker search)

    我们可以通过浏览 Docker Hub 网站来搜索镜像,也可以使用 docker search 命令来搜索镜像。

    比如我们搜索 tomcat 镜像:

    可以发现,第一个就是我们想要找的 tomcat 镜像。

    2.3、获取镜像(docker pull)

    当我们在本地主机上直接通过 run 来使用一个不存在的镜像时,Docker 会自动下载这个镜像。当然,我们也可以通过 docker pull 命令来手动下载它。

    docker pull tomcat   #默认下载最新版本,等价于 docker pull tomcat:latest

    如果我们在下载或者使用时不指定版本,则默认使用的是最新版本。

    当然,我们也可以下载指定版本的镜像,直接在冒号后面加上版本号即可:

    docker pull tomcat:3.2

    2.4、删除镜像(docker rmi)

    镜像删除使用 docker rmi 命令,比如我们删除 hello-world 镜像:

    docker rmi hello-world  
    docker rmi -f hello-world  #强制删除
     
    docker rmi hello-world tomcat   #要想同时删除多个只需用空格分开镜像名称即可
    docker rmi $(docker images -qa) #删除全部镜像

    2.5、创建镜像

    2.5.1、基于原有的镜像创建新镜像(docker commit)

    我们可以基于现有的在运行的容器来做些修改,然后通过 docker commit 命令来将修改后的容器构建成一个镜像。语法如下:

    docker commit -m="描述信息" -a="作者名" 容器ID 镜像名:标签
    
    #示例
    docker commit -m="mytomcat" -a="wen" 85f874987777 wen/wentomcat:1.0   # wen/是命名空间,不用命名空间也行。镜像名不能有大写字母

    比如我们先运行一个 tomcat 容器,然后将该容器的 webapps.dist 文件夹内容复制到 webapps 下,修改过后通过 docker commit 命令将修改过后的容器构建成一个新的镜像:

    由此我们就可以看到在本地已经有我们新创建的镜像了:

    下面运行该镜像:

    上面我们通过将宿主机的 7777 端口映射到新的 tomcat 镜像的 8080 端口上运行,我们可以通过访问宿主机的 ip:7777 来访问 tomcat 的默认项目的首页:

    2.5.2、通过dockerfile创建镜像

    docker build 命令可用于从Dockerfile构建映像。

    语法结构如下:

    docker build -f 本地dockerfile文件绝对路径 -t 镜像名 .    #最后的 . 不要漏掉,表示Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径
    
    #示例
    docker build -f /usr/data/Dockerfile -t mycentos:1.0 .
  • 相关阅读:
    机器学习书籍推荐
    25个机器学习面试题,期待你来解答
    观点 | 如何优雅地从四个方面加深对深度学习的理解
    Azure Public IP DNS域名
    SSH不允许Root登陆的方法
    MySQL on Azure高可用性设计 DRBD
    Linux ssh 不需要输入密码的方法
    MySQL on Azure高可用性设计 DRBD
    Express Route的配置
    Azure PIP (Instance Level Public IP)
  • 原文地址:https://www.cnblogs.com/wenxuehai/p/15153766.html
Copyright © 2011-2022 走看看