Java分布式微服务3——Docker

news2024/11/26 22:24:15

文章目录

  • Docker介绍
  • 安装Docker
  • Docker基础操作
    • Docker服务的启动
    • 镜像命令
    • 容器命令
      • 1. 从docker hub去查看Nginx容器的运行命令
      • 2. 查看所有容器状态
      • 3. 查看容器日志
      • 4. 进入Nginx容器执行命令,修改Html内容,添加“Hello World”
      • 5. 停止与开始容器
      • 6. 删除容器
    • 数据卷
      • 1. 为什么需要数据卷
      • 2. 数据卷的操作
      • 3. 数据卷的挂载
      • 4. 目录与文件挂载
  • Dockerfile自定义镜像
  • DockerCompose集群部署
  • 镜像仓库
    • 1.简化版镜像仓库
    • 2.带有图形化界面版本
    • 3.配置Docker信任地址

Docker介绍

大项目组件多,运行环境复杂

  • 每个组件需要的依赖和函数库可能版本不同,容易不兼容
  • 开发、测试、生产环境有差异,甚至操作系统都不一样

在这里插入图片描述
Docker可以在任何Linux机器上一键部署,一键移除

Docker与虚拟机区别
在这里插入图片描述

  • Docker直接用打包的系统函数库调用OS内核,性能较好,硬盘占用小,启动快
  • 虚拟机需要用函数库调用模拟的OS,指令经过Hypevisor转换后调用真正OS的内核,性能一般,硬盘占用大,启动慢

在这里插入图片描述
DockerRegistry: 镜像托管服务器,DockerHub、阿里云镜像

安装Docker

Docker安装和配置

Docker基础操作

Docker服务的启动

systemctl enable docker # 开机自启
service start docker

在命令后加上--help就能打开帮助文档

镜像命令

在这里插入图片描述
官方镜像拉取参考DockerHub网站
下面我们要:

  1. 拉取一个nginx镜像
  2. 查看镜像
  3. 将其保存成tar
  4. 删除dokcer中的nginx镜像
  5. 从tar中加载这个镜像
  6. 对这个镜像打标签说明这是我们开发的第一个版本
docker pull nginx[:tag] # 拉取镜像,不指定版本就自动拉取最新版,tag为latest
docker images # 查看镜像
docker save -o nginx.tar nginx:latest # 保存镜像到tar压缩文件,-o是output,后面跟要保存到的文件名
docker rmi nginx:latest# 删除镜像
docker load -i nginx.tar# 加载刚刚保存的镜像,-i是input,后面跟镜像压缩包文件名
docker tag nginx:latest mynginx:1.0 # 给一个镜像打标签为mynginx:1.0

容器命令

在这里插入图片描述
下面我们要:

1. 从docker hub去查看Nginx容器的运行命令

容器一开始是完全隔离的,端口映射就是暴露一个接口(可以理解成和宿主机之间接了条通道,只有宿主机能把请求给它)
容器端口一般取决于应用本身很少变化,宿主机端口可以任意指定可用的
具体怎么启动建议在DockerHub中搜索

docker run --name mynginx -p 80:80 -d nginx

在这里插入图片描述

2. 查看所有容器状态

默认只能查看到未被停止的,加-a能看到所有

docker ps

在这里插入图片描述

3. 查看容器日志

docker logs mynginx # 查看日志
docker logs -f mynginx # 持续跟踪显示日志,-f=follow

4. 进入Nginx容器执行命令,修改Html内容,添加“Hello World”

实际工作中不建议在容器内修改文件

  • docker exec: 进入容器内部,执行一个命令
  • -it = interaction terminal 给当前进入的容易创建一个标准输入输出终端
  • bash是这里进入容器后要执行的命令,它本身是一个指令处理器
docker exec -it mynginx bash

docker容器里有一套自己的简易文件系统
找到nginx的html页面并打开查看

cd /usr/share/nginx/html/
cat index.html

修改html内容

sed -i 's#Welcome to nginx#Hello World#g' index.html
sed -i 's#<head>#<head><meta charset="utf-8>#g' index.html

5. 停止与开始容器

docker stop mynginx
docker start mynginx

6. 删除容器

docker rm mynginx # 要先停止容器
docker rm -f mynginx # 强制删除

数据卷

1. 为什么需要数据卷

在这里插入图片描述
怎么修改容器中的文件呢?

  • 使用一个虚拟目录交给容器使用,实际上对应的是宿主机的一个真实目录。
  • 如果多个虚拟目录挂载在同一个真实目录上,还能完成文件共享
  • 就算容器被删了,文件还是在宿主机文件夹里
    在这里插入图片描述

2. 数据卷的操作

  1. 创建数据卷
docker volume create myvolume
  1. 列出所有数据卷
docker volume ls
  1. 查看数据卷详细信息
docker volume inspect myvolume

在这里插入图片描述

  1. 删除未使用的数据卷
docker volume prune
  1. 删除指定数据卷
docker volume rm myvolume

3. 数据卷的挂载

创建容器的时候通过-v参数将一个数据卷挂载到某个容器目录,如果没有这个数据卷会自动创建一个

docker run\
	--name mn\
	-v myvolume:/usr/share/nginx/html\ # 把myvolume数据卷挂载到容器内的/usr/share/nginx/html这个目录上
	-p 80:80\
	nginx

4. 目录与文件挂载

也可以直接把宿主机目录挂载到某个容器目录

在这里插入图片描述
挂载文件会直接覆盖容器内的文件

Dockerfile自定义镜像

分层方便迭代,只用改上面几层
在这里插入图片描述
在这里插入图片描述

DockerCompose集群部署

可以基于Compose文件快速部署分布式应用,无需手动逐个创建和运行容器
Compose文件是个文本文件夹,通过指令定义集群中每个容器如何运行,内容约等于多个docker run的集合
详情参考官网DockerCompose文档
在这里插入图片描述

安装dockerCompose

使用DockerCompose部署微服务
最好先自己部署好Nacos再一键部署其他微服务,否则找不到地方注册

镜像仓库

仓库也可以自己建私有仓库
搭建镜像仓库可以基于Docker官方提供的DockerRegistry来实现。

官网地址:https://hub.docker.com/_/registry

1.简化版镜像仓库

Docker官方的Docker Registry是一个基础版本的Docker镜像仓库,具备仓库管理的完整功能,但是没有图形化界面。

搭建方式比较简单,命令如下:

docker run -d \
    --restart=always \
    --name registry	\
    -p 5000:5000 \
    -v registry-data:/var/lib/registry \
    registry

命令中挂载了一个数据卷registry-data到容器内的/var/lib/registry 目录,这是私有镜像库存放数据的目录。

访问http://YourIp:5000/v2/_catalog 可以查看当前私有镜像服务中包含的镜像

2.带有图形化界面版本

使用DockerCompose部署带有图象界面的DockerRegistry,命令如下:

version: '3.0'
services:
  registry:
    image: registry
    volumes:
      - ./registry-data:/var/lib/registry
  ui:
    image: joxit/docker-registry-ui:static
    ports:
      - 8080:80
    environment:
      - REGISTRY_TITLE=私有仓库
      - REGISTRY_URL=http://registry:5000
    depends_on:
      - registry

3.配置Docker信任地址

我们的私服采用的是http协议,默认不被Docker信任,所以需要做一个配置:

# 打开要修改的文件
vi /etc/docker/daemon.json
# 添加内容:
"insecure-registries":["http://192.168.150.101:8080"]
# 重加载
systemctl daemon-reload
# 重启docker
systemctl restart docker

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/847760.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

错过NFT投资,你可能会后悔吗?

在过去的几年里&#xff0c;非同质化代币&#xff08;NFT&#xff09;以其独特性和创新性&#xff0c;迅速成为数字资产领域的热门话题。NFT代表了数字资产的所有权和独特性&#xff0c;为艺术、音乐、游戏和虚拟世界等领域提供了全新的可能性。然而&#xff0c;对于那些错过了…

使用 Docker 部署 Prometheus + Grafana 监控平台

使用 Docker 部署 Prometheus Grafana 监控平台 默认docker 已经安装好,我使用的是CentOS7 注意一定要开启服务器对应的端口 1. 安装Prometheus docker run -itd --nameprometheus --restartalways -p 9090:9090 prom/prometheus访问:http://ip:9090 2.安装Grafana #这里的$…

【AGC】付费下载上架下载后无法安装问题

【关键字】 AGC、付费下载、应用安装 【问题描述】 有开发者反馈用户下载后无法安装&#xff0c;采用未接入sdk&#xff0c;直接勾选付费-产品上架的方案&#xff0c;以前其他产品是能够正常安装的&#xff0c;现在不知道为啥。 报错信息&#xff1a;付费后显示“订单创建失…

对等离子体的认识

认识等离子体等离子体的产生等离子体的定义等离子体并不远 认识等离子体 等离子体的产生 物质由一百多种元素组成&#xff0c;不同元素结合成各种分子。大量的分子又依靠某种作用力结合或凝聚在一起&#xff0c;由于作用力的强弱不等而表现为各种不同的存在状态。 物质的存在状…

【数学基础】矩阵行列式

行列式意义是什么&#xff1f; 行列式等于它的各个列对应的向量张成的平行2n面体的体积&#xff0c;这是因为行列式是一个交替多重线性形式&#xff0c;而我们通常理解的欧式空间中的体积也是这样一个函数&#xff08;单位立方体体积为1&#xff0c;沿某条边扩大c倍体积就扩大…

利用openTCS实现车辆调度系统(六)openTCS订单的使用

运输订单 由类的实例表示&#xff0c;描述了由车辆执行的进程。 通常&#xff0c;此过程是货物从一个地点到另一个地点的实际运输。 然而&#xff0c;A也可以只描述车辆到目的地位置的运动以及要执行的可选车辆操作。TransportOrderTransportOrder 以下所有内容都是 openTCS …

从源码层面深度剖析Spring循环依赖 | 京东云技术团队

以下举例皆针对单例模式讨论 图解参考 https://www.processon.com/view/link/60e3b0ae0e3e74200e2478ce 1、Spring 如何创建Bean&#xff1f; 对于单例Bean来说&#xff0c;在Spring容器整个生命周期内&#xff0c;有且只有一个对象。 Spring 在创建 Bean 过程中&#xff0…

DT昆虫绑定学习(没蒙皮)

SelectEdgeLoopSp; ConvertSelectionToVertices;selectType -ocm -alc false; selectType -ocm -polymeshVertex true; CreateCluster; 连接到物体 global proc matchTrns() { string $mtr[] ls -sl; if (size($mtr) < 2){ warning "MUST select 2 objects!"…

【C++】开源:ceres和g2o非线性优化库配置使用

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍ceres和g2o非线性优化库配置使用。 无专精则不能成&#xff0c;无涉猎则不能通。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&…

抖音里面怎么把图片做成动态图片?在线gif生成工具分享

刷抖音的时候&#xff0c;很多人在制作一些老照片&#xff0c;一些静态的照片经过制作能变成动态的照片&#xff0c;许多朋友都不知道怎么将图片做成gif&#xff0c;下面就来为大家分享一下gif动态图片制作的方法&#xff0c;利用在线gif生成&#xff08;https://www.gif.cn&am…

论文分享--On the Difficulty of Evaluating Baselines A Study on Recommender Systems

与基线比较的数值评估在判断推荐系统中的研究时起着核心作用。在本文中,我们证明了正确运行基线是困难的。我们在两个广泛研究的数据集上证明了这个问题。首先,我们表明,在过去五年中,在许多出版物中使用的基线对Movielens 10M基准的结果是次优的。通过仔细设置一个普通矩阵…

Python远程ssh登录机器检查机器信息

文章目录 Python远程ssh登录机器检查机器信息check_env.sh和hosts.yaml文件如下演示 Python远程ssh登录机器检查机器信息 需要在hosts.yaml文件中中输入ssh主机名&#xff0c;端口&#xff0c;用户名&#xff0c;密码使用python3环境&#xff0c;执行python3 check_env.py为了…

兼容性测试的正确打开方式

前几天在我创建的技术交流群&#xff0c;几位同学聊起了兼容性测试相关的话题。有测试的方法技巧&#xff0c;有如何选择测试时的切入点&#xff0c;也有在质量和投入成本之间如何做平衡的思考。 翻了翻写过的技术文章&#xff0c;大多集中在后端、中间件以及稳定性测试方面&a…

评估软件缺陷优先级的6个维度

我们在软件开发中&#xff0c;团队往往面临多个任务&#xff0c;尤其是缺陷任务&#xff0c;如果不对缺陷任务进行优先级排序&#xff0c;按部就班地解决缺陷&#xff0c;那么一旦严重缺陷不能及时解决&#xff0c;往往会对项目造成较大影响&#xff0c;甚至直接影响项目进度。…

处理器方法的参数与返回值

文章目录 前言案例 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 可以简化代码的重复性和冗长性 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 案例 新建controller类代码&#xff1a; Controller public class Parameter…

高忆管理:1800亿投资大佬投降,被散户所逼?美联储释放重磅信号

美国散户“逼疯”华尔街传奇大佬。 美国散户投资者又掀起了一场“逼空”大战。当地时刻8月6日&#xff0c;彭博社报导&#xff0c;华尔街对冲基金传奇人物Dan Loeb在一份信函中清晰向客户标明&#xff0c;他作为做空个股“大赌徒”的日子现已完毕了。当时美股商场的卖空环境“比…

LVS—DR集群的搭建

lvs-dr模式工作原理&#xff1a; 首先&#xff0c;来自客户端计算机CIP的请求被发送到Director的VIP。其次Director使用相同的VIP目的IP地址将请求发送到集群节点或真实服务器。然后&#xff0c;集群某个节点将回复该数据包&#xff0c;并将该数据包直接发送到客户端计算机&am…

有没有必要换cspm?未来的发展前景如何?

最近 CSPM 证书很热门&#xff0c;CSPM 相关问题大家都很关心&#xff0c;今天本橘座就给大家全面解答一下 CSPM到底是何方神圣&#xff1f; 文章主要是解答下面几个常见问题&#xff0c;其他问题可以留言或者私信咨询我哦~ 一、什么是 CSPM证书&#xff1f;跟PMP是什么关系&a…

1.Mysql允许远程连接访问

打开编辑器&#xff0c;输入以下sql语句 use mysql; select * from user; update user set Host % where Host localhost and Userroot;

【Ubuntu】安装docker,docker compose 以及部署一个docker应用

大家好&#xff01;在过去&#xff0c;已经分享了很多有关通过Docker部署应用的内容。今天&#xff0c;我将为大家详细介绍如何在Ubuntu系统上部署最新的Docker平台。 Docker是什么 Docker是一个开源的容器化平台&#xff0c;它允许您将应用程序及其所有依赖项打包到称为容器…