1、Docker
1.1.什么是Docker
Linux操作系统结构:
计算机硬件(底层)+内核Linux+应用系统(CentOS等)+应用(MySQL等)
服务的拆分会给部署带来麻烦;大型项目组件较多,运行环境也较为复杂,部署时可能出现兼容性问题;开发、测试、生产环境有差异。
Docker可以解决依赖的兼容问题,采用两个手段:
- 将应用的Libs(函数库)、Deps(依赖)、配置与应用一起打包
- 将每个应用放到一个隔离容器去运行(使用沙箱机制),避免互相干扰
Docker解决操作系统环境差异:
- Docker将用户程序与所需要调用的系统函数库一起打包
- Docker运行到不同操作系统时,直接基于打包的函数库,借助于操作系统的Linux内核来运行
Docker是一个快速交付应用、运行应用的技术,具备以下优势:
- 可以将程序及其依赖、运行环境一起打包为一个镜像,可以迁移到任意Linux操作系统
- 运行时利用沙箱机制行程隔离容器,各个应用互不干扰
- 启动、移除都可以通过一行命令完成,方便快捷
1.2.Docker和虚拟机的区别
虚拟机:是在操作系统中模拟硬件设备,然后运行另一个操作系统。
Docker:仅仅是封装函数库,并没有模拟完整的操作系统。
- docker是一个系统进程;虚拟机是在操作系统中的操作系统
- docker体积小、启动速度快、性能好;虚拟机体积大、启动速度慢、性能一般
1.3.Docker架构
镜像(Image)
Docker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起,成为镜像。
镜像都是只读的。
容器(Container)
镜像中的应用程序运行后形成的进程就是容器,只是Docker会给容器进程做隔离,对外不可见。容器里有自己的cpu、内存等数据。
DockerHub
官方的Docker镜像的托管平台,这样的平台成为Docker Registry。
Docker架构
我们要使用Docker来操作镜像、容器,就必须要安装Docker。Docker是一个CS架构的程序,有两部分组成:
- 服务端(server):Docker守护进程,负责处理Docker指令,管理镜像、容器等
- 客户端(client):通过命令或RestAPI向Docker服务端发送指令。可以在本地或远程向服务端发送指令
2、Docker的基本操作
docker应用需要用到各种端口,因此建议直接关闭防火墙。
systemctl stop firewalld # 关闭
systemctl disable firewalld # 禁止开机启动防火墙
systemctl start docker # 启动docker服务
systemctl stop docker # 停止docker服务
systemctl restart docker # 重启docker服务
docker -v # 查看docker版本
docker --help # 查看帮助文档
2.1.镜像操作
镜像的名称组成:
- 镜像名称一般分两部分组成:[repository]:[tag]
- 在没有指定tag时,默认是latest,代表最新版本的镜像
镜像命令
拉取、查看镜像
- 去镜像仓库搜索需要的镜像名称,拉取 自己需要的镜像
docker pull nginx
- 查看 拉取到的镜像资料
docker images
保存、导入镜像(docker xx --help可以查看语法)
- 导出 镜像到磁盘,tar格式文件:
docker save -o [镜像要保存到的文件目录名称] image(镜像名称)
- 加载 镜像(要先删除虚拟机本身有的镜像)
- 删除本地的nginx镜像:
docker rmi nginx:latest
- 加载本地文件:
docker load -i nginx.tar
- 删除本地的nginx镜像:
小结
docker build # 构建镜像 -->Dockerfile
docker images # 查看镜像
docker rmi 要删除镜像名 # 删除镜像 -->local本地
docker save -o 压缩后文件名 要压缩镜像名 # 保存镜像为一个压缩包
docker load -i 压缩包名# 加载压缩包为镜像 -->xxx.tar
load后可以接-i和-q,-q不会打印日志
docker pull # 从服务拉取镜像
docker push # 推送镜像到服务 -->镜像服务器