Docker

什么是docker

Docker is the world's leading software containerization platform.
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。


为什么要用docker

举个栗子
Docker_第1张图片

假设用户试图基于最常见的LAMP(Linux+Apache+MySQL+PHP)组合来运维一个网站。

传统做法:
  1. 需要安装Apache、MySQL和PHP以及它们各自运行所依赖的环境;
  2. 分别对它们进行配置(包括创建合适的用户、配置参数等);
  3. 之后需要进行功能测试,看是否工作正常,如果不正常,意味着更多的时间代价和不可控的风险。

如果再加上更多的应用,事情会变得更加难以处理,而且一旦需要服务器迁移(例如从阿里云迁移到腾讯云),则需要重新部署和调试。大大地降低了工作效率

Docker:
  1. 通过容器来打包应用
  2. 迁移只需要在新的服务器上启动需要的容器就可以了

docker节约了大量的宝贵时间,并降低部署过程出现问题的风险


Docker与传统虚拟机对比
Docker_第2张图片
Docker容器与传统虚拟机对比

Docker有以下几个优点:
  • 更快速的交付和部署
  • 更高效的虚拟化
  • 更轻松的迁移和扩展
  • 更简单的管理

Docker基本概念
  • 镜像(Image)
    类似于虚拟机镜像,可以理解为一个面向Docker引擎的只读模板,包含了文件系统
  • 容器(Container)
    类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用
  • 仓库(Repository)
    类似于代码仓库,是Docker集中存放镜像文件的场所。
    注:Docker利用仓库管理镜像的设计理念与Git非常相似

仓库、镜像、容器之间的关系
  • 镜像是创建Docker容器的基础,容器是从镜像创建的应用运行实例,镜像自身是只读的,容器镜像启动的时候,Docker会在镜像的最上层创建一个可写层,镜像本身保持不变;
  • 仓库是Docker集中存放镜像文件的场所。

在使用docker命令的时候总要加上sudo,以下三句代码可以解决这个问题。

$sudo groupadd docker
#将当前用户加入docker组
$sudo gpasswd -a ${USER} docker
#重启docker服务
$sudo service docker restart

镜像操作常用命令

镜像是只读的

  • docker pull NAME[:TAG]从网上下载镜像
    Docker_第3张图片
  • docker images列出本地主机上已有的镜像
    Docker_第4张图片
  • docker rmi IMAGE[IMAGE...]删除镜像,其中IMAGE可以为TAG或ID
    注意:若该镜像创建的容器存在,镜像文件无法删除,必须删除该镜像创建的容器后,才可以删除该镜像

容器操作常用命令
  • docker create新建一个容器
  • docker ps查看容器
  • docker start启动容器
  • docker run新建并启动一个容器
  • docker stop终止容器
  • docker restart重启容器
  • docker exec进入容器操作
  • docker rm删除处于终止状态的容器
  • 参数
    • -t让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上
    • -i让容器的标准输入保持打开
    • -d让容器在后台以守护态(Daemonized)形式运行

你可能感兴趣的:(Docker)