Docker
Docker 简介
什么是 Docker?
Docker is the world’s leading software container platform.
”
官方给 Docker 的定位是一个 应用容器平台。
为什么是 Docker?
-
合作开发的时候,在本机可以跑,别人的电脑跑不起来?
我们拿 Java Web 应用程序举例,我们一个 Java Web 应用程序涉及很多东西,比如 Jdk、Tomcat、Spring 等等。当这些其中某一项版本不一致的时候,可能就会导致应用程序跑不起来这种情况。Docker 则将程序直接打包成镜像,直接运行在容器中即可。 -
服务器自己的程序挂了,结果发现是别人程序出了问题把内存吃完了,自己程序因为内存不够就挂了
这种也是一种比较常见的情况,如果你的程序重要性不是特别高的话,公司基本上不可能让你的程序独享一台服务器的,这时候你的服务器就会跟公司其他人的程序共享一台服务器,所以不可避免地就会受到其他程序的干扰,导致自己的程序出现问题。Docker 就很好解决了环境隔离的问题,别人程序不会影响到自己的程序。 -
公司要弄一个活动,可能会有大量的流量进来,公司需要再多部署几十台服务器
在没有 Docker 的情况下,要在几天内部署几十台服务器,这对运维来说是一件非常折磨人的事,而且每台服务器的环境还不一定一样,就会出现各种问题,最后部署地头皮发麻。用 Docker 的话,我只需要将程序打包到镜像,你要多少台服务,我就给力跑多少容器,极大地提高了部署效率。
Docker 和 虚拟机 的区别
比较上面两张图,我们发现:
- 虚拟机 携带操作系统,本身很小的应用程序却因为携带了操作系统而变得非常大,很笨重;
- Docker 不携带操作系统,所以 Docker 的应用就非常的轻巧;
- 在调用宿主机的CPU、磁盘等等这些资源的时候,两者也是不一样的,拿内存举例:
虚拟机利用 Hypervisor 虚拟化内存,调用过程是 虚拟内存->虚拟物理内存->真正物理内存,
Docker 利用 Docker Engine 调用宿主的的资源,调用过程是 虚拟内存->真正物理内存。
传统虚拟机与 Docker容器 的对比:
传统虚拟机 | Docker容器 | |
---|---|---|
磁盘占用 | 几个GB到几十个GB左右 | 几十MB到几百MB左右 |
CPU内存占用 | 虚拟操作系统非常占用CPU和内存 | Docker引擎占用极低 |
启动速度 | (从开机到运行项目)几分钟 | (从开启容器到运行项目)几秒 |
安装管理 | 需要专门的运维技术 | 安装、管理方便 |
应用部署 | 每次部署都费时费力 | 从第二次部署开始轻松简捷 |
耦合性 | 多个应用服务安装到一起,容易互相影响 | 每个应用服务一个容器,达成隔离 |
系统依赖 | 无 | 需求相同或相似的内核,目前推荐是Linux |
Docker 的核心
- 镜像(Image):一个镜像代表一个 应用环境,它是只读文件,如 mysql镜像、tomcat镜像等;
- 容器: 镜像每次运行就是产生一个容器,容器就是正在运行的镜像,特点就是可读可写;
- 仓库:用来存放镜像的位置,类似于maven仓库,也是镜像下载和上传的位置;
- dockerFile:docker生成镜像配置文件,用来书写自定义镜像的一些配置;
- tar:对镜像打包的文件,日后可以还原成镜像;
Docker 安装
Docker 的安装(centos7.x)
Docker 安装官网教程:https://docs.docker.com/engine/install/centos/
Play With Docker 在线虚拟机:https://labs.play-with-docker.com/
卸载原有 docker:没安装过也建议执行一下,它会自动检测,没什么影响。
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
安装 docker 依赖:
- yum-utils 提供一个 yum-config-manager 单元
- device-mapper-persistent-data 和 lvm2 用于储存设备映射(devicemapper)
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
设置 docker 的 yum源:
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
也可以安装指定版本的 docker,我们一般用前面的方法安装最新版即可。
yum list docker-ce --showduplicates | sort -r
sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
sudo yum install docker-ce-18.09.5-3.el7 docker-ce-cli-18.09.5-3.el7 containerd.io
启动 docker:
sudo systemctl start docker
查看 docker 运行状态: 看到 Active 为 active(running) 说明 docker 已启动;
sudo systemctl status docker
关闭 docker:
sudo systemctl start docker
测试安装,docker 运行第一个项目!
sudo docker run hello-world
Docker 配置阿里镜像加速服务
docker 运行流程:
docker配置阿里云镜像加速:
访问阿里云查看 docker 镜像加速服务:https://account.aliyun.com/
阿里云控制台搜索:容器镜像,点击进入;
点击左侧的镜像加速器,查看自己的加速地址(每个人不一样),按文档操作 即可;
验证 docker 的镜像加速是否生效:
docker info
显示信息中的 Registry Mirrors 如果为阿里云提供的加速地址,即配置成功。