Docker 优点
更高效的利用系统资源,更快速的启动时间,一致的运行环境(开发环境,测试环境,预发环境),持续交付和部署,更轻松的迁移,更轻松的
java 通过JVM实现一次编译,到处运行
Docker真正实现 一次构建,到处运行,与运行环境无关
私有云
openStack 管理 多台实体机
购买的 网络云 一般就指的 是 虚拟化实例 , 只有自己构建的才是私有云
下载安装 Docker
1先下载 安装 Docker
2配置镜像 ,可以 官方提供的 ,也可以是阿里云的
3直接 可以 docker 指令安装 tomcat : docker pull tomcat
docker run -p 8080:8080 tomcat 给tomcat 启动一个服务,就可以直接运行了 ,不依赖java 和操作系统
守护进程
监控程序 保证运行 一旦崩溃 自动重启
Docker镜像
docker images 查看他有多少 镜像
docker images -a 查看所有
docker system df 镜像体积
docker pull 镜像名 下载镜像 (类似与new 实例的过程 ,你可以 随便 操作镜像 ,操作的不是本体 )
docker rmi 镜像名 删除镜像 (name 和 id 都可以删除)
docker image prune 删除所有虚悬 镜像
docker run 运行容器
docker run -p 8080:8080 -d tomcat
8080:8080 宿主机端口:容器端口
-d 守护态运行 (后台运行 ,并监控守护)
左为 传统的 开放网络 端口 ,给别人需要 通过 交换机 路由 来,传递给运营商 来开通
右 为 docker 的沙箱机制 -p 就是用来同志 宿主机的 ,来传递 端口号
docker run -p 8080:8080 —name tomcat -d tomcat
docker ps 查看运行的 容器
docker ps -a 查看所有的容器
docker start 关闭了的容器id 再次启动容器
docker stop 进程id 停止容器
docker rm id或 名称 删除容器(先停止运行删除) 要是 加 -f 是强制删除
docker container prune 删除关闭状态的所有容器
中间层镜像 和虚悬 镜像
中间层镜像 指的是 可以查看到
虚悬 镜像 指 有新的镜像后 会自动把原来的 镜像 name取出 变成
定制镜像Dockerfile
自己构建 镜像 ,通过 FROM 继承 镜像 ,然后 增加 自己的业务 ,
打包完成镜像 ,在别人那边打开,就直接是 你 做好的业务
docker build -t 自己的项目名 .
.表示在当前文件夹下找到Dockerfile配置文件
指定Dockerfile上下文 目录,并打包 ,传递到一个环境
镜像构建上下文
镜像指的是一定范围内 的作用域 ,在打包的时候 在Dockerfile配置文件所在的目录下 会一起打包传递给 Docker运行 程序
Dockerfile指令
FROM 继承镜像
COPY 复制打包
ADD 比COPY高级一点 ,自到解压功能,但是不推荐使用
RUN 执行命令
CMD 输入脚本的 只能使用一次,以最后出现的 脚本为准
ENTRYPOINT 目的跟cmd 一样,也只能使用一次 ,可以自己写一个 sh 把多个命令放进去,然后运行
EVN key 值 设置环境变量值
EXPOSE 暴露端口 (可以多个)
WORKDIR 像cd ( 指定工作目录进行操作) 当你跟容器交互的时候,当前你处于哪个目录
DockerCompose
容器编排工具 ,快速集成环境部署
mac 桌面版直接自带了 。 可以直接 docker-compose —version 打印版本
写一个 .yaml 配置文件
然后 docker-compose up-d 使用
YAML配置文件
专门用来做配置的
.yaml
1大小写铭感
2使用缩进表示层级关系
3缩进时 不允许 使用tab键 ,只允许使用空格
4缩进的数量不重要,只要相同层级左对齐即可
数据卷
通过数据卷来 实现把 虚拟存储变为 磁盘存储 ,两者共享一个磁盘位置
部署
数据库也需要 可以有一个 yaml 配置文件 ,把之前安装 mysql的 配置都可以 放进去,
把项目打包放入 虚拟机的 tomcat 下解压 ,更改 数据库的配置 ,就可以部署访问的到了
gitLab
社区本地搭建 环境, 既可以免费使用,又不开源,一般在企业内部构建
有企业版 ,收费的
搭建一个自己的环境 , 又可以自己使用,又不付费
Nexus
Maven私服
在 Maven 找包过程中 ,在本地查找完毕后 ,先去 私服去找 ,如果没有再去 Maven仓库去找
下载启动
最后一位 一般是 修改 bug 的版本
第二个 为 功能更新的版本
第三位 主要是 更改了架构
内部版本号 ,是给 计算机看的 ,用来检测 是否有新版本
需要 有权限的 上传到自己库里 ,比人才能 去库里 查到 并使用
Harbor
标准的微服务架构
安装安装包
上传自己的 镜像 ,来进行管理
同一个网络环境
不同的容器之间 ip不同 ,但是 可以 公用一个局域网内的 主机名,进行通讯
数据库删除端口号,以后就不会暴露在公网之中了 ,
通过 服务名 来访问 mysql ,就不能把mysql 暴露在 ip中了