12-Dockerfile、DockerCompose、镜像私服

Docker file

镜像结构

镜像就是将应用程序所需要的系统函数库/环境/配置/依赖打包。
image
image

DockerFile语法

image
image
image

首先将Dockerfile,JAVA安装包,jar包都放到linux服务器的目录中,然后在目录中执行linux Docker指令:docker build -t javaweb:1.0 .,-t表示给镜像起个名字,切记指令后面有个英文句号,表示Dockerfile文件就在当前命令行地址中。

构建成后,可以用Docker images直接查看,运行的时候与运行普通容器相同。

简化环境

其实在构建镜像的Dockerfile中,很多步骤都是在安装JAVA,实际上可以采用更简单的方式安装JAVA到镜像中。
也就是操作系统项上直接指定镜像为JAVA镜像:
image
image

Docker Compose

简介

image
version是compose的版本,不同版本语法有所不同。

因为Docker的容器都是通过run命令运行起来的,所以compose文件也可以理解成是多个run指令的合体。
上文中,mysql表示是mysql镜像的配置,web是一个web项目的启动配置。

如果将run命令与compose指令进行对比就会发现很相似:
image
因为mysql在容器中是无需对外开放,只在宿主机上运行即可。
web项目通常是通过dockerfile进行构建然后运行的,所以web指令会先进行构建镜像,然后再进行运行。
可以在Dockercompose官网深入学习。

安装

image

如果有安装文件的话,就要修改文件执行权限:
image

image

image

实践微服务集群部署

流程:
image

首先要有每个web服务的Dockerfile配置文件:
image

还要有nacos和数据库的相关配置文件,具体的compose文件如下:
image
文件内容表示安装nacos镜像,启动参数为单体,端口进行映射。启动mysql,启动参数root密码为123,进行Docker文件映射,其他服务配置与端口开放。$PWD的意思是命令行当前位置。其中mysql和微服务都没有暴露端口,只有网关和nacos开放了对外端口。

如果在compose中进行微服务集群部署,那相互访问的路径就要修改。compose支持使用服务名进行ip映射,也就是说nacos和数据库的路径配置可以从localhost改为compose的服务名:
如果在compose中进行微服务集群部署,那相互访问的路径就要修改。compose支持使用服务名进行ip映射,也就是说nacos和数据库的路径配置可以从localhost改为:
image
image
image


如果想把maven打包的jar名称进行指定,可以在pom中这样写:
image

执行命令的时候要把命令行指向docker-compose.yml目录所在文件夹中。执行指令之后将自动创建容器并且运行。

PS:在进行compose配置的时候,一般mysql和nacos是不会在容器中创建的,都是直接安装到宿主机的,并且因为nacos启动速度慢会导致其他服务注册失败,可以重新up但最好还是按照单独安装的方法。

镜像仓库

image
image
image

简化版表示没有界面的,都要用命令行。
image

有界面的版本是个人开发的,使用compose进行构建。
ui中配置的路径是要指向registry中,compose中各个服务可以通过服务名进行访问所以可以直接使用registry就可以。
进行访问的时候就要使用8080端口。
然后配合仓库信任,让Docker可以直接访问镜像仓库:
image
image
image

使用tag就可以将镜像进行重命名,然后进行推送。
重新tag的镜像和原始镜像的ID是一样的。
进行镜像拉取的时候,直接通过网页就可以访问执行命令:
image
image

posted @ 2022-06-26 12:54  agoodjavaboy  阅读(93)  评论(0)    收藏  举报