Docker-安装软件

news2025/2/5 22:14:24

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、安装MySQL
    • (一)拉取MySQL镜像
    • (二)运行MySQL容器
      • (1)数据卷概念
    • (三)查看容器是否运行
    • (四)登录MySQL
      • (1)Navicat连接
      • (2)容器内部登录
      • (3)退出容器
      • (4)进入容器
  • 二、安装Nacos
    • (一)拉取Naocs镜像
    • (二)创建并启动Nacos容器
    • (三)参数解释
  • 三、安装Redis
    • (一)拉取 Redis 镜像
    • (二)创建并启动Redis容器
    • (三)参数解释
  • 四、安装 RabbitMQ
    • (一)拉取 RabbitMQ 镜像
    • (二)创建并启动 RabbitMQ 容器
    • (三)参数解释
    • (四)额外配置
  • 总结


前言

提示:如果看不懂以下命令,建议找点教学视频观看:

使用docker安装我们开发中常用的软件,并且熟悉docker命令的使用,重点理解docker中另外一个重要概念:数据卷。


提示:以下是本篇文章正文内容,下面案例可供参考

一、安装MySQL

(一)拉取MySQL镜像

docker pull mysql

(二)运行MySQL容器

docker run --name mysql \
           -e MYSQL_ROOT_PASSWORD=123456 \
           -e MYSQL_DATABASE=db_test \
           -e MYSQL_USER=zhangsan \
           -e MYSQL_PASSWORD=123456 \
           -p 3306:3306 \
           -v /home/mysql/data:/var/lib/mysql \
           -v /home/mysql/conf:/etc/mysql/conf.d \
           -v /home/mysql/logs:/logs \
           -d mysql:latest

如果是看完 作者 docker-命令 后来看这篇文章,一下子看到这么一串命令,肯定懵逼。为什么启动一个容器这么复杂,不应该是直接 docker run 直接启动吗?

说明:
docker run: 创建并启动一个新的 Docker 容器
–name mysql: 指定容器的名称为 mysql
-e 选项用于设置环境变量
-e MYSQL_ROOT_PASSWORD=123456: 设置 MySQL root 用户 的的密码为 123456
-e MYSQL_DATABASE=db_test: 在启动容器时创建一个名为 db_test 的数据库
-e MYSQL_USER=zhangsan: 创建一个名为 zhangsan 的新 MySQL 用户
-e MYSQL_PASSWORD=123456: 为新创建的 zhangsan 用户设置密码为 123456
-p 3306(宿主机端口):3306(容器端口): 映射容器的 3306 端口到主机的 3306 端口
-v /home/mysql/data:/var/lib/mysql: 将主机的 /home/mysql/data 目录挂载到容器的 /var/lib/mysql 目录
-v /home/mysql/conf:/etc/mysql/conf.d: 将主机的 /home/mysql/conf 目录挂载到容器的 /etc/mysql/conf.d 目录
-v /home/mysql/logs:/logs: 将主机的 /home/mysql/logs 目录挂载到容器的 /logs 目录
-d mysql:latest: 在后台运行容器 (-d 选项)。mysql:latest 是镜像名称,表示使用 MySQL 镜像的最新版本

/home/mysql/data 如果宿主机不存在这个文件,docker在创建容器时,自动创建该文件

(1)数据卷概念

当我们使用 docker 成功创建一个MySQL容器后,我们知道MySQL是做数据的持久化存储的,那么当我们在往数据库中添加一条数据后,数据最终保存在哪里呢?当容器被我删除后,容器中的数据肯定会随之销毁,那我们想将MySQL容器运行所产生的数据库做持久化保存,该如何操作呢? 当容器需要读取外部文件信息,容器又该如何获取外部文件到容器内部执行呢?

答案:使用数据卷。

我们的容器是运行在宿主机上,宿主机就是一台真正服务器,能够永久保存数据,因此我们只需要将 容器 运行时产生的数据保存在宿主机上,这样就能实现数据的永久存储,其它容器需要读取另外一个容器的数据时,直接读取宿主机上的文件就能实现容器之间的数据交换,实现容器之间的通信

数据卷:
数据卷是宿主机中的一个目录或文件
当容器目录和数据卷绑定后,对方的修改会立即同步
一个数据卷可以被多个容器同时挂载
一个容器也可以挂载多个数据卷

数据卷作用:
容器数据的持久化
外部机器和容器间的间接通信
容器之间数据交换

(三)查看容器是否运行

docker ps

在这里插入图片描述

(四)登录MySQL

(1)Navicat连接

在这里插入图片描述

此时我们切换目录到数据卷位置

cd /home/mysql/data

在这里插入图片描述

我们再切换到另外两个文件下时,发现并没有什么数据。

/home/mysql/conf
/home/mysql/conf

这点确实不好解释(作者也懵逼),MySQL容器的配置文件并没有保存在宿主机上的数据卷中,但是通过上述我们也能理解了一点,为什么我们在启动MySQL容器时,为什么会有那么多参数。启动MySQL容器时,设置MySQL的 root 用户密码为 123456 这个应该很好理解的。然后就是将容器的端口映射到宿主机的端口,接着将宿主机的文件挂载到容器运行时的文件。

(2)容器内部登录

1、进入 mysql 容器(这里容器名是我们创建容器时,给容器起的名字)

docker exec -it mysql /bin/bash

2、登录mysql

mysql -uroot -p123456

在这里插入图片描述

在这里插入图片描述

(3)退出容器

exit

在这里插入图片描述
当我们成功创建并启动一个MySQL容器后,我们使用 Navicat 成功连接上MySQL时,我们连接MySQL时是怎么连接的呢?数据库地址,IP地址+端口号,然后填写用户名,密码。我们创建容器时,设置mysql容器的端口号3306映射到宿主机端口3306,用户名以及密码,但是没有设置ip端口和网络,说明容器本身默认使用的住宿机的IP地址,与宿主机共享网络。否则我们是无法正常连接上MySQL容器的。既然mysql容器既然有ip,端口,文件,那么可以理解为docker创建的mysql容器,其实这个容器本身就是一台liunx服务器,我们可以验证这个想法。

(4)进入容器

验证docker创建的容器与liunx系统是否相似

docker exec -it mysql /bin/bash

在这里插入图片描述
从上图我们看到,mysql 容器内部跟我们liunx服务内部特别相似,为什么说相似而不是一样呢?比如我们在执行这样一个指令

ll

在这里插入图片描述

显示是命令未找到,我们知道,ll 是 ls -l 的缩写,但是我么上述执行 ls -l 是可以的, ll就不行了。这个原因就是 ls -l 是liunx操作系统的原生命令,而ll 是liunx发行版中设置的快捷方式,说明我们使用docker创建MySQL 容器时,这个容器本质就是一台原始小型的liunx服务器并且在上面安装了mysql。我们再执行如下命令看结果

alias ll='ls -l'
ll

在这里插入图片描述
现在我们容器内部就可以使用 ll指令。我们进入 /logs文件 和 /etc/mysql/conf.d 文件发现都是为空,只有 /var/lib/mysql文件下数据跟我们挂载的宿主机 /home/mysql/data 文件一致的

二、安装Nacos

(一)拉取Naocs镜像

docker pull nacos/nacos-server:latest

(二)创建并启动Nacos容器

docker run -d \
  --name nacos \
  -e MODE=standalone \
  -e NACOS_PORT=8848 \
  -p 8848:8848 \
  nacos/nacos-server:latest

(三)参数解释

-d: 在后台运行容器。
–name nacos: 指定容器的名称为 nacos。
-e MODE=standalone: 设置 Nacos 运行模式为独立模式。默认是集群模式。
-e NACOS_PORT=8848: 指定 Nacos 服务运行的端口为 8848。
-p 8848:8848: 将主机的 8848 端口映射到容器的 8848 端口。
nacos/nacos-server:latest: 使用的 Docker 镜像名称和标签。

三、安装Redis

(一)拉取 Redis 镜像

docker pull redis:latest

(二)创建并启动Redis容器

docker run -d \
  --name redis \
  -p 6379:6379 \
  redis:latest

(三)参数解释

-d: 以后台模式运行容器。
–name redis: 设置容器名称为 redis。
-p 6379:6379: 将主机的 6379 端口映射到容器的 6379 端口。
redis:latest: 使用的 Docker 镜像名称和标签。

四、安装 RabbitMQ

(一)拉取 RabbitMQ 镜像

拉取 RabbitMQ 的官方 Docker 镜像。RabbitMQ 镜像有两个版本:一个包含默认的管理插件,另一个则不包含。这里我们使用包含管理插件的版本,方便管理和监控。

docker pull rabbitmq:management

(二)创建并启动 RabbitMQ 容器

docker run -d \
  --name rabbitmq \
  -p 5672:5672 \
  -p 15672:15672 \
  rabbitmq:management

(三)参数解释

-d: 在后台运行容器。
–name rabbitmq: 指定容器名称为 rabbitmq。
-p 5672:5672: 将主机的 5672 端口映射到容器的 5672 端口(RabbitMQ 的默认 AMQP 端口)。
-p 15672:15672: 将主机的 15672 端口映射到容器的 15672 端口(RabbitMQ 管理控制台的端口)。
rabbitmq:management: 使用的 Docker 镜像名称和标签。

默认的登录用户名和密码是:

用户名: guest
密码: guest

(四)额外配置

通过环境变量配置 RabbitMQ 的用户、密码和其他设置。例如,设置一个自定义的管理用户

docker run -d \
  --name rabbitmq \
  -p 5672:5672 \
  -p 15672:15672 \
  -e RABBITMQ_DEFAULT_USER=admin \
  -e RABBITMQ_DEFAULT_PASS=adminpassword \
  rabbitmq:management

总结

以上就是通过docker 如何安装我们日常使用软件教程,通过docker我们快速有效就的安装一个工具软件,比我们平时普通安装方便快捷。然后就是通过docker安装mysql来了解认识我们docker,重点是理解数据卷这个概念。这些镜像已经创建容器的方式都是docker官方给出的,因此假如我们想要自己制作镜像,该如何制作呢?自己创建的镜像又该如何创建成容器呢?我们在什么时候创建自己的镜像呢?下篇文章将叙述是docker如何制作镜像

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

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

相关文章

开发 LLM 支持的应用程序:Azure 上的 Llama 2(5/n)

微软与 Meta 联手在 Azure 上提供 Meta 的开源大型语言模型 (LLM) Llama 2,打开了闸门!信不信由你,这是一件大事。 亚马逊的 AWS 于去年年底发布了 Amazon SageMaker Jumpstart,它与 Azure 类似,支持部署开源模型供公共…

常见而不容忽视,电器中微型紧固件的四大影响

技术和创新催生了数以百万计的电器,它们已成为每个家庭和人类日常使用的一部分。从微波炉和冰箱到笔记本电脑和智能手机,这些部件的技术影响正在迅速增长,成为现代生活的一部分。 在许多人的不经意间,这些功能强大的发明为我们许多…

[Linux#42][线程] 锁的接口 | 原理 | 封装与运用 | 线程安全

互斥量 mutex • 大部分情况,线程使用的数据都是局部变量,变量的地址空间在线程栈空间 内,这种情况,变量归属单个线程,其他线程无法获得这种变量。 • 但有时候,很多变量都需要在线程间共享,这…

代码随想录算法训练营第二十一天(二叉树 八)

今天是二叉树复习最后一天! 力扣题部分: 669. 修剪二叉搜索树 题目链接:. - 力扣(LeetCode) 题面: 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low…

使用 Dify 和 AI 大模型理解视频内容:Qwen 2 VL 72B

接下来的几篇相关的文章,聊聊使用 Dify 和 AI 大模型理解视频内容。 本篇作为第一篇内容,以昨天出圈的“黑神话悟空制作人采访视频”为例,先来聊聊经常被国外厂商拿来对比的国产模型:千问系列,以及它的内测版。 写在…

Linux非VP扩容方案

Linux系统非VP扩容方案 描述:现有虚拟机磁盘1TB 容量不够,需要扩容。 采用:https://bbs.sangfor.com.cn/forum.php?modviewthread&tid110403 扩容失败。原因是没有VP 和LV 解决方案: 1,查看分区 cat /proc/p…

鸿蒙内核源码分析(中断概念篇) | 海公公的日常工作

关于中断部分系列篇将用三篇详细说明整个过程. 中断概念篇 中断概念很多,比如中断控制器,中断源,中断向量,中断共享,中断处理程序等等.本篇做一次整理.先了解透概念才好理解中断过程.本篇的主角是海公公,用…

全国计算机二级C语言笔试试题及答案

一、选择题(每小题2分,共70分)   下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。 请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。   (1)下列叙述中正确的是 A)线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的 …

day06-SpringBootWeb请求响应

前言 在上一次的课程中,我们开发了springbootweb的入门程序。 基于SpringBoot的方式开发一个web应用,浏览器发起请求 /hello 后 ,给浏览器返回字符串 “Hello World ~”。 其实呢,是我们在浏览器发起请求,请求了我们的…

[Meachines] [Easy] Bastion SMB未授权访问+VHD虚拟硬盘挂载+注册表获取NTLM哈希+mRemoteNG远程管理工具权限提升

信息收集 IP AddressOpening Ports10.10.10.134TCP:22, 135, 139, 445, 5985, 47001, 49664, 49665, 49666, 49667, 49668, 49669, 49670 $ nmap -p- 10.10.10.134 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH fo…

Bonree ONE 3.0:全域可观测 运维新境界

2024年8月16日,备受瞩目的Bonree ONE 3.0产品发布会上海站在上海中心大厦隆重举行。此次发布会以”Take IT Easy“——全域可观测,运维新境界为主题,博睿数据正式发布了一体化智能可观测平台Bonree ONE 3.0版本。Bonree ONE 3.0凭借领先的全域…

超声波清洗机哪个品牌好用?值得入手的超声波清洗机品牌推荐

许多人初次使用超声波清洗机的场景,往往发生在眼镜店内。它能灵巧穿梭于眼镜鼻托等细微缝隙间,实现彻底清洁,成效显著。这不仅限于眼镜,各式小件物品同样能享受到这份深度洁净的待遇。尽管超声波清洗机或许并非日常生活中的绝对必…

LeetCode.80.删除有序数组中的重复项II

题目描述: 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间…

【MySQL-23】万字总结<InnoDB引擎>——【逻辑存储结果&架构(内存结构,磁盘结构,后台线程)&事务原理&MVCC】

前言 大家好吖,欢迎来到 YY 滴MySQL系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! YY的《C》专栏YY的《C11》专栏YY的《Lin…

【nginx】详细详细超详细,包括编译安装nginx+升级+回滚+核心配置+高级配置+反向代理+Nginx Rewrite相关功能等等

理论部分: 企业高性能Web服务器Nginx是一个开源的、高性能的HTTP和反向代理服务器,同时也支持IMAP/POP3/SMTP协议。它由俄罗斯人Igor Sysoev开发,并在2004年以BSD-like协议发布。Nginx因其卓越的性能、稳定性、丰富的功能集以及简单的配置而…

连锁美业门店收银系统怎么选?什么样的美业系统好用?美业管理系统源码分享

通过“PCiPAD手机APP微信小程序”的便捷功能操作, 提升预约服务、 会员管理、 收银管理、 库存管理、 客勤维护、员工管理、 排班管理等流程效率, 让门店员工的工作重心回归到服务质量上。 ▲ 小程序 ▲ 手机APP ▲ PC管理后台

Aseembly(九)-[BX] Loop

正如本篇文章的标题所示:本篇文章主要是进行 [BX] 和loop的讲解 上篇文章我们讲述了 关于 自己去dosbox里面编写汇编程序并且一步一步的编译(masm) 链接(link) 然后进行debug的过程 ,也进行了一个关于栈的实验: 详情请见我的上一篇文章 Aseembly(八)-汇编语言编写程序 让我们…

JavaScript class和正则

正则表达式练习 出生日期 年 月 日 ()表示一个整体 console.log(1909.match(^19\\d{2}$)); console.log(2024.match(^20(([01][0-9])|(2[0-4]))$)); //年 console.log(1909.match(^(19\\d{2})|(20(([01][0-9])|(2[0-4])))$)); // 月 console.log(12.match(^(0[1-9])|(1[0-2])…

minio版本升级与数据迁移操作记录

系列文章目录 minio单节点与集群安装 文章目录 系列文章目录前言一、问题引出二、升级与数据迁移步骤0.资源清单1.部署及启动新minio单实例2.设置新旧实例的别名3.检查旧实例bucket及存储的文件4.通过mc客户端命令进行数据迁移5.迁移结果验证 三、新旧实例minio数据对比 前言 …

利用Geohash算法,快速检索周边兴趣点

文章目录 一、前言二、基本原理三、Geohash算法四、算法存在的问题五、代码实现六、问题解决处理 一、前言 需要一个需求,查找某小区附近的超市,如果该小区和超市距离在500米以内,则查找成功。 实现该功能按照传统方式,需要获取小…