DevOps - Development(开发) Operations (运维)一体化
可以加快一个想法从提出到部署的整个过程, 在应用的整个生命周期中,都要确保日常运维任务自动化和环境的标准化。
容器可以提供标准化的环境,您需要一个平台来管理它们,同时提供内置的自动化功能并支持各种基础架构
-----------------------------
Docker 是一个开源的应用容器引擎,可以通过 docker 打包开发的项目以及依赖包到一个轻量级、可移植的容器中,
然后发布到任何流行的 Linux 机器上,也可以实现虚拟化
容器是完全使用沙箱机制,相互之间不会有任何接口, 更重要的是容器性能开销极低
为什么会有 docker?
微服务项目 要部署的包很多,每一个包都需要专业的对待
Docker 就把 jar / war + 环境配置 打成一个整体包,像集装箱一样,一次打包,处处部署
Docker 镜像 本质是磁盘上一系列文件的集合,逻辑上分层,底层是所有镜像共用的 linux 内核,上层为具体镜像客制文件
-----------------------------
linux 系统
内核(2.4/2.6) + 文件系统
-----------------------------
linux 虚拟化技术
复用原内核 + 自己定制的文件系统 = 新的隔离的沙箱
-----------------------------
lowerDir 镜像层,只读层,镜像里的各层级文件
upperDir 容器层,读写层,容器的运行层
mergedDir 融合层,最小 linux 内核,lowerDir upperDir 被挂载在该目录
upperDir 覆盖 lowerDir 的同名文件
-----------------------------
镜像创建容器
在镜像层的基础上,加一层读写容器层
-----------------------------
容器保存为镜像
把最上面的读写容器层,改为只读镜像层
-----------------------------
registry
docker 仓库,用来保存镜像, 一般用阿里云的
-----------------------------
images
docker 镜像, 用于创建 docker 容器的模版
-----------------------------
container
docker 容器,独立运行的一个或一组应用
-----------------------------
client
docker 客户端,使用 docker api 与 docker 的守护进程通信
-----------------------------
host
docker 主机,一个物理或虚拟的机器,用于执行 docker 守护进程和容器
-----------------------------
machine
一个简化 docker 安装的命令行工具,比如 virtualBox, Digital Ocean, Microsoft Azure
----------------------------------
在打包服务器,使用 maven 打包, 生成 docker image, 推入私服仓库
1.pom 文件增加 docker maven 插件,并配置 imageName
docker-maven-plugin
imageName -- 192.168.0.105:5000/nginx:steven001
2.在 docker host, 通过 maven 打包并生成 docker image
mvn clean package docker:build docker:push
3. 内网多台 docker host 部署服务
docker run -d --name [容器名] -p [docker host 端口]:[容器端口] [仓库ip:仓库port]/[镜像名:版本]
docker run -d --name nginx_3 -p 8080:80 192.168.0.105:5000/nginx:steven001