问题
一个大项目中组件特别多,运行环境也很复杂,因此部署的时候会遇到很多问题:
依赖关系比较复杂,很容易出现兼容性问题
开发、测试、生产的环境也是都有差异的,系统环境有问题
Docker来解决兼容性问题
将应用的函数库Lib、依赖Deps、配置和应用一起打包
每个应用放到一个隔离容器去运行,避免相互干扰
Docker来解决不同系统环境的问题
Docker将用户程序和所需要调用的系统函数库一起打包
Docker运行不同的操作系统,直接基于打包的库函数,借助操作系统的Linux内核来运行
总结
Docker就是一个快速交付应用、运行应用的技术
镜像
Docker将应用程序及其所需依赖、函数库、环境、配置等文件打包在一起
容器
镜像中的应用程序运行后形成的进程就是容器,只是Docker会给容器做隔离,对外不可见
DockerHub
DockerHub是一个Docker镜像的托管平台,这样的平台称为Docker Registry
Docker架构
Docker是一个CS架构的程序:
服务端(Server):Docker守护进程,负责处理Docker指令,管理镜像、容器等等
客户端(Client):通过命令(本机)或者RestAPI(远程)向Docker服务端发送指令。可以在本地或者远程向服务端发送指令
使用Dockerbuild命令DockerServer构建镜像
使用Dockerpull向Registry拉取镜像,然后DockerServer就会从Registry拉取镜像
使用Dockerrun命令DockerServer创建容器
一般Redis、NIginx等直接使用官方镜像就像,没必要自己构建镜像
自己的微服务才需要自己构建镜像
镜像名称
镜像名称一般是两部分组成:[repository]:[tag],例如mysql:5.7
镜像操作命令
获取镜像
查看镜像
docker images
删除镜像
docker rmi
推送镜像
推送到服务器
docker push
将镜像保存为一个压缩包
dovker save
docker load(将压缩包加载为镜像)
总结
查看所有Docker容器运行情况
docker ps -a
查看当前Docker启动的容器情况
docker ps