基本概念
- 镜像(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]
【参考资料】
- Docker从入门到实践
---EOF---