Docker概念与常用命令

image

什么是Docker?

  • Docker是PaaS提供商dotCloud开源的基于LXC的,源代码托管在Github上的,基于Go语⾔言并遵从Apache2.0协议开源。
  • Docker可以让开发者打包他们的应⽤用以及依赖包到⼀一个轻量量级、可移植的容器器中,然后发布到任何流行的Linux机器器上,也可以实现虚拟化。
  • 容器器是完全使⽤用沙箱机制,相互之间不不会有任何接口(类似iPhone 的 app),更更重要的是容器器性能开销极低。

Docker的应用场景

  • Web 应⽤用的⾃自动化打包和发布.
  • 创建轻量、私有的PaaS环境.
  • 自动化测试和持续集成(CI)/持续部署(CD).
  • 部署并扩展Web应⽤用、数据库和后端服务器.

VM与Container

image

Docker 的优点

  • 秒级启动,秒级停止,空间资源占⽤用极少(几M)
  • 实现进程级别的隔离
  • 可在普通服务器上建立成百上千个 docker 实例
  • 加快开发测试部署的速度
  • 简化版本管理

Docker 架构

image

Docker 三大核心

image

Docker 镜像(Images)

  • 类似于虚拟机镜像,但是更轻量,可以理解为面向Docker引擎的只读模板
  • 可从DockerHub下载数以千记的、由各应用官方发布的应用镜像,比如Redis、Mysql、nginx等
  • 镜像可以用来创建容器

Docker 容器(Container)

  • 容器器是从镜像创建的应⽤用运⾏行行实例例,可以将其启动、停⽌止、重启、删除
  • 可以把容器器看做是⼀一个简易易版的 Linux 环境(包括 root 用户权限、进程空间、⽤用户空间和⽹网络空间等)和运行在其中的应⽤用程序打包而成的应用盒子
  • 镜像本身是只读的,容器从镜像启动之后,Docker会在镜像的最上层创建一个可写层,而镜像本身将保持不不变

Docker 仓库(Registry)

  • 仓库是集中存放镜像文件的场所,为Docker镜像⽂文件的分发和管理提供了便捷的途径
  • 仓库分为公开仓库(Public)和私有仓库(Private)两种形式

    • 公开仓库——Docker Hub、Docker Pool
    • 私有仓库——Docker registry、Docker Trusted Registry
  • push 镜像到仓库,从仓库pull下镜像

常用命令

Docker 客户端

# docker
image

获取⼀个新的镜像

# docker pull ubuntu:13.10
image

列出镜像列表

# docker images
image

查找镜像

# docker search httpd
image

创建/更新镜像

# docker commit -m="has update" -a=“sunweiwei" 8c8024bc508a mtime/ubuntu:v2
image

删除镜像

# docker rmi 015e47e33893

# docker rmi -f 015e47e33893
image

设置镜像标签

# docker tag 493789124fdd mtime/ubuntu:dev
image

推送镜像

# docker login

# docker push sundful/ubuntu:v2
image

启动容器

交互式进入容器中

docker run -i -t ubuntu:15.10 /bin/bash
image

在容器中安装新的程序

docker run centos yum -y install vim
image

查看容器

列出当前正在运行的容器

# docker ps
image

列出所有的容器

# docker ps -a
image

列出最近一次启动的容器

# docker ps -l
image

对容器的操作

删除容器

# docker rm `docker ps -a -q`
# docker rm c94027fc1465/nauseous_wilson

image

停止、启动、重启、杀死一个容器

# docker stop c94027fc1465/nauseous_wilton
# docker start c94027fc1465/nauseous_wilson
# docker restart c94027fc1465/nauseous_wilson
# docker kill c94027fc1465/nauseous_wilson

image

从一个容器中取日志

# docker logs c94027fc1465/nauseous_wilton

列出容器里面被改变的文件或者目录,A 增加的,D 删除的,C 被改变的

# docker diff c94027fc1465/nauseous_wilton

显示一个运行的容器里面的进程信息

# docker top c94027fc1465/nauseous_wilton

从容器里面拷贝文件/目录到本地一个路径

# docker cp c94027fc1465/nauseous_wilton:/home/mtime/a.txt /data/test/

进入容器

# docker exec -ti c94027fc1465/nauseous_wilton /bin/bash

推送镜像到私有仓库

# docker tag mtime/ubuntu:v2 192.168.9.204:5000/mtime/ubuntu:v2

# docker push 192.168.9.204:5000/mtime/ubuntu:v2
image

标签: docker, 虚拟化, 容器