day03-(docker)

news2024/12/23 14:09:10

文章目录

  • Docker
    • Docker和虚拟机的差别
    • docker在linux安装配置
    • 镜像命令
    • 容器命令介绍
    • Docker-容器(基本操作)
    • docker基本操作(数据卷)
    • 数据卷挂载
    • 直接挂载
    • 四.Dockerfile自定义镜像
    • 五.Docker-Compose
  • 安装
  • 修改权限
    • 镜像仓库![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/78c1e9d3398f4398832bc2a0990134c7.png)

Docker

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Docker和虚拟机的差别

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

镜像只能只读 需要写文件要拷贝到独立文件系统中实现隔离
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

docker在linux安装配置

linux安装Docker文档

镜像命令

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
导出的意思 导出成一个压缩文件 :docker save -o[压缩文件名称] [名称]:[版本号]
加载压缩文件:docker load -i [文件名称]
查看镜像(文件):docker images
删除:docker rmi [文件名称]:[版本]

在这里插入图片描述

容器命令介绍

在这里插入图片描述
在这里插入图片描述
docker run --name mn -p 80:80 -d nginx

查看容器运行状态:docker ps
查看日志:docker logs [容器名称]
在这里插入图片描述

Docker-容器(基本操作)

在这里插入图片描述
在这里插入图片描述
###运行安装练习

在这里插入图片描述

  1. 首先在linux启动docker命令 docker
systemctl start docker  # 启动docker服务
  1. 查看镜像文件
docker images

3.创建容器 根据官网复制

docker run --name [mr](容器名称) -p 6379:6379 -d redis[镜像名称]

4.查看开启容器

docker ps
docker exec -it mr bash

5.进入容器然后之后就可以操作了

docker基本操作(数据卷)

(3.6) 挂载本地目录
容器不仅仅可以挂载数据卷,也可以直接挂载到宿主机目录上。关联关系如下:

  • 带数据卷模式:宿主机目录 --> 数据卷 —> 容器内目录

  • 直接挂载模式:宿主机目录 —> 容器内目录
    目录挂载与数据卷挂载的语法是类似的:

  • -v [宿主机目录]:[容器内目录]

  • -v [宿主机文件]:[容器内文件]

特点:

  • 数据卷挂载耦合度低,由docker来管理目录,但是目录较深,不好找
  • 目录挂载耦合度高,需要我们自己管理目录,不过目录容易寻找查看

如图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

数据卷挂载

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

直接挂载

在这里插入图片描述

docker run \
--name mysql \
-e MYSQL_ROOT_PASSWORD=123 \
-p 3306:3306 \
-v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf \
-v /tmp/mysql/data:/var/lib/mysql \
-d \
mysql:5.7.25

在这里插入图片描述

四.Dockerfile自定义镜像

常见的镜像在DockerHub就能找到,但是我们自己写的项目就必须自己构建镜像了。

而要自定义镜像,就必须先了解镜像的结构才行。

(1) 镜像结构
镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而成。

我们以MySQL为例,来看看镜像的组成结构:
在这里插入图片描述
简单来说,镜像就是在系统函数库、运行环境基础上,添加应用程序文件、配置文件、依赖文件等组合,然后编写好启动脚本打包在一起形成的文件。

我们要构建镜像,其实就是实现上述打包的过程。
在这里插入图片描述

(2) Dockerfile语法
构建自定义的镜像时,并不需要一个个文件去拷贝,打包。

我们只需要告诉Docker,我们的镜像的组成,需要哪些BaseImage、需要拷贝什么文件、需要安装什么依赖、启动脚本是什么,将来Docker会帮助我们构建镜像。

而描述上述信息的文件就是Dockerfile文件。

Dockerfile就是一个文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像。每一个指令都会形成一层Layer,而第一行必须是FROM,从一个基础镜像来构建。基础镜像可以是基本操作系统,如Ubuntu。也可以是其他人制作好的镜像,例如:java:8-alpine
在这里插入图片描述
更多详细语法说明,请参考官网文档: https://docs.docker.com/engine/reference/builder
(3) 案例
(3.1) 基于Ubuntu构建Java项目
需求:基于Ubuntu镜像构建一个新镜像,运行一个java项目

步骤1:在电脑上新建一个空文件夹docker-demo
步骤2:拷贝资料中的docker-demo.jar文件到docker-demo这个目录
步骤3:拷贝资料中的jdk8.tar.gz文件到docker-demo这个目录
步骤4:拷贝资料提供的Dockerfile到docker-demo这个目录

# 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量,JDK的安装目录
ENV JAVA_DIR=/usr/local

# 拷贝jdk和java项目的包
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/app.jar

# 安装JDK
RUN cd $JAVA_DIR \
 && tar -xf ./jdk8.tar.gz \
 && mv ./jdk1.8.0_144 ./java8

# 配置环境变量
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin

# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar

步骤5:将上述准备好的docker-demo上传到虚拟机任意目录,然后进入docker-demo目录下
步骤6:构建镜像:
docker build -t javaweb:1.0 .
注意:(空格)加(.) : 代表所在的目录路径下 (这样才能构建当前目录)
在这里插入图片描述

五.Docker-Compose

在这里插入图片描述
上面的Compose文件就描述一个项目,其中包含两个容器:

mysql:一个基于mysql:5.7.25镜像构建的容器,并且挂载了两个目录
web:一个基于docker build临时构建的镜像容器,映射端口时8090
DockerCompose的详细语法参考官网:https://docs.docker.com/compose/compose-file/
使用基本类似
在这里插入图片描述
2) 安装
(2.1) 下载
在Linux下使用需要通过命令下载:

安装

curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-uname -s-uname -m > /usr/local/bin/docker-compose
1
2
(2.2) 修改文件权限
修改文件权限,让其变成可执行文件:

修改权限

chmod +x /usr/local/bin/docker-compose
1
2
(2.3) Base自动补全命令:
在使用时会有提示


 1. # 补全命令
 2. curl -L https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose

如果这里出现错误,需要修改自己的hosts文件:

echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts

在这里插入图片描述

(3) 部署微服务集群
需求:将资料中的cloud-demo微服务集群利用DockerCompose部署

实现思路:

① 查看资料提供的cloud-demo文件夹,里面已经编写好了docker-compose文件

② 修改自己的cloud-demo项目,将数据库、nacos地址都命名为docker-compose中的服务名

③ 使用maven打包工具,将项目中的每个微服务都打包为app.jar

④ 将打包好的app.jar拷贝到cloud-demo中的每一个对应的子目录中

⑤ 将cloud-demo上传至虚拟机,利用 docker-compose up -d 来部署

(3.1) compose文件
查看资料提供的cloud-demo文件夹,里面已经编写好了docker-compose文件,而且每个微服务都准备了一个独立的目录:
在这里插入图片描述
内容如下:

version: "3.2"

services:
  nacos:
    image: nacos/nacos-server
    environment:
      MODE: standalone
    ports:
      - "8848:8848"
  mysql:
    image: mysql:5.7.25
    environment:
      MYSQL_ROOT_PASSWORD: 123
   #$PWD:表示当前路径(前面一页的意思)
    volumes:
      - "$PWD/mysql/data:/var/lib/mysql"
      - "$PWD/mysql/conf:/etc/mysql/conf.d/"
  userservice:
    build: ./user-service
  orderservice:
    build: ./order-service
  gateway:
    build: ./gateway
    ports:
      - "10010:10010"

可以看到,其中包含5个service服务:

nacos:作为注册中心和配置中心
image: nacos/nacos-server: 基于nacos/nacos-server镜像构建
environment:环境变量
MODE: standalone:单点模式启动
ports:端口映射,这里暴露了8848端口
mysql:数据库
image: mysql:5.7.25:镜像版本是mysql:5.7.25
environment:环境变量
MYSQL_ROOT_PASSWORD: 123:设置数据库root账户的密码为123
volumes:数据卷挂载,这里挂载了mysql的data、conf目录,其中有我提前准备好的数据
userservice、orderservice、gateway:都是基于Dockerfile临时构建的
查看mysql目录,可以看到其中已经准备好了cloud_order、cloud_user表:
在这里插入图片描述
查看微服务目录,可以看到都包含Dockerfile文件:
在这里插入图片描述

FROM java:8-alpine
COPY ./app.jar /tmp/app.jar
ENTRYPOINT java -jar /tmp/app.jar

镜像仓库在这里插入图片描述

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

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

相关文章

Vscode上使用Clang,MSVC, MinGW, (Release, Debug)开发c++完全配置教程(包含常见错误),不断更新中.....

1.VSCode报错头文件找不到 clang(pp_file_not_found) 在Fallback Flags中添加 -I(是-include的意思,链接你的编译器对应头文件地址,比如我下面的是MSVC的地址) 问题得到解决~

Docker基本操作 容器相关命令

docker run:运行镜像; docker pause:暂停容器,会让该容器暂时挂起; docker unpauser:从暂停到运行; docker stop:停止容器,杀死进程; docker start:重新创建进程。 docker ps:查看所有运行的容器及其状态,默认只展…

城市建筑轮廓矢量边界、建设用地数据、城市道路网分布、城市土地利用规划分布、土地利用数据、城市绿地分布

数据下载链接:数据下载链接 中国主要城市建筑底面轮廓和建筑高度空间分布数据,包括省会城市、地级市及县级市等主要城市。城市建筑底面轮廓和建筑高度数据,数据坐标为 WGS84地理坐标, 数据格式为 SHP 文件。数据范围基本覆盖城市…

OceanBase开发者大会实录 - 阳振坤:云时代的数据库

本文来自2024 OceanBase开发者大会,OceanBase 首席科学家阳振坤的演讲实录——《云时代的数据库》。完整视频回看,请点击这里 >> 在去年的开发者大会中,我跟大家分享了我对数据库产品和技术一些看法,包括单机分布式一体化&…

openjudge_2.5基本算法之搜索_200:Solitaire

题目 200:Solitaire 总时间限制: 5000ms 单个测试点时间限制: 1000ms 内存限制: 65536kB 描述 Solitaire is a game played on a chessboard 8x8. The rows and columns of the chessboard are numbered from 1 to 8, from the top to the bottom and from left to right resp…

maven-idea新建和导入项目

全局配置 新建项目 需要新建的文件夹 src/testsrc/test/javasrc/main/java 注:1、新建Java-class,输入.com.hello.hellomaven 2、快捷键psvm显示 public static void main(String[] args) {.... } package com.hello;public class hellomaven {publ…

Java-字符集和字符编码-roadmap

1 需求 2 接口 3 示例 4 参考资料 「烫烫屯屯锟斤拷」揭秘ASCII、GBK、UTF-8,B站独家,一听就懂_哔哩哔哩_bilibili 非常详细的字符编码讲解,ASCII、GB2312、GBK、Unicode、UTF-8等知识点都有_哔哩哔哩_bilibili 你懂乱码吗?锟斤…

Feign负载均衡

Feign负载均衡 概念总结 工程构建Feign通过接口的方法调用Rest服务(之前是Ribbon——RestTemplate) 概念 官网解释: http://projects.spring.io/spring-cloud/spring-cloud.html#spring-cloud-feign Feign是一个声明式WebService客户端。使用Feign能让…

Vitis HLS 学习笔记--Syn Report解读(1)

目录 1. 介绍 2. 示例一 2.1 HLS 代码 2.2 Report 解读 2.2.1 General Information 2.2.2 Timing Estimate 2.2.3 Performance & Resource Estimates 2.2.4 HW interfaces 2.2.4.1 硬件接口报告 2.2.4.2 导出至 Vivado 中的 IP 2.2.4.3 Port-Level Protocols 端…

【小梦C嘎嘎——启航篇】C++四大类型转换

😎 前言🙌C四大类型转换什么是类型转换C语言中的类型转换为什么C要嫌弃C语言的类型转换?自行搞一套呢?C强制类型转换1、static_cast2、reinterpret_cast3、const_cast4、dynamic_cast为什么要支持向下转呢? RTTI 总结撒…

C++之STL-list+模拟实现

目录 一、list的介绍和基本使用的方法 1.1 list的介绍 1.2 list的基本使用方法 1.2.1 构造方法 1.2.2 迭代器 1.2.3 容量相关的接口 1.2.4 增删查改的相关接口 1.3 关于list迭代器失效的问题 二、模拟实现list 2.1 节点类 2.2 迭代器类 2.3 主类list类 2.3.1 成员变…

yolov8 dll 编译

1. 每次用yolo v8 都要用python ,对于我这种写软件的太不方便了,下面尝试编译dll 调用, 我已经有做好的模型.best.pt 参考视频方法: yolov8 TensorRT C 部署_哔哩哔哩_bilibili 【yolov8】tensorrt部署保姆级教程,c版_哔哩哔哩_bilibili 需…

C语言基础知识笔记——万字学习记录

Hi,大家好,我是半亩花海。本文主要参考浙大翁恺老师的C语言讲解以及其他博主的C语言学习笔记,进而梳理C语言的基础知识,为后续系统性学习数据结构和其他语言等知识夯实一定的基础。(其他博主学习笔记的链接包括&#x…

陕西省人力资源和社会保障厅 陕西省住房和城乡建设厅 关于开展2023年度全省建设工程专业高级工程师评审工作的通知

陕西工程系列建设工程专业工程师评审工作要求链接陕西省人力资源和社会保障厅 陕西省住房和城乡建设厅 关于开展2023年度全省建设工程专业高级工程师评审工作的通知 - 陕西省住房和城乡建设厅类别基本条件业绩成果备注助理工程师 最新公告http://www.snhrm.com/zxggao2/597358…

怎么排查K8S容器当中的Java程序内存泄露问题

今天早上发现生产线其中的一个服务在凌晨的时候突然重启了,内存突然从1G升到1.8G,CPU使用量从0.1升到了0.28,说明在这个时间点,内存突增达到了限额以上,服务重启了。因为这个服务布署了多节点,这次重启对业…

不同技术实现鼠标滚动图片的放大缩小

摘要: 最近弄PC端的需求时,要求在layui技术下实现鼠标滚动图片的放大缩小的功能!下面来总结一下不同框架剩下这功能! layui: 看了一下layui文档,其实这有自带的组件的!但是又版本要求的!并且layui的官方文档…

element 分页切换时:current-page无效 页数不会跟着一起切换

问题回溯:使用el-pagination组件 选择切换当前分页 页数为2 问题结果:el-pagination组件 当前页切换失败 一直都是 1,接口传参分页数据是2,打印当前分页也是2 解决方案1:使用 current-page参数 .sync 修饰符 解决方案2…

北京车展创新纷呈,移远通信网联赋能

时隔四年,备受瞩目的2024(第十八届)北京国际汽车展览会于4月25日盛大开幕。在这场汽车行业盛会上,各大主流车企竞相炫技,众多全球首发车、概念车、新能源车在这里汇聚,深刻揭示了汽车产业的最新成果和发展潮…

某赛通电子文档安全管理系统 多处 SQL注入漏洞复现

0x01 产品简介 某赛通电子文档安全管理系统(简称:CDG)是一款电子文档安全加密软件,该系统利用驱动层透明加密技术,通过对电子文档的加密保护,防止内部员工泄密和外部人员非法窃取企业核心重要数据资产,对电子文档进行全生命周期防护,系统具有透明加密、主动加密、智能…

函数模板与类模板初阶

如果要写一个交换函数,不同类型的话调用不同的交换函数,如果使用重载的话只能解决函数名相同但是会根据参数类型调用不同的函数。即使这样也依旧要写很多不同类型的swap交换函数 函数重载的交换函数 仔细观察会发现除了类型不同其他的函数结构什么的都一…