docker环境搭建

devtools/2024/9/20 1:29:16/ 标签: docker, 容器, 运维

项目环境搭建

1、安装 Linux 虚拟机

(1)下载安装: VM VirtualBox

  • 下载安装:Downloads – Oracle VM VirtualBox,要先开启CPU虚拟化

在这里插入图片描述

在这里插入图片描述

(2)通过vagrant,在VirtualBox中安装虚拟机

  • 下载安装vagrant
    • 官方镜像仓库:https://app.vagrantup.com/boxes/search
    • vagrant 下载:
      • https://www.vagrantup.com/downloads.html
      • https://releases.hashicorp.com/vagrant/2.2.5/vagrant_2.2.5_x86_64.msi
  • 验证vagrant是否成功
vagrant
  • 使用命令快速创建虚拟机
Vagrant init centos/7
# 即初始化一个centos7系统 可在vagrant 镜像仓库官网查看对应的安装系统

在这里插入图片描述

(3)在Linux中安装Docker

  • 卸载旧版本
 sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine

sudo 超级管理员(最高权限)

  • 注册Docker地址
-- 1安装依赖包
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
-- 2docker安装地址
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemcli start docker
  • 检查
sudo docker images
  • 设置开机自启
sudo systemctl enable docker

2.配置阿里云镜像加速

  • 阿里云官网https://www.aliyun.com/activity/2024purchase/purchasing_v2/

  • 容器镜像服务/镜像加速器/centos

dockerMYSQL_96">3.docker安装MYSQL

(1).指定版本下载

sudo docker pull mysql:5.7
// 不加冒号,现在最新版本
// 从docker官网搜索mysql,查看标签

2.检查镜像

sudo docker images

(3).启动容器

docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
  • 参数说明
-p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口
-v /mydata/mysql/conf:/etc/mysql:将配置文件夹挂载到主机
-v /mydata/mysql/log:/var/log/mysql:将日志文件夹挂载到主机
-v /mydata/mysql/data:/var/lib/mysql/:将配置文件夹挂载到主机
-e MYSQL_ROOT_PASSWORD=root:初始化 root 用户的密码
-d mysql:5.7 -d以后台方式运行,使镜像 mysql:5.7 启动容器
--name 设置容器名
/ 换行标
-e 改变一些参数
-v 将mysql的目录表挂载在 Linux外部位置,在外部可见
  • 切换 root 用户
su root
whoami //那个用户

docker_148">(4).查看docker容器

所有容器docker images
正在运行的容器docker ps

docker_155">(5).进入docker中的某个容器(以交互模式)

docker exec -it containerID/容器名 /bin/bash
  • 参数说明
    • /bin/bash:bash控制台

(6).测试连接mysql

  • 使用navicat做链接测试

  • 通过容器的 mysql 命令行工具连接

docker exec -it mysql mysql -uroot -proot
  • 设置 root远程访问
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
flush privileges;

(7).进入mysql容器,并配置

  • 查看mysql安装位置
whereis mysql
-- 
mysql: 
/usr/bin/mysql 
/usr/lib/mysql 
/etc/mysql 配置文件
/usr/share/mysql
  • 进入配置文件
vi /mydata/mysql/conf/my.cnf
  • 按 i 进入插入模式
  • 插入配置,修改编码集,默认为拉丁
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci' init_connect='SET NAMES utf8' character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
  • 按 wq 保存退出
esc -> shift+: -> wq

(8).重启容器

-- 查看
docker ps
-- 重启
docker restart 容器名
-- 查看文件
cat 文件名

dockerRedis_233">4.docker安装Redis

(1)下载最新版Redis

docker pull redis

(2)创建实例并启动

docker run -p 6379:6379 --name redis \
-v /mydata/redis/data:/data \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf redis-server加载redis.conf的方式启动-d 后台运行
  • 实例前注意事项
redis.conf 配置文件实际是不存在的,需要在外部创建配置文件,再通过-d进行挂载
  • 实例前准备
-- 创建目录
mkdir -p /mydata/redis/conf
-- 进入目录
cd /mydata/redis/conf/
-- 创建redis.conf
touch redis.conf

(3) 使用 redis 镜像执行 redis-cli 命令测试连接

docker exec -it redis redis-cli

(4)redis持久化

-- 
pwd
-- 列表
ls
-- 修改文件
vi redis.conf
  • 添加 AOF 策略
appendonly yes
docker restart redis

开发环境统一配置

1.Maven

  • setting.xml 配置
-- 配置阿里云镜像
<mirrors><mirror><id>nexus-aliyun</id><mirrorOf>central</mirrorOf><name>Nexus aliyun</name><url>http://maven.aliyun.com/nexus/content/groups/public</url></mirror>
</mirrors>
-- 配置 jdk1.8编译项目 可以不配
<profiles><profile><id>jdk-1.8</id><activation><activeByDefault>true</activeByDefault><jdk>1.8</jdk></activation><properties><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion></properties></profile>
</profiles>

2.Idea&VsCode

  • idea
安装 lombok、mybatisx 插件
  • VsCode
Vetur —— 语法高亮、智能感知、Emmet 等
包含格式化功能, Alt+Shift+F (格式化全文),Ctrl+K Ctrl+F(格式化选中代码,两个 Ctrl
需要同时按着)
EsLint —— 语法纠错
Auto Close Tag —— 自动闭合 HTML/XML 标签
Auto Rename Tag —— 自动完成另一侧标签的同步修改
JavaScript(ES6) code snippets — — ES6 语 法 智 能 提 示 以 及 快 速 输 入 , 除 js 外 还 支
持.ts,.jsx,.tsx,.html,.vue,省去了配置其支持各种包含 js 代码文件的时间
HTML CSS Support —— 让 html 标签上写 class 智能提示当前项目所支持的样式
HTML Snippets —— html 快速自动补全
Open in browser —— 浏览器快速打开
Live Server —— 以内嵌服务器方式打开
Chinese (Simplified) Language Pack for Visual Studio Code —— 中文语言包

3.安装配置 git

  • 详情见
https://blog.csdn.net/weixin_53903929/article/details/130624274

4.使用Git初始化仓库

  • 使用idea将项目交给 Git 进行版本控制

5.创建各个微服务项目

  • 创建5个模块
商品服务、仓储服务、订单服务、优惠券服务、用户服务
  • 相同点
1、web、openfeign
2、每一个服务,包名 com.lfg.xxx(product/order/ware/coupon/member)
3、模块名:glmall

6.使用Maven整合模块

  • 从模块中copy pom.xml
在glmall中添加pom.xml文件
  • 修改
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.lfg.glmall</groupId><artifactId>glmall</artifactId><version>0.0.1-SNAPSHOT</version><name>glmall</name><description>整合服务</description><!-- 类型 --><packaging>pom</packaging><!-- 整合 --><modules><module>coupon</module><module>member</module><module>order</module><module>product</module><module>ware</module></modules>
</project>

7.修改glmall中gitgnore模版

-- 忽略提交的文件
# glmall下的任意mvnw
**/mvnw
**/mvnw.cmd
**/.mvn
**/target/# 同级的文件夹
.idea
**/.gitignore

8.提交、推送初始化项

容器设置跟随虚拟机重启

-- 查询docker中所所有容器
docker ps -a
-- 设置容器自动启动 
docker update 容器名 --restart=always
-- 重启虚拟机测试
-- 查看某个容器日志
docker logs -f 容器

http://www.ppmy.cn/devtools/15995.html

相关文章

SpringBoot多数据源-DynamicDataSource

SpringBoot多数据源-DynamicDataSource 1.多数据源应用场景2.DynamicDataSource原理3.DynamicDataSource使用3.1 导入依赖3.2 application.yml多数据源配置 4.测试 1.多数据源应用场景 读写分离&#xff1a;数据库主节点压力比较大&#xff0c;需要增加从节点提供读操作&#…

无重复字符的最长子串

. - 力扣&#xff08;LeetCode&#xff09; 滑动窗口个人理解&#xff1a;从整体与局部的角度看&#xff0c;如何求包含当前字符的前面无重复字符的最长子串&#xff1f; 1、前面的最长字符串不包含当前字符&#xff0c;则追加1个即可 2、前面的最长字符包含当前字符&#x…

新风口下的必应bing国内广告投放该怎么做?

必应Bing作为全球搜索引擎市场的重要参与者&#xff0c;正逐渐显现出其在国内市场的独特价值和潜力。随着互联网生态的多元化发展&#xff0c;必应Bing凭借其高质量用户群和精准投放能力&#xff0c;成为了企业寻求新增长点的新风口。 一、洞察先机&#xff0c;精准定位市场 …

javaWeb项目-智慧餐厅点餐管理系统功能介绍

项目关键技术 开发工具&#xff1a;IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架&#xff1a;ssm、Springboot 前端&#xff1a;Vue、ElementUI 关键技术&#xff1a;springboot、SSM、vue、MYSQL、MAVEN 数据库工具&#xff1a;Navicat、SQLyog 1、JavaScript Java…

记录如何用php将多个字符替换成同一个字符

在PHP中&#xff0c;如果你想要将多个不同的字符替换成同一个字符&#xff0c;可以使用str_replace()函数。这个函数可以接收一个包含需要被替换的字符的数组&#xff0c;以及一个表示替换目标的字符串。 以下是使用str_replace()进行多字符替换的基本示例&#xff1a; $text…

【Java--数据结构】链表经典OJ题详解(上)

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 目录 谈谈头插、头删、尾插、头插的时间复杂度 反转一个单链表 链表的中间结点 返回倒数第k个结点 合并两个链表 谈谈头插、头删、尾插、头插的时间复杂度 头插和头删的时…

LocalAi,Ollama+AnythingLLM搭建部署本地大模型AI知识库,汉化版本

AnythingLLM 是一个全栈应用程序&#xff0c;您可以使用商业现成的 LLM 或流行的开源 LLM 和 vectorDB 解决方案来构建私有 ChatGPT&#xff0c;无需任何妥协&#xff0c;您可以在本地运行&#xff0c;也可以远程托管并能够智能聊天以及您提供的任何文件。 AnythingLLM 将您的文…

SpringBoot 配置 jedis 来连接redis

Maven依赖 首先配置 maven依赖&#xff0c;这个依赖&#xff0c;要结合自己的springboot 的版本去选&#xff0c; 如果想要看自己的springboot 版本 在 启动类中去 加入&#xff0c;这两行代码 String version SpringBootVersion.getVersion(); log.info("***SpringBo…

离散型制造行业智能工厂解决方案,助力国家新智产业升级

离散型制造行业智能工厂标准解决方案 离散型制造行业的智能工厂解决方案是推动国家智能制造产业升级的关键。 1. 集中优势资源&#xff1a;实施攻关计划&#xff0c;瞄准关键核心技术和重点产业进行定向突破&#xff0c;特别是在集成电路(IC)、AI、生物医药等领域。2. 国家创…

Docker 网络与资源控制

一 Docker 网络实现原理 Docker使用Linux桥接&#xff0c;在宿主机虚拟一个Docker容器网桥(docker0)&#xff0c;Docker启动一个容器时会根 据Docker网桥的网段分配给容器一个IP地址&#xff0c;称为Container-IP&#xff0c;同时Docker网桥是每个容器的默 认网关。因为在同…

【11-Ⅰ】Head First Java 学习笔记

HeadFirst Java 本人有C语言基础&#xff0c;通过阅读Java廖雪峰网站&#xff0c;简单速成了java&#xff0c;但对其中一些入门概念有所疏漏&#xff0c;阅读本书以弥补。 第一章 Java入门 第二章 面向对象 第三章 变量 第四章 方法操作实例变量 第五章 程序实战 第六章 Java…

3ds Max2024安装包(亲测可用)

目录 一、软件简介 二、软件下载 一、软件简介 3ds Max是一款基于PC系统的强大3D建模、渲染和制作软件&#xff0c;广泛应用于游戏开发、影视后期制作、建筑设计、工业设计等多个领域。其拥有丰富的建模工具&#xff0c;可轻松创建逼真的三维场景和模型&#xff1b;同时&#…

大数据开发详解

点击下载《大数据开发详解》 1. 前言 随着信息化时代的快速发展&#xff0c;大数据已经成为了企业和组织不可或缺的重要资源。大数据开发则是指通过一系列技术手段&#xff0c;对海量数据进行收集、存储、处理、分析和挖掘&#xff0c;以实现数据的价值化利用。大数据开发涉及…

第十五届蓝桥杯省赛第二场C/C++B组G题【最强小队】题解

20pts 枚举所有可能的左端点、右端点&#xff0c;时间复杂度 O ( n 2 ) O(n^2) O(n2)。 对于每个区间进行遍历检测&#xff0c;时间复杂度 O ( n 3 ) O(n^3) O(n3)。 100pts 由于数据范围为 1 0 5 10^5 105&#xff0c;所以肯定只能进行一次枚举。 我们尝试枚举右端点&…

好用的在线客服系统PHP源码(开源代码+终身使用+安装教程) 制作第一步

创建一个在线客服系统是一个涉及多个步骤的过程&#xff0c;包括前端界面设计、后端逻辑处理、数据库设计、用户认证、实时通信等多个方面。以下是使用PHP制作在线客服系统的第一步&#xff1a;需求分析和系统设计。演示&#xff1a;ym.fzapp.top 第一步&#xff1a;需求分析 确…

设计模式学习

设计模式学习 设计模式学习策略模式策略模式适用于以下场景&#xff1a; 设计模式学习 策略模式 策略模式适用于以下场景&#xff1a; 对象有多种行为或算法&#xff0c;需要根据不同情况选择不同的算法。系统中有多个类实现相同的接口或继承相同的抽象类&#xff0c;但具体…

《LeetCode力扣练习》代码随想录——回溯算法(递增子序列---Java)

《LeetCode力扣练习》代码随想录——回溯算法&#xff08;递增子序列—Java&#xff09; 刷题思路来源于 代码随想录 491. 非递减子序列 回溯 class Solution {private List<Integer> path new ArrayList<>();private List<List<Integer>> result ne…

C#中=> “Lambda运算符”

在C#中&#xff0c;> 符号被称为“Lambda运算符”或“Lambda箭头”。它用于连接Lambda表达式中的参数列表和表达式主体&#xff0c;表示函数的输入和输出关系。因此&#xff0c;Lambda运算符充当了将参数映射到表达式的箭头。 Lambda运算符的左侧是参数列表&#xff0c;它们…

前端模块化整理汇总

AMD 异步加载&#xff0c;依赖前置&#xff0c;前置依赖建议写在前引用&#xff0c;在所有模块加载完成后立即执行回调函数&#xff0c;用户体验好&#xff0c;不容易造成卡顿 需要引用require.js //math.js define([], function () {function add(a, b) {return a b;}retur…

数据可视化(七):Pandas香港酒店数据高级分析,涉及相关系数,协方差,数据离散化,透视表等精美可视化展示

Tips&#xff1a;"分享是快乐的源泉&#x1f4a7;&#xff0c;在我的博客里&#xff0c;不仅有知识的海洋&#x1f30a;&#xff0c;还有满满的正能量加持&#x1f4aa;&#xff0c;快来和我一起分享这份快乐吧&#x1f60a;&#xff01; 喜欢我的博客的话&#xff0c;记得…