1:什么是docker?
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
一个完整的Docker有以下几个部分组成:
DockerClient客户端
Docker Daemon守护进程
Docker Image镜像
DockerContainer容器
2:传统虚拟化与容器技术对比
虚拟机 | docker容器 | |
---|---|---|
操作系统 | 宿主机上运行虚拟机OS | 共享宿主机OS |
存储 | 镜像较大(GB) | 镜像小(MB) |
性能 | 操作系统额外的cpu、内存消耗 | 几乎无性能消耗 |
移植性 | 笨重、与虚拟化技术耦合度高 | 轻量、灵活迁移 |
隔离性 | 完全隔离 | 安全隔离 |
部署 | 慢、几分钟 | 快速、几秒钟 |
运行密度 | 一般几十个 | 单机支持上千容器 |
dokcer容器的优势
- 对于开发人员:Build once、Run anywhere。
- 对于运维人员:Configure once、Run anything。
3:容器是如何工作的
Docker 架构:
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。
Docker采用 C/S架构 Docker daemon 作为服务端接受来自客户的请求,并处理这些请求(创建、运行、分发容器)。 客户端和服务端既可以运行在一个机器上,也可通过 socket 或者RESTful API 来进行通信。
Docker daemon 一般在宿主主机后台运行,等待接收来自客户端的消息。 Docker 客户端则为用户提供一系列可执行命令,用户用这些命令实现跟 Docker daemon 交互。
4:docker的安装
- 官方站点:https://docs.docker.com/
- 阿里云开源镜像站点:https://mirrors.aliyun.com/docker-ce/linux/centos/7.4/x86_64/stable/
本次实验使用centos7.4主机,以通过阿里云镜像下载安装docker为例。
访问阿里云官方镜像站,找到容器,选择docker-ce,ce是社区版;
点击下载链接,根据宿主机的版本找到对应的安装包url;
配置本地yum源,将baseurl设置为以上url;
[docker-ce]
name=docker source
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7.4/x86_64/stable/
gpgcheck=0
~
使用yum install docker-ce
命令安装docker-ce,我们可以看到yum直接安装了最新版本,并且一些依赖性的软件也被安装,如果是红帽系统,可能还会出现缺少containter-selinux等问题,按照提示逐个安装即可。
执行systemctl enable--now docker
启动docker且每次系统重启也启动docker 服务;
安装bash,可以自动补齐命令yum install -y bash-*
,可以看到docker 有很多内置命令;
到这里docker的服务就搭建成功了,我们可以运行一个容器,先简单了解一下docker的工作原理。
执行docker search 镜像名称
,搜索game2048的镜像;
拉取game2048的镜像到本地docker pull yakexi007/game2048
,然后执行docker images
可以看到该镜像已被下载到本地了;
执行 docker run -d --name demo -p 8080:80 yakexi007/game2048
运行一个容器,–name 命名容器为demo,-d 后台运行,-p 把宿主机的8080端口和容器的80端口相映射,最后指定镜像名称。docker ps
查看到demo这个容器已经正常运行了;
最后我们在浏览器访问宿主机的8080端口,就可以访问2048这个游戏了。