day03-(docker)

文章目录

  • 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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在城市与自然中穿行:探索自然的全新方式,健康、环保、快乐的生活方式

一辆单车,三五好友,骑行穿过城市与大自然。无论是在悠闲的周末打卡城市古建筑,还是选择充满挑战的“川藏线”,无论是在城郊绿道感受清风拂面,还是在洱海湖畔欣赏美好风光……如今,越来越多人加入骑行队伍&a…

解读币安Megadrop:如何参加第一期BounceBit活动?

币安推出新的代币发行平台 Megadrop,第一期为 BounceBit。 跟 launchpool 相比, 主要不同是 1)锁仓 bnb 有收益的倍数加成 2)做任务有收益加成。 我认为核心目的有两个: 1)更多收益给 BNB 长期持有者&am…

Docker pull镜像名称 把本地镜像推送到远程详解

Docker pull镜像名称 把本地镜像推送到远程详解: Docker 镜像 仓库 容器介绍 以及镜像仓库详解 下载一个alpine的镜像演示,alpine是一个比较小的的linux镜像。 docker pull alpinedocker tag d4ff818577bc docker.io/itying/alpine:v1.0.1docker tag d4…

基于Linux的Ncurse库的贪吃蛇项目

贪吃蛇项目的意义 承上启下:从C语言基础的学习:数据结构链表基础、C变量、流程控制、函数、指针、结构体等。过渡到Linux系统编程:文件编程、进程、线程、通信、第三方等。 Linux终端图形库curses curses的名字起源于"cursor optimiz…

ELK创建仪表盘

仪表盘 一、保存search二、生成饼图三、创建仪表盘 一、保存search 首先保存一段时间内的search,可以添加想要的字段,并保存这个search方便下次直接打开该search,并方便在可视化和仪表盘中使用该search. 二、生成饼图 点击Visualize 选择…

C语言——内存函数的实现与模拟

1. memcpy 函数 与strcpy 函数类似 1.头文件 <string.h> 2.基本格式 • 函数memcpy从source的位置开始向后复制num个 字节 的数据到destination指向的内存位置。 • 这个函数在遇到 \0 的时候并不会停下来。 • 如果source和destination有任何的重叠&#xff0…

Redis入门到通关之数据结构解析-动态字符串SDS

文章目录 Redis数据结构-动态字符串动态扩容举例二进制安全SDS优点与C语言中的字符串的区别 欢迎来到 请回答1024 的博客 &#x1f353;&#x1f353;&#x1f353;欢迎来到 请回答1024的博客 关于博主&#xff1a; 我是 请回答1024&#xff0c;一个追求数学与计算的边界、时间…

Spring Kafka—— KafkaListenerEndpointRegistry 隐式注册分析

由于我想在项目中实现基于 Spring kafka 动态连接 Kafka 服务&#xff0c;指定监听 Topic 并控制消费程序的启动和停止这样一个功能&#xff0c;所以就大概的了解了一下 Spring Kafka 的几个重要的类的概念&#xff0c;内容如下&#xff1a; ConsumerFactory 作用&#xff1a;…

使用JavaScript及HTML、CSS完成秒表计时器

案例要求 1.界面为一个显示计时面板和三个按钮分别为:开始&#xff0c;暂停&#xff0c;重置 2.点击开始&#xff0c;面板开始计时&#xff0c; 3.点击暂停&#xff0c;面板停止 4.点击重置&#xff0c;计时面板重新为0 案例源码 <!DOCTYPE html> <html lang"…

sqlplus / as sysdba登陆失败,(ORA-01017)

周一上班检查alert log&#xff0c;看到某个库报出大量的错误 提示无法连接到ASM实例&#xff0c;这是某知名MES厂商DBA创建的11G RAC刚刚​转交到我手上的&#xff0c;这又是给我挖了什么坑&#xff1f; 报错为ORA-01017​用户名密码不对&#xff1f;​what&#xff1f; 登陆o…

负载均衡的原理及算法

一、定义 负载均衡&#xff08;Load Balancing&#xff09;是一种计算机网络和服务器管理技术&#xff0c;旨在分配网络流量、请求或工作负载到多个服务器或资源&#xff0c;以确保这些服务器能够高效、均匀地处理负载&#xff0c;并且能够提供更高的性能、可用性和可扩展性。…

OpenCV-复数矩阵点乘ComplexMatrixDotMultiplication

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 需求说明 一般用到FFT&#xff0c;就涉及到复数的计算&#xff0c;为了便于调用&#xff0c;我自行封装了一个简单的复数矩阵点乘…

服务器被CC攻击怎么办

遇到CC攻击时&#xff0c;可采取以下措施&#xff1a;限制IP访问频率、启用防DDoS服务、配置Web应用防火墙、增加服务器带宽、使用负载均衡分散请求压力。 处理服务器遭遇CC攻击的方法如下&#xff1a; 1. 确认攻击 你需要确认服务器是否真的遭受了CC攻击&#xff0c;这可以…

Day10-Java进阶-泛型数据结构(树)TreeSet 集合

1. 泛型 1.1 泛型介绍 package com.itheima.generics;import java.util.ArrayList; import java.util.Iterator;public class GenericsDemo1 {/*泛型介绍 : JDK5引入的, 可以在编译阶段约束操作的数据类型, 并进行检查注意 : 泛型默认的类型是Object, 且只能接引用数据类型泛型…

【STM32+HAL+Proteus】系列学习教程3---GPIO输出模式(LED流水灯、LED跑马灯)

实现目标 1、掌握GPIO 输出模式控制 2、学会STM32CubeMX软件配置GPIO 3、具体目标&#xff1a;1、开发板4个LED实现流水灯&#xff1b;2、开发板4个LED实现跑马灯灯。 一、STM32 GPIO 概述 1、GPIO定义 GPIO&#xff08;General-purpose input/output&#xff09;是通用输入…

牛客NC238 加起来和为目标值的组合【中等 DFS C++、Java、Go、PHP】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/172e6420abf84c11840ed6b36a48f8cd 思路 本题是组合问题&#xff0c;相同元素不同排列仍然看作一个结果。 穷经所有的可能子集&#xff0c;若和等于target&#xff0c;加入最终结果集合。 给nums排序是为了方便…

Ai-WB2 系列模组SDK接入亚马逊云

文章目录 前言一、准备二、亚马逊云物模型建立1. 注册亚马逊账号&#xff0c;登录AWS IoT控制台&#xff0c;[注册地址](https://aws.amazon.com/cn/)2. 创建好之后点击登录3. 创建物品以及下载证书 三、连接亚马逊云demo获取以及配置1. 下载源码2. 按照顺序执行下面指令3. 修改…

IDEA 2021.3.3最新激活破解教程(可激活至2099年,亲测有效)

1、ja-netfilter-all Windows 系统&#xff0c;点击运行 install-current-user.vbs 脚本&#xff0c;为当前用户安装破解补丁 截图是window环境下的激活方式 运行此补丁大约花费几分钟&#xff0c;点击 确定&#xff0c; 等待 Done 完成提示框出现&#xff0c;到这里&#xf…

HarmonyOS ArkUI实战开发-页面跳转(Router、Ability)

页面跳转可以分为页面内跳转和页面间跳转&#xff0c;页面内跳转是指所跳转的页面在同一个 Ability 内部&#xff0c;它们之间的跳转可以使用 Router 或者 Navigator 的方式&#xff1b;页面间跳转是指所跳转的页面属与不同的 Ability &#xff0c;这种跳转需要借助 featureAbi…

51单片机数字温度报警器_DS18B20可调上下限(仿真+程序+原理图)

数字温度报警器 1 **主要功能&#xff1a;*****\*资料下载链接&#xff08;可点击&#xff09;&#xff1a;\**** 2 **仿真图&#xff1a;**3 **原理图&#xff1a;**4 **设计报告&#xff1a;**5 **程序设计&#xff1a;**主函数外部中断函数DS18B20驱动 6 讲解视频7 **资料清…