最好的网站设,濮阳网站建设熊掌网络,怎么做页面跳转,广州关键词seo一、容器化部署的好处 图片
Docker 作为一种新兴的虚拟化方式#xff0c;它可以更高效的利用系统资源#xff0c;不需要进行硬件虚拟以及运行完整操作系统等额外开销。
传统的虚拟机技术启动应用服务往往需要数分钟#xff0c;而 Docker 容器应用#xff0c;由于直接运行…一、容器化部署的好处 图片
Docker 作为一种新兴的虚拟化方式它可以更高效的利用系统资源不需要进行硬件虚拟以及运行完整操作系统等额外开销。
传统的虚拟机技术启动应用服务往往需要数分钟而 Docker 容器应用由于直接运行宿主内核无需启动完整的操作系统因此可以做到秒级、甚至毫秒级的启动时间。大大的节约了开发、测试、部署的时间。
最重要的是一致的运行环境。Docker 的镜像提供了除内核外完整的运行时环境确保了应用运行环境一致性。从而达到真正意义上的 一次构建到处执行。 基于 Spring Boot MyBatis Plus Vue 3.2 Vite Element Plus 实现的前后端分离博客包含后台管理系统支持文章、分类、标签管理、仪表盘等功能。 GitHub 地址https://github.com/weiwosuoai/WeBlog Gitee 地址https://gitee.com/AllenJiang/WeBlog 二、构建镜像
2.1、Dockerfile
接着我们开始使用 Dockerfile 来定制我们的镜像从而达到容器化的目的。Dockerfile 的本质就是将一系列修改、安装、构建、操作的命令整合到一起去构建一个个性化的镜像以达到一次构建到处运行。接下来我们就来构建自定义镜像。
在my-project-server模块下创建docker目录在docker目录下创建Dockerfile。代码如下
FROM openjdk:8-jreMAINTAINER Micromaple micromapleqq.comRUN mkdir /appCOPY my-project-server-1.0.0-SNAPSHOT.jar /app/app.jarENTRYPOINT [java, -Djava.security.egdfile:/dev/./urandom, -jar, /app/app.jar, --spring.profiles.activeprod,druid-prod]EXPOSE 8899FROM指定基础镜像项目是使用jdk8开发的项目所以我们指定的基础镜像为openjdk:8-jre MAINTAINER项目维护人员 RUN执行命令在根目录下创建app目录 COPY将宿主机当前目录下的my-project-server-1.0.0-SNAPSHOT.jar文件拷贝到app目录下并重命名为app.jar ENTRYPOINT指定容器启动程序及参数 EXPOSE指定运行时容器提供服务的端口
2.2、开始构建
在虚拟机创建目录
mkdir -p /usr/local/docker/my-project/docker将打包后的my-project-server-1.0.0-SNAPSHOT.jar文件和Dockerfile文件上传至该目录。 图片
执行镜像构建命令
docker build -t my-project-server:v1 .构建成功
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
my-project-server v1 ed30386b06d2 11 seconds ago 334MB
openjdk 8-jre 26ac3f63d29f 9 months ago 273MB三、搭建私服
3.1、搭建 Docker Registry
创建目录
mkdir -p /usr/local/docker/registry在该目录下创建Docker Registry 的 docker-compose.yml。内容如下
cd /usr/local/docker/registry
version: 3.1
services:registry:image: registryrestart: alwayscontainer_name: registryports:- 5000:5000volumes:- ./data:/var/lib/registry启动容器
docker-compose up -d3.2、搭建 Docker Registry WebUI
创建目录
mkdir -p /usr/local/docker/docker-registry-frontend在该目录下创建Docker Registry 的 docker-compose.yml。内容如下
cd /usr/local/docker/docker-registry-frontend
version: 3.1
services:frontend:image: konradkleine/docker-registry-frontend:v2ports:- 8080:80volumes:- ./certs/frontend.crt:/etc/apache2/server.crt:ro- ./certs/frontend.key:/etc/apache2/server.key:roenvironment:- ENV_DOCKER_REGISTRY_HOST192.168.110.158(Docker仓库的IP)- ENV_DOCKER_REGISTRY_PORT5000需要将ENV_DOCKER_REGISTRY_HOST的值更改为自己搭建的 DockerRegistry 服务的IP 启动容器
docker-compose up -d浏览器访问http://192.168.110.158:8080/效果如下 图片
3.3、客户端配置
在需要上传 Docker 镜像的客户端需配置daemon.json完整路径在 /etc/docker/daemon.json
vi /etc/docker/daemon.json需增加如下内容
insecure-registries: [Docker仓库的IP:5000
]完整daemon.json内容
{registry-mirrors: [https://xxx.mirror.aliyuncs.com],insecure-registries: [192.168.110.158:5000]
}registry-mirrors为镜像加速地址这里为我自己申请的加速地址。大家可以自己申请一个也可以在网上找一个。 insecure-registriesDocker仓库的IP。
重新启动服务
systemctl daemon-reload
systemctl restart docker3.4、上传私服
搭建以及配置完成后需要将我们之前构建的镜像上传至我们自己的Docker仓库。 小哈开源的基于 Spring Boot MyBatis Plus Vue 3.2 Vite Element Plus 实现的前后端分离博客包含后台管理系统支持文章、分类、标签管理、仪表盘等功能。跪求 Star 呀~ GitHub 地址https://github.com/weiwosuoai/WeBlog Gitee 地址https://gitee.com/AllenJiang/WeBlog 查看镜像
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
my-project-server v1 6af7d633afb7 5 seconds ago 334MB
openjdk 8-jre 26ac3f63d29f 9 months ago 273MB1)、镜像标记
使用 docker tag 将 my-project-server:v1 这个镜像标记为 192.168.110.158:5000/my-project-server:v1。
192.168.110.158为我的Docker仓库的IP。
格式为docker tag IMAGE[:TAG] [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG]
命令如下
docker tag my-project-server:v1 192.168.110.158:5000/my-project-server:v1标记后查看镜像
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.110.158:5000/my-project-server v1 6af7d633afb7 3 minutes ago 334MB
my-project-server v1 6af7d633afb7 3 minutes ago 334MB
openjdk 8-jre 26ac3f63d29f 9 months ago 273MB2)、镜像上传
使用 docker push 上传镜像。
$ docker push 192.168.110.158:5000/my-project-server
The push refers to repository [192.168.110.158:5000/my-project-server]
5b9e874b9f9c: Pushed
e87c042d22f8: Pushed
b4cfcb8385a8: Pushed
2b730cf18c09: Pushed
edeaba958753: Pushed
8bf42db0de72: Pushed
31892cc314cb: Pushed
11936051f93b: Pushed
v1: digest: sha256:5c8a0efff409649a389d0bc74dda94ca96e67e87c92673b4c7dad0078657af40 size: 20003)、查看镜像
使用 curl 查看 192.168.110.158:5000/v2/_catalog 地址可以看到上传成功的镜像
$ curl 192.168.110.158:5000/v2/_catalog
{repositories:[my-project-server]}这里我们可以成功的看到我们上传的镜像。
我们也可以在我们刚刚搭建的WebUI上可视化的查看我们的镜像。效果图如下 图片
4)、验证
此时我们将本地镜像删除尝试从私有仓库下载这个镜像
先删除已有镜像
docker rmi my-project-server:v1 192.168.110.158:5000/my-project-server:v1下载镜像
docker pull 192.168.110.158:5000/my-project-server:v1
$ docker pull 192.168.110.158:5000/my-project-server:v1
v1: Pulling from my-project-server
0e29546d541c: Already exists
9b829c73b52b: Already exists
cb5b7ae36172: Already exists
99ce012bef04: Already exists
22dc2a72d098: Already exists
9c69a57e10d9: Already exists
776f54050ab5: Pull complete
65a83a9a7871: Pull complete
Digest: sha256:5c8a0efff409649a389d0bc74dda94ca96e67e87c92673b4c7dad0078657af40
Status: Downloaded newer image for 192.168.110.158:5000/my-project-server:v1
192.168.110.158:5000/my-project-server:v1
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.110.158:5000/my-project-server v1 6af7d633afb7 15 minutes ago 334MB
openjdk 8-jre 26ac3f63d29f 9 months ago 273MB我们可以看到可以正常拉取。
四、容器启动
镜像构建并上传至完成后可以直接使用Docker Compose来启动容器。实现一次构建到处运行。
创建目录
mkdir -p /usr/local/docker/my-project在该目录下创建Docker Registry 的 docker-compose.yml。内容如下
cd /usr/local/docker/my-project
version: 3.1
services:my_project_server:image: 192.168.110.158:5000/my-project-server:v1container_name: my-project-serverrestart: alwaysports:- 8899:8899volumes:- ./logs:/logsenvironment:TZ: Asia/Shanghai启动容器
docker-compose up -d查看容器启动状态
docker ps -a访问查询所有用户接口 http://ip:8899/sys-user/get/all 图片