🍒 Docker 是什么
Docker是基于Linux内核实现的, Docker最早采用了LXC技术, LXC是Linux原生支持的容器技术, 可以提供轻量级的虚拟化. Docker基于LXC发展, 提供了LXC的高级封装, 标准的配置方法, 在LXC的基础上, Docker提供了一系列更强大的功能. 而虚拟化技术, 比如KVM, 是基于模块实现, 后来Docker改为自己研发并开源的runc技术运行容器
🥕 Docker的优点
- 快速部署: 短时间内可以部署成百上千个应用, 更快速交付到线上
- 高效虚拟化: 不需要为
hypervisor
支持, 基于Linux
内核实现应用虚拟机, 相比虚拟机大幅提高性能和效率 - 节省开支: 提供服务器利用率, 降低IT支持
- 简化配置: 将运行环境打包保存至容器, 使用时直接启动即可
- 环境统一: 将开发, 测试, 生成的应用运行环境进行标准化和统一, 减少环境不一样带来的各种问题
🍠 Docker 的缺点
- 隔离性: 多个容器共用宿主机的内核, 各应用之间的隔离不如虚拟机彻底
Docker的基本组成
- Docker主机(Host): 一个物理机或虚拟机, 用于运行
Docker
服务进程和容器, 也成为宿主机,node
节点 - Docker服务器端(Server):
Docker
守护进程, 运行Docker容器 - Docker客户端(Client): 客户端使用
docker
命令或其他工具调用docker API
- Docker仓库(Registry): 保存镜像的仓库, 官方仓库
:hub.docker.com
, 可以搭建私有仓库harbor
- Docker镜像(Images): 镜像可以理解为创建实例使用的模本, 相当于
RPM
或者DEB
包,通过这个镜像可以创建多个容器(最终服务运行的) - Docker容器(Container): 容器是从镜像生成对外提供服务的一个或一组服务, 相当于
RPM
包中的程序运行起来,可以将容器理解为就是一个简易的Linux
系统
🥝 Docker的安装并使用
首选,在学会安装Docker之前,我们要先学会如何卸载Docker,以防虚拟机中存在旧版的Docker,使得安装过程中一些不必要的问题出现
① 卸载旧版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
② Docker 的安装步骤
下载需要依赖的安装包
yum install -y yum-utils
设置安装Docker的镜像仓库,系统默认是国外镜像,也同样可以选择国内比较优秀的阿里云镜像(推荐)
# 默认是国外镜像
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo #(不推荐)
#阿里云镜像
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #推荐
安装Docker相关的引擎
yum install docker-ce docker-ce-cli containerd.io
安装完成之后就可以启动Docker后使用命令来查看是否安装成功
# 启动Docker
systemctl start docker
# 判断是否安装成功
docker version
🍇 新建并启动容器(RabbitMQ)
拉取RabbitMQ镜像
docker pull rabbitmq
创建并运行RabbitMQ
docker run -d -p 15672:15672 -p 5672:5672 \
-e RABBITMQ\_DEFAULT\_VHOST=my_vhost \
-e RABBITMQ\_DEFAULT\_USER=admin \
-e RABBITMQ\_DEFAULT\_PASS=admin \
--hostname myRabbit \
--name rabbitmq \
rabbitmq
命令介绍:
-
-d
:表示在后台运行容器 -
-p
:将容器的端口5672(应用访问端口)
和15672(控制台Web端口号)
映射到主机中 -e
:指定环境变量
-
RABBITMQ_DEFAULT_VHOST
:默认虚拟机名; -
RABBITMQ_DEFAULT_USER
:默认的用户名; -
RABBITMQ_DEFAULT_PASS
:默认的用户密码;
-
--hostname
:指定主机名(RabbitMQ的一个重要注意事项是它根据所谓的节点名称
存储数据,默认为主机名) -
--name rabbitmq
:设置容器名称 -
rabbitmq
:容器使用镜像名称
查看容器启动状况
docker ps
设置Docker启动时自动启动RabbitMQ
docker update rabbitmq --restart=always
启动
rabbitmq_management
可视化插件