1.什么是Docker?
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
一个完整的Docker有以下几个部分组成:
DockerClient客户端
Docker Daemon守护进程
Docker Image镜像
DockerContainer容器
起源
Docker 是 PaaS 提供商 dotCloud 开源的一个基于 LXC 的高级容器引擎,源代码托管在 Github 上, 基于go语言并遵从Apache2.0协议开源。
Docker自2013年以来非常火热,无论是从 github 上的代码活跃度,还是Redhat在RHEL6.5中集成对Docker的支持, 就连 Google 的 Compute Engine 也支持 docker 在其之上运行。
Docker是一个命令行工具,它提供了中央“docker”执行过程中所需的所有工具。这使得Docker的操作非常简单。
Docker 架构
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。
Docker | 面向对象 |
---|---|
容器 | 对象 |
镜像 | 类 |
Docker采用 C/S架构 Docker daemon 作为服务端接受来自客户的请求,并处理这些请求(创建、运行、分发容器)。 客户端和服务端既可以运行在一个机器上,也可通过 socket 或者RESTful API 来进行通信。
Docker daemon 一般在宿主机后台运行,等待接收来自客户端的消息。 Docker 客户端则为用户提供一系列可执行命令,用户用这些命令实现跟 Docker daemon 交互。
2.容器和虚拟机的区别
容器特点:容器共享宿主机的操作系统,容器的迁移非常方便,可以迁移到任何地方,只需要将容器拷贝到你的u盘,容器基本上是秒级部署,单台主机可以支持上千个容器
虚拟机原理:在宿主主机上运行虚拟机的操作系统,相当于再启动了一个主机,镜像比较大,而且操作系统会占用额外的cpu、内存、硬盘,底层必须要有qemu,就是内核的虚拟化、kvm的支持,可以做到完全隔离,而容器只能做到安全隔离
我们用的传统虚拟机如 VMware , VisualBox 之类的需要模拟整台机器包括硬件,每台虚拟机都需要有自己的操作系统,
虚拟机一旦被开启,预分配给它的资源将全部被占用。 每一台虚拟机包括应用,必要的二进制和库,以及一个完整的用户操作系统。
而容器技术是和我们的宿主机共享硬件资源及操作系统,可以实现资源的动态分配。
容器包含应用和其所有的依赖包,但是与其他容器共享内核。容器在宿主机操作系统中,在用户空间以分离的进程运行
容器技术是实现操作系统虚拟化的一种途径,可以让您在资源受到隔离的进程中运行应用程序及其依赖关系。
通过使用容器,我们可以轻松打包应用程序的代码、配置和依赖关系,将其变成容易使用的构建块,
从而实现环境一致性、运营效率、开发人员生产力和版本控制等诸多目标。
容器可以帮助保证应用程序快速、可靠、一致地部署,其间不受部署环境的影响
3.Docker的安装部署和简单应用(2048小游戏,ubuntu)
Docker的安装启动
(1)从物理机上获取安装docker时所需要的安装包
docker-ce-18.09.6-3.el7.x86_64.rpm
docker-ce-cli-18.09.6-3.el7.x86_64.rpm
containerd.io-1.2.5-3.1.el7.x86_64.rpm
container-selinux-2.21-1.el7.noarch.rpm
(2)启动 docker,设置为开机自启动
systemctl start docker
systemctl enable docker
管理docker常用的基础命令
docker load -i ubuntu.tar | 导入镜像 |
---|---|
docker run -it --name vm1 ubuntu | 创建容器(以ubuntu镜像为模板) |
docker ps | 查看容器状态 |
docker ps -a | 查看容器状态(包括不活跃的容器) |
docker attach vm1 | 连接容器 |
docker top vm1 | 查看容器进程 |
docker logs vm1 | 查看容器指令输出 -f 参数可以实时查看 |
docker inspect vm1 | 查看容器详情 |
docker stats vm1 | 查看容器资源使用率 |
docker diff vm1 | 查看容器修改 |
docker stop vm1 | 停止容器 |
docker start vm1 | 启动容器 |
docker kill vm1 | 强制结束容器进程 |
docker rm vm1 | 删除容器 |
docker rmi mirror | 删除镜像 |
删除镜像使用rmi,删除容器使用rm
Docker的应用
实例一:利用容器简单搭建一个2048小游戏
(1)从物理机上获取2048小游戏的镜像tar包到server1
(2)docker