docker 入门学习一

jopen 8年前

基本概念

  • 镜像(image):Docker 镜像就是一个只读的模板。一个镜像可以包含一个完整的 ubuntu 操作系统环境,里面仅安装了 Apache 或用户需要的其它应用程序。镜像可以用来创建 Docker 容器。
  • 容器(container):容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
  • 仓库(repository):仓库是集中存放镜像文件的场所。

镜像

获取镜像

docker pull ubuntu:12.04  与下面的命令等同  docker pull registry.hub.docker.com/ubuntu:12.04  如果官方仓库比较慢可以用其他仓库  docker pull dl.dockerpool.com:5000/ubuntu:12.04

使用该镜像创建容器:

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

列出本地镜像

docker images  REPOSITORY       TAG      IMAGE ID      CREATED      VIRTUAL SIZE  ubuntu           12.04    74fe38d11401  4 weeks ago  209.6 MB  ubuntu           precise  74fe38d11401  4 weeks ago  209.6 MB  ubuntu           14.04    99ec81b80c55  4 weeks ago  266 MB

在列出信息中,可以看到几个字段信息:

  • 来自于哪个仓库,比如 ubuntu
  • 镜像的标记,比如 14.04
  • 它的 ID 号(唯一)
  • 创建时间
  • 镜像大小

创建镜像

启用一个下载的镜像的容器:

docker run -t -i training/sinatra /bin/bash  root@0b2616b0e5a8:/#  root@0b2616b0e5a8:/# gem install json    //提交当前容器    docker commit -m "Added json gem" -a "Docker Newbee" 0b2616b0e5a8 ouruser/sinatra:v2  4f177bd27a9ff0f6dc2a830403925b5360bfe0b93d476f7fc3231110e7f71b1c
  • -m :指定提交的说明信息
  • -a :指定更新的用户信息
  • 0b2616b0e5a8 是用来创建镜像的容器的 id
  • 最后指定目标镜像的仓库名和 tag 信息。创建成功后会返回这个镜像的 ID 信息。

移除本地镜像

如果要移除本地的镜像,可以使用 docker rmi 命令。注意 docker rm 命令是移除容器。

docker rmi training/sinatra  Untagged: training/sinatra:latest  Deleted: 5bc342fa0b91cabf65246837015197eecfa24b2213ed6a51a8974ae250fedd8d  Deleted: ed0fffdcdae5eb2c3a55549857a8be7fc8bc4241fb19ad714364cbfd7a56b22f  Deleted: 5c58979d73ae448df5af1d8142436d81116187a7633082650549c52c3a2418f0

注意:在删除镜像之前要先用 docker rm 删掉依赖于这个镜像的所有容器。

容器

启动容器

启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(stopped)的容器重新启动。

docker run ubuntu:14.04 /bin/echo 'Hello world'  Hello world

下面的命令则启动一个 bash 终端,允许用户进行交互。

docker run -t -i ubuntu:14.04 /bin/bash  root@af8bae53bdd3:/#
  • -t :选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上
  • -i :则让容器的标准输入保持打开。

当利用 docker run 来创建容器时,Docker 在后台运行的标准操作包括:

  • 检查本地是否存在指定的镜像,不存在就从公有仓库下载
  • 利用镜像创建并启动一个容器
  • 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
  • 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
  • 从地址池配置一个 ip 地址给容器
  • 执行用户指定的应用程序
  • 执行完毕后容器被终止

启动已终止容器

可以利用 docker start 命令,直接将一个已经终止的容器启动运行。

可以通过 docker ps 命令来查看容器信息。

docker ps  CONTAINER ID  IMAGE         COMMAND               CREATED        STATUS       PORTS NAMES  77b2dc01fe0f  ubuntu:14.04  /bin/sh -c 'while tr  2 minutes ago  Up 1 minute        agitated_wright

可以使用 docker stop 来终止一个运行中的容器。

此外,docker restart 命令会将一个运行态的容器终止,然后再重新启动它。

仓库

用户无需登录即可通过 docker search 命令来查找官方仓库中的镜像,并利用 docker pull 命令来将它下载到本地。

docker search centos  INDEX       NAME                                        DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED  docker.io   docker.io/centos                            The official build of CentOS.                   1823      [OK]  docker.io   docker.io/jdeathe/centos-ssh                CentOS-6 6.7 x86_64 / EPEL/IUS Repos / Ope...   14                   [OK]  docker.io   docker.io/jdeathe/centos-ssh-apache-php     CentOS-6 6.7 x86_64 / Apache / PHP / PHP m...   11                   [OK]  docker.io   docker.io/million12/centos-supervisor       Base CentOS-7 with supervisord launcher, h...   9                    [OK]  docker.io   docker.io/blalor/centos                     Bare-bones base CentOS 6.5 image                8                    [OK]  docker.io   docker.io/nimmis/java-centos                This is docker images of CentOS 7 with dif...   7                    [OK]  docker.io   docker.io/torusware/speedus-centos          Always updated official CentOS docker imag...   7                    [OK]

【参考资料】

  1. Docker从入门到实践

---EOF---

来自: http://renchx.com/docker1/

</code></code></code></code></code></code></code></code></code>