day03-(docker)

embedded/2024/11/15 4:56:52/

文章目录

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

Docker

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

Docker和虚拟机的差别

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

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

dockerlinux_17">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_73">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-serverenvironment:MODE: standaloneports:- "8848:8848"mysql:image: mysql:5.7.25environment:MYSQL_ROOT_PASSWORD: 123#$PWD:表示当前路径(前面一页的意思)volumes:- "$PWD/mysql/data:/var/lib/mysql"- "$PWD/mysql/conf:/etc/mysql/conf.d/"userservice:build: ./user-serviceorderservice:build: ./order-servicegateway:build: ./gatewayports:- "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.ppmy.cn/embedded/17674.html

相关文章

CSR、SSR与同构渲染全方位解析

🔥 CSR、SSR与同构渲染全方位解析 🚀 🚀 引言 现代Web应用的核心渲染方式——客户端渲染(CSR)、服务器端渲染(SSR)以及同构渲染。接下来我们将通过对比它们的原理、应用场景、优缺点及实际案例…

2024最新版JavaScript逆向爬虫教程-------基础篇之面向对象

目录 一、概念二、对象的创建和操作2.1 JavaScript创建对象的方式2.2 对象属性操作的控制2.3 理解JavaScript创建对象2.3.1 工厂模式2.3.2 构造函数2.3.3 原型构造函数 三、继承3.1 通过原型链实现继承3.2 借用构造函数实现继承3.3 寄生组合式继承3.3.1 对象的原型式继承3.3.2 …

关于selenium各种操作语句(方便查询便携版)

定位方法 #功能from selenium import webdriver#载入驱动 from selenium.webdriver.common.by import By #新版载入by,旧版的find_element_by_id语句一般会被划掉,然后给你提示说语句已淘汰,不过目前还是可以运行,只是代码不好看。#启动驱动的…

微信小程序使用 Vant Weapp 中 Collapse 折叠面板 的问题!

需求:结合Tab 标签页 和 Collapse 折叠面板 组合成显示课本和章节内容,并且用户体验要好点! 如下图展示: 问题:如何使用Collapse 折叠面板 将内容循环展示出来? js中的数据是这样的 代码实现&#xff1…

Python浅谈清朝秋海棠叶版图

1、清朝疆域概述: 清朝是我国最后一个封建王朝,其始于1616年建州女真部努尔哈赤建立后金,此后统一女真各部、东北地区。后又降服漠南蒙古,1644年入关打败农民起义军、灭南明,削三藩,复台湾。后又收外蒙&am…

【GlobalMapper精品教程】074:从Lidar点云创建3D地形模型

本文基于地形点云数据,基于泊松方法、贪婪三角形测量方法和阿尔法形状创建3d地形模型。 文章目录 一、加载地形点云数据二、创建三维地形模型1. 泊松方法2. 贪婪三角形测量方法3. 阿尔法形状注意事项一、加载地形点云数据 加载配套案例数据包中的data074.rar中的地形点云数据…

DBever SQL编辑器的高级应用:如何用变量快速查询

哈喽,大家好,我是木头左! 一、DBever SQL编辑器简介 DBever是一款数据库管理工具,它支持多种数据库,如MySQL、SQL Server、Oracle等。其中,它的SQL编辑器功能非常强大,可以让更方便地进行SQL语…

BGP的基本概念和工作原理

AS的由来 l Autonomous System 自治系统,为了便于管理规模不断扩大的网络,将网络划分为不同的AS l 不同AS通过AS号区分,AS号取值范围1-65535,其中64512-65535是私有AS号 l IANA机构负责AS号的分发 AS之…