Docker入门

1. Docker简介:

docker是一个基于LXC的高级容器引擎。简单地说,docker是一个轻量级的虚拟解决方案,或者说它是一个超轻量级的虚拟机(容器)。

Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。
Docker 的理念为“Build, Ship and Run Any App, Anywhere”

  • 基本概念

    • Docker Client:Docker提供给用户的客户端。
    • Docker Daemon:Docker服务的守护进程。
    • Docker Images:Docker的镜像,一张 “只读” 的系统CD。
    • Docker Container:Docker的容器,Docker Images运行实例。
    • Docker Registry : Docker Images的仓库,Dock Hub。
  • 架构

Docker入门

  • AUFS联合文件系统

AUFS 是一种 Union File System(联合文件系统),又叫 Another UnionFS,后来叫Alternative UnionFS,再后来叫成高大上的 Advance UnionFS。所谓 UnionFS,就是把不同物理位置的目录合并mount到同一个目录中。UnionFS的一个最主要的应用是,把一张CD/DVD和一个硬盘目录给联合 mount在一起,然后,你就可以对这个只读的CD/DVD上的文件进行修改(当然,修改的文件存于硬盘上的目录里)

Docker入门

  • LXC

LXC 就是 Linux Container。 LXC 也是一种轻量的虚拟技术,Linux 原生支持的容器。可以说 docker 就是基于 LXC 发展起来的,提供 LXC 的高级封装,发展标准的配置方法。

LXC可以在操作系统层次上为进程提供的虚拟的执行环境,一个虚拟的执行环境就是一个容器。可以为容器绑定特定的cpu和memory节点,分配特定比例的cpu时间、IO时间,限制可以使用的内存大小(包括内存和是swap空间),提供device访问控制,提供独立的namespace(网络、pid、ipc、mnt、uts),主要使用了cgroup技术。

CGroup是Control Groups的缩写,是Linux内核提供的一种可以限制、记录、隔离进程组所使用的硬件资源的机制。

  • 与虚拟机对比

Docker入门

2. Docker安装

brew cask install docker
或到官网下载
https://store.docker.com/editions/community/docker-ce-desktop-mac

3. Docker使用

  • 基本命令

    • 查询docker版本: docker version
    • 查看docker环境信息:docker info
    • 列出所有镜像:docker images
    • 列出运行状态的容器实例:docker ps
    • 从远程摘取docker镜像:docker pull [镜像名:版本号/tag]
    • 提交docker修改内容:docker commit [containerId] tag
    • 交互模式启动容器:docker run -it -p 8080:8080 -v /usr/local:/var/jenkins_home --name jenkins jenkins:latest
    • 后台模式启动容器:docker run -d -p 8080:8080 -v /usr/local:/var/jenkins_home --name jenkins jenkins:latest
    • 查看容器日志:docker logs [containerId]
    • 连接到docker容器终端上:docker attach [containerId]
    • 查看容器或镜像详细信息:docker inspect [containerId/imageId]
    • 在容器上执行命令:docker exec [containerId] COMMAND [ARG...]

4. Dockerfile

Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。它们简化了从头到尾的流程并极大的简化了部署工作。Dockerfile从FROM命令开始,紧接着跟随者各种方法,命令和参数。其产出为一个新的可以用于创建容器的镜像

Docker入门

5. 容器编排

DockerCompse

Compose是用于定义和运行复杂Docker应用的工具。你可以在一个文件中定义一个多容器的应用,然后使用一条命令来启动你的应用,然后所有相关的操作都会被自动完成。

Docker入门

DockerSwarm

Swarm是Docker官方提供的一款集群管理工具,其主要作用是把若干台Docker主机抽象为一个整体,并且通过一个入口统一管理这些Docker主机上的各种Docker资源。Swarm和Kubernetes比较类似,但是更加轻,具有的功能也较kubernetes更少一些。

Kubernetes

Kubernetes(通常写成“k8s”)是最开始由google设计开发最后贡献给Cloud Native Computing Foundation的开源容器集群管理项目。它的设计目标是在主机集群之间提供一个能够自动化部署、可拓展、应用容器可运营的平台。Kubernetes通常结合docker容器工具工作,并且整合多个运行着docker容器的主机集群。

相关推荐