Docker的基本组成

73600-4k8lz4i4zi8.png

  • 镜像(Image): docker镜像, 就相当于是镜像模板, 比如官方镜像Ubuntu:16.04就包含了完整的一套Ubuntu16.4最小系统 可以通过镜像来创建一个或多个容器.
  • 容器(Container): 镜像和容器的关系, 就像面向对象程序设计种的类和对象一样, 镜像是静态的定义, 容器时镜像运行时的实体, 容器可以被创建 启动 停止 删除 暂停等.
  • 仓库(Repository): 仓库可看成一个代码控制中心, 用来保存镜像. 仓库分为公有仓库和私有仓库. 其中DockerHub就是docker官方的仓库地址

安装

docker官方文档 我的系统是 ubuntu 所以接下来的教程都是在 ubuntu 中安装的

  1. 卸载旧的版本
sudo apt-get remove docker docker-engine docker.io containerd runc
  1. 更新apt软件源并允许apt通过HTTPS使用仓库
sudo apt-get update

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
  1. 添加Docker的官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  1. 设置Docker稳定版软件源
# 官方源, 国内安装比较慢推荐使用阿里云的
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

# 阿里云软件源
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
  1. 添加仓库后, 更新apt源索引 并且安装最新的 docker-ce 社区版
sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io
  1. 启动docker
sudo service docker start
  1. 使用 docker version 判断是否安装成功

36515-y5hleldy74.png

运行 hello-world

使用 docker run hello-world

45087-h5ack7tnbnw.png

  • 上图可以看到第一步运行 docker run hello-world 命令后先在本来没有在本地找到 hello-world 镜像
  • 第二步开始去远程仓库拉去 hello-world 镜像, 拉去完成之后返回一串签名信息
  • 第三步输出了 Hello from Docker! 表示已经完成了

docker run 命令详细分析

01534-qm17l6vxey.png

查看下载的镜像

docker images

01432-o3sc2ejyu9g.png

卸载 docker

  1. 卸载Docker Engine, CLI和Containerd软件包
sudo apt-get purge docker-ce docker-ce-cli containerd.io
  1. 手动删除docker的资源 比如: images, containers, volumes
sudo rm -rf /var/lib/docker

Docker底层原理

Docker是怎么工作的?

  • Docker是一个 Client - Server 结构的系统, Docker的守护进程运行在主机上, 通过 Socket从客户端访问
  • DockerServer 接收到 DockerClient的指令, 就会执行这个命令

17909-x35oynbw52i.png

Docker为什么比虚拟机快

59067-4cpj4c4zmml.png

  1. Docker有着比虚拟机更少的抽象层
  2. Docker利用的是宿主机的内核, 而 vm 需要 Guest OS.
  3. 所以说新建一个容器的时候 docker需要像虚拟机一个重新加载一个操作系统内核避免引导, 虚拟机加载GuestOS是分钟级的. 而docker是里面宿主机的操作系统, 省略了复杂的过程是秒级的.

标签: Docker

添加新评论