Docker-安装软件

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


前言

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

使用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如何制作镜像

  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值