教程

http://dockone.io/article/101

http://www.runoob.com/docker/docker-hello-world.html

 1、什么是docker?

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

简单点理解,就类似于虚拟机(VMware),只不过VMware虚拟的是整个操作系统,而docker轻量级些,虚拟的是一个进程。

2、docker架构

Docker 镜像(Images)

Docker 镜像是用于创建 Docker 容器的模板。

Docker 容器(Container)

容器是独立运行的一个或一组应用。

Docker 客户端(Client)

Docker 客户端通过命令行或者其他工具使用 Docker API (https://docs.docker.com/reference/api/docker_remote_api) 与 Docker 的守护进程通信。

Docker 主机(Host)

一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。

Docker 仓库(Registry)

Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。

Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。

Docker Machine

Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

Docker 容器通过 Docker 镜像来创建。

容器与镜像的关系类似于面向对象编程中的对象与类。

Docker面向对象
容器 对象
镜像

简单点理解就是:docker服务器提供的服务,docker客户端连接docker服务器,执行具体的操作。例如:docker run centos6,docker服务器通过docker镜像运行一个容器(centos6)。

3、安装docker

  查看http://www.runoob.com/docker/ubuntu-docker-install.html

4、docker的常用命令

       docker --help 查看docker帮助文档

  docker version  查看docker版本

       docker info  查看docker详细信息

  镜像:

              docker 对镜像的处理跟git还是非常相似的

    docker images  查看本地镜像     

      REPOSTITORY:表示镜像的仓库源

      TAG:镜像的标签

      IMAGE ID:镜像ID

      CREATED:镜像创建时间

      SIZE:镜像大小

                     同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,如ubuntu仓库源里,有15.10、14.04等多个不同的版本,我们使用 REPOSTITORY:TAG 来定义不同的镜像。  

                image_name = [REPOSITORY + TAG] 或者 [IMAGE ID]

              docker search [image_name]  查找镜像,例如 docker search centos6

              docker pull [image_name]  下载镜像,例如 docker pull docker.io/guyton/centos6

              docker commit [container_id]  根据容器状态,创建一个新的镜像。登录容器后,我们经常需要安装一些软件,但是如果我们不保存容器状态,直接退出。那么下次docker run centos6的时候,是根据centos6这个镜像来创建一个新的容器,自然不会有我们安装的软件。所以如果你安装了一些软件,要想下次登录的时候还可以使用这些软件,第一种方式:通过 docker ps -l获取容器id,docker commit 容器id创建一个新的镜像。第二种方式,不要退出容器,docker rm 容器id。

             docker push [image_name] 推送镜像到仓库

             如果你向执行docker push操作,那么必须到在DockerHub上创建账号:https://hub.docker.com/,然后docker login 登录

             docker tag [image_name] [your_tag_name]

       容器:

             docker run [image_name]   根据镜像启动一个新容器

                     例如:docker run ubuntu:15.10 /bin/echo "Hello world"  #如果不指定tag,tag默认为最新版本,启动一个ubuntu容器,并执行一条语句、

                                docker run -i -t ubuntu:15.10 /bin/bash  #运行交互式的容器  

            -t:在新容器内指定一个伪终端或终端。

            -i:允许你对容器内的标准输入 (STDIN) 进行交互。

                               docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done" #启动容器(后台模式),如果想要查看输出,使用docker log

                                         -d:让容器在后台运行。

                               docker run -d -P training/webapp python app.py

            -P:将容器内部使用的网络端口映射到我们使用的主机上

              通过docker ps/docker port [container_id\container_name] 查看端口信息,0.0.0.0:32768->5000/tcp  :将主机端口 32768映射到docker容器的5000端口

                                           docker run -d -p 5000:5000 training/webapp python app.py #指定端口映射地址

              docker log [container_id\container_name] 查看容器输出

              docker ps  #查看running的容器进程信息

              docker stop/start/restart [container_id\container_name] #停止/启动/重启容器

              docker stats #查看running容器的内存、cpu使用率等信息

              docker rm [container_id\container_name] #删除一个容器,在删除容器前必须停止容器(docker stop)