一、为什么要使用Docker?
理由很简单,用了的人都说好用。在多系统的分布式项目中,往往传统的部署发包等操作,那是让每个上线的程序员恨的牙痒呀。通常都是通宵奋战,上生产解决各种部署发包问题。
个人简单总结一下三点:
1.部署简单且灵活,有独立的运行环境,避免了不必要的冲突。
2.节省了资源开销
3.类似于java, 打包一次各处部署运行。项目迁移灵活便捷。
二、什么是docker呢?
在讲之前,先来说说什么时容器?什么时虚拟机?
看下图:
简单解释一下,图左为容器,图右为虚拟机。
Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。
两图比较,我们可以看到在容器中是由docker分配给项目独立的虚拟资源,项目运行是与底层系统隔离开来的。但虚拟机中可以看到项目运行是直接分配资源与底层系统交互。显然,如果App2不工作了,对于容器来说系统资源会运用在App1和3上。而对于VM,由于资源已经分配出去,所以就会出现利用率不高情况。
区别:
特性 | 容器 | 虚拟机 |
---|---|---|
启动 | 秒级 | 分钟级 |
硬盘使用 | 一般为MB | 一般为GB |
性能 | 接近原生 | 弱于 |
系统支持量 | 单机支持上千个容器 | 一般是几十个 |
docker架构图:
解释:
Client:
docker client: 客户端提供操作指令给用户,用以连接服务端操作docker。
docker Machine:是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。
Hosts:
container:一个独立运行的容器,每个容器之间没半毛钱关系,也不影响对方。
registers:
image:是一个镜像文件,host主机从远程仓库拉去image镜像后,可以创建container容器,然后执行运行容器。
简单来讲,docker先安装到本机后,通过docker客户端操作指令,拉去远程docker仓库中已经打包好的项目镜像文件到本地。然后通过指令操作镜像创建容器,最后启动容器完成部署。
详细关于镜像的问题可以参考_:_Docker _镜像_基本操作 - 容器_镜像_服务
三、安装docker
说了这么多,不如安装后实际操作一把,就什么都知道啦~
安装环境:
centos7
安装命令:
yum install docker
设置开机自动启动:
service docker start
查看版本:
docker version
修改docker仓库地址:
命令:
vi /etc/docker/daemon.json
内容:
{ “registry-mirrors”: “https://registry.docker-cn.com”, “live-restore”: true }
四、简单的实践-部署ActiveMq
1.拉取mq镜像
命令:docker pull rabbitmq:management
2.运行启动
命令:docker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq rabbitmq:management
3.访问管理界面的地址
就是 http://[宿主机IP]:15672,可以使用默认的账户登录,用户名和密码都guest
五、Docker操作命令
$ docker ps // 查看所有正在运行容器
$ docker stop containerId // containerId 是容器的ID
$ docker ps -a // 查看所有容器
$ docker ps -a -q // 查看所有容器ID
$ docker stop (docker ps -a -q) // stop停止所有容器 docker rm $(docker ps -a -q) // remove删除所有容器