图表君聊Docker-images

上篇文章咱们介绍了docker的历史由来带来的一些好处,从这篇文章开始,咱们开始正式的进入Docker的世界,首先给你们介绍一下Docker一些基本概念。python

Docker的基本概念

Docker的基本概念并非不少,就是三个:docker

  • 镜像(image)ubuntu

  • 容器(Container)bash

  • 仓库(Repository)curl

深刻理解这三个概念,对于docker的理解会有很大的帮助。ui

  1. 什么是image呢,简单来讲image就是一个镜像,一个系统的snapshot,能够类比于一个vm的image,或者若是你用过AWS,相似于一个AMI文件。url

  2. 什么是Container,Container是简易版的Linux环境,能够类比的与一个Virtual Machine 或者 一个EC2的instance。spa

  3. 那个image和Container什么关系呢?一个docker Container 须要加载一个image而后执行。image是run在Container里的。code

  4. 什么是repository呢?repository是一个image仓库,能够将打好的Docker image push这个仓库中与他人分享。blog

图片描述
相信上篇文章后你们已经把docker安装好了吧。下边咱们就来一步步的介绍这个三个概念。

Docker Image

运行docker pull命令能够从仓库中获取镜像。

docker pull ubuntu:16.04

当运行这条命令的时候,其实是从docker hub 上来请求标记为16.04 的Ubuntu image,固然因为众所周知的缘由,pull的速度会很慢。因此咱们能够选择从国内的一些repository来pull images。例如这样:

docker pull daocloud.io/ubuntu:14.04

如何看到咱们本地已经pull下来的images呢?使用docker images能够列出本地已有的镜像。

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
python              3.5-alpine          4f778158195b        5 days ago          87.58 MB
python              3.5.2-alpine        4f778158195b        5 days ago          87.58 MB
python              2.7-alpine          8b2171e895fd        3 weeks ago         71.97 MB

咱们能够看到他是来自哪一个仓库的,image的标价,全局惟一的ID,建立的时间 和镜像的大小。一样若是咱们想查看哪一个仓库的images 能够这样:

docker images ubuntu

images下载好了,咱们怎么运行这个image呢?easy

docker run -t -i ubuntu /bin/bash
    root@fc8e5743f790:/#

这样咱们就使用这个image建立了一个Container 并运行bash应用。ps.上边的 -t 让docker分配一个伪终端并绑定到容器的标准输入上,-i 让容器的标准输入保持打开。

下边的一个问题是如何建立一个image呢,有两种方法,一种是咱们基于现有的image,例如这样:

docker run -i -t ubuntu /bin/bash
    root@c5c7fa33b061:/# apt-get update && apt-get install -y curl
    ...

咱们建立了一个docker container 并在其中装上curl,这是注意咱们得记下他的ID。

docker commit c5c7fa33b061 ubuntu-have-curl
    docker history ubuntu-have-curl

咱们使用了docke commit 生成了一个new image ‘Ubuntu-have-curl’,并用docker history看看这个image的历史。
下来咱们用这个image来curl一下。

docker run ubuntu-have-curl curl https://www.baidu.com
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  2443  100  2443    0     0  12234      0 --:--:-- --:--:-- --:--:-- 12215

easy? Yes.这样咱们就build一个带curl的Ubuntu image,你能够把他push 到 docker hub上,让更多人使用了。

使用docker commit 能够对于一个镜像作些简单的扩展,但不方便分享和他人的利用。另一种方式是使用dockerfile,这是更加通用的方法,这里暂不详解,后边会专门的介绍dockerfile。

咱们看了pull,build,run一个image,下来看看如何删除吧。命令很简单 docker rmi

docker rmi ubuntu:14.04

当咱们使用了一段时间之后,咱们运行docker images会发现有不少没有tag的images,大量占据着磁盘空间,那么势必就要清理下了。
运行下边这条命令,咱们就能够清理下了。

$ sudo docker rmi $(docker images -q -f "dangling=true")

欢迎订阅个人公众号,第一时间获取图表君的新文章。

图片描述

相关文章
相关标签/搜索