Docker安装MySql数据库&Redis数据库&Nginx代理&Nacos组件

目录

Docker 的优点

1、快速,一致地交付您的应用程序

2、响应式部署和扩展

3、在同一硬件上运行更多工作负载

Docker 架构

离线安装Docker系统

在线安装Docker

Docker镜像操作实践

Docker 容器操作实践

Docker数据管理实践

Docker镜像制作实践

创建JDK镜像文件

安装MySql数据库

安装Redis数据库

安装Nginx代理

安装Nacos组件


Docker 的优点

Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。

1、快速,一致地交付您的应用程序

Docker 允许开发人员使用您提供的应用程序或服务的本地容器在标准化环境中工作,从而简化了开发的生命周期。

容器非常适合持续集成和持续交付(CI / CD)工作流程,请考虑以下示例方案:

  • 您的开发人员在本地编写代码,并使用 Docker 容器与同事共享他们的工作。
  • 他们使用 Docker 将其应用程序推送到测试环境中,并执行自动或手动测试。
  • 当开发人员发现错误时,他们可以在开发环境中对其进行修复,然后将其重新部署到测试环境中,以进行测试和验证。
  • 测试完成后,将修补程序推送给生产环境,就像将更新的镜像推送到生产环境一样简单。

2、响应式部署和扩展

Docker 是基于容器的平台,允许高度可移植的工作负载。Docker 容器可以在开发人员的本机上,数据中心的物理或虚拟机上,云服务上或混合环境中运行。

Docker 的可移植性和轻量级的特性,还可以使您轻松地完成动态管理的工作负担,并根据业务需求指示,实时扩展或拆除应用程序和服务。

3、在同一硬件上运行更多工作负载

Docker 轻巧快速。它为基于虚拟机管理程序的虚拟机提供了可行、经济、高效的替代方案,因此您可以利用更多的计算能力来实现业务目标。Docker 非常适合于高密度环境以及中小型部署,而您可以用更少的资源做更多的事情。

Docker 架构

Docker 包括三个基本概念:

  • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

Docker 容器通过 Docker 镜像来创建。

容器与镜像的关系类似于面向对象编程中的对象与类。

Docker 面向对象
容器 对象
镜像

Docker安装MySql数据库&Redis数据库&Nginx代理&Nacos组件_第1张图片

概念 说明

Docker 镜像(Images)

Docker 镜像是用于创建 Docker 容器的模板,比如 Ubuntu 系统。

Docker 容器(Container)

容器是独立运行的一个或一组应用,是镜像运行时的实体。

Docker 客户端(Client)

Docker 客户端通过命令行或者其他工具使用 Docker SDK (Redirecting…) 与 Docker 的守护进程通信。

Docker 主机(Host)

一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。

Docker Registry

Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。

Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。

一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。

通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。

Docker Machine

Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

 Docker 容器使用 | 菜鸟教程

原文地址侵删 

离线安装Docker系统

  • 推荐使用课前资料中已经下载好的资源(docker-setup.zip),也可以按如下步骤自己下载,然后将资源放到一个目录再安装,例如:
  • 第一步:下载docker离线包
  • https://download.docker.com/linux/static/stable/x86_64/docker-20.10.6.tgz
  • 说明,也可以从https://download.docker.com/linux/static/stable/网址下载指定版本
  • 第二步:下载离线安装工具
  • https://github.com/Jrohy/docker-install/
  • 说明,将下载好的这个工具解压。
  • 第三步:将下载好的资源放在一个目录,例如:
  • 第四步:在linux环境下,创建/root/setup/docker目录,然后拷贝下载好的资源到此目录(可通过MobaXterm工具直接上传到linux目录),例如
  • 第五步:执行安装操作
  • # 进入/root/setup/docker 文件夹
  • cd /root/setup/docker
  • # 为 install.sh添加执行权限
  • chmod +x install.sh
  • # 安装
  • ./install.sh -f docker-20.10.6.tgz
  • 安装成功后,会出现如下信息:
  • Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
  • docker 20.10.6 install success!
  • 第六步:安装成功以后,检查安装状态
  • docker info


在线安装Docker

  • 第一步:安装一组工具
  • sudo yum install -y yum-utils 
  • 第二步:设置 yum 仓库地址
  • sudo yum-config-manager \
  •     --add-repo \
  •     https://download.docker.com/linux/centos/docker-ce.repo
  • sudo yum-config-manager \
  •      --add-repo \
  •      http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 第三步:更新 yum 缓存
  • sudo yum makecache fast #yum 是包管理器
  • 第四步:安装新版 docker
  • sudo yum install -y docker-ce docker-ce-cli containerd.io

Docker镜像操作实践

  • 下载镜像
  • 语法:docker pull 镜像名
  • docker pull hello-world
  • 浏览镜像文件
  • 语法:
  • docker images
  • 查看镜像详情
  • 语法:docker inspect 镜像名或镜像id
  • docker inspect hello-world
  • 查看镜像历史
  • 一个镜像是由多个层(layer)组成的,那么,我们要如何知道各个层的具体内容呢?通过 docker history 命令,可以列出各个层(layer)的创建信息,例如:
  • docker history hello-world
  • 导出镜像文件
  • 镜像导出(linux系统中的镜像文件下载到本地-例如window),导出后给他人使用
  • docker save  hello-world | gzip > hello-world.tar.gz  
  • 删除镜像文件
  • 语法:docker image rm 镜像名或镜像id
  • docker image rm hello-world
  • 导入镜像操作
  • 镜像导入(要在hello-world.tar.gz 文件所在目录下执行)
  • docker load < hello-world.tar.gz  
  • 运行镜像文件
  • 基于镜像,启动容器运行。
  • docker run hello-world
  • docker ps -a查看当前容器
  • docker images 查看镜像
  • docker image rm 名字 删除镜像
  • docker rm id前三位 删除容器

Docker 容器操作实践
 

  • 下载镜像(Image)
  • 通过docker pull指令下载CentOS镜像,例如:
  • docker pull centos:7
  • 说明,官方镜像仓库地址为https://hub.docker.com/
  • 下载完以后,查看centos7镜像文件。
  • docker images
  • 创建并启动容器(Container)
  • 基本语法解析:
  • docker run -it xxxx bash
  • 其中:
  • 1)xxxx - 镜像名, 或 image id 的前几位,
  • 2)-it 这是两个参数(-i表示交互式操作, -t 表示终端)
  • 3) bash 表示进入操作终端,基于交互式进行相关操作(例如执行linux相关指令)。
  • 案例:通过docker启动运行 centos7镜像
  • docker run -it centos:7 bash
  • 查看Docker中的容器(Container)
  • 查看docker运行中的容器(要在宿主机执行docker指令)
  • docker ps
  • 说明,假如在容器中执行docker指令会出现如下问题,例如:
  • 查看docker运行中的所有容器
  • docker ps -a
  • 其中,-a表示全部(all)。
  • 查看容器日志(logs)信息
  • 查看容器启动运行日志时,这个指令非常重要,假如容器没有启动,要通过此指令去看一下错误日志。
  • docker container logs 802  #802为自己的容器id(一般写前三位即可)
  • 说明,查看容器的运行日志时,容器应该处于一种运行状态.
  • 停止(stop)或重启(Restart)容器(Container)
  • 停止运行的容器,代码如下:
  • docker container stop 802  #802为容器自己的id
  • 重新启动容器,代码如下:
  • docker container restart 802 #802位容器自己的id
  • 进入(exec)指定容器(Container)
  • 当容器处于运行状态,要进入容器,可以使用 docker exec 命令,例如:
  • docker exec -it 802 bash #802为容器id
  • 说明,假如容器处于一种非运行状态,此时你执行docker exec进入容器会出现如下问题:
  • echo $PATH 查看当前环境变量
     
  • 从容器(Container)中退出(exit)
  • 假如从宿主机进入了启动的容器,退出容器需要使用exit指令,例如:
  • exit
  • 删除(rm)容器(Container)
  • 假如容器不用了,可执行删除操作,例如:
  • docker container rm 802 #802为容器id
  • 说明,假如容器正在运行执行删除,会出现如下问题,例如:
  • 其中,如果删除运行中的容器,需要添加 -f 参数执行强制删除,例如:
  • docker container rm -f 802 #802为容器id
  • 清理所有处于终止状态容器,例如:
  • docker container prune
  • 说明,执行完这个指令以后,可以通过docker ps -a 再查看容器,看看是否有删除.

Docker数据管理实践

  • 在容器中管理数据主要有两种方式:
  • 数据卷(Volumes)
  • 挂载主机目录 (Bind mounts)
  • 数据卷
  • 数据卷是一个可供一个或多个容器使用的特殊目录,可以在容器之间共享和重用,默认会一直存在,即使容器被删除。
  • 数据卷操作
  • 第一步:创建数据卷,例如:
  • docker volume create container-vol
  • 第二步:查看所有数据卷,例如:
  • docker volume ls
  • 查看指定 数据卷 的信息
  • docker volume inspect container-vol
  • 查询的结果:
  • [
  •     {
  •         "Driver": "local",
  •         "Labels": {},
  •         "Mountpoint": "/var/lib/docker/volumes/container-vol/_data",
  •         "Name": "container-vol",
  •         "Options": {},
  •         "Scope": "local"
  •     }
  • ]
  • 第三步:启动挂载数据卷的容器,例如:
  • docker run -it --mount source=container-vol,target=/root centos:7 bash
  • 或者采用如下简写方式
  • docker run -it -v container-vol:/root centos:7 bash
  • -v container-vol:/root 把数据卷 container-vol 挂载到容器的 /root 目录
  • 第四步:删除数据卷(如果数据卷被容器使用则无法删除),例如
  • docker volume rm container-vol
  • 清理无主数据卷
  • docker volume prune
  • 挂载主机目录
  • 我们还可以在启动容器时,以目录直接挂载的方式进行数据操作,例如:
  • docker run -it -v /usr/app:/opt/app centos:7 bash
  • 其中:
  • 1)/usr/app:为宿主机目录
  • 2)/opt/app: 为启动容器的一个目录
  • 3)-v 用于指定挂载目录,如果本地目录(宿主机目录)不存在, Docker 会自动为你按照挂载目录进行目录的创建。
  • 例如:
  • 查看挂载目录信息
  • docker inspect 91a #91a 为容器id
  • 显示结果:
  • ...
  • "Mounts": [
  •     {
  •         "Type": "bind",
  •         "Source": "/usr/app",
  •         "Destination": "/opt/app",
  •         "Mode": "",
  •         "RW": true,
  •         "Propagation": "rprivate"
  •     }
  • ],
  • ...

Docker镜像制作实践

  • 背景
  • 我们基于docker pull指令可以从远程仓库下载我们需要的一些镜像(image),但是镜像仓库中的镜像是从哪里来的呢,假如镜像仓库中没有我们需要的镜像呢,所以本小结我们会讲解我们自己如何制作镜像.
  • 镜像制作分析
  • 我们可以将一些文件通过Dockerfile文件进行描述,然后通过build操作构建一个镜像,例如:
  • 其中,图中的Dockerfile用来构建镜像的文本文件,内部会包含一条条构建镜像所需的指令和说明。
  • 制作JDK镜像
  • 准备工作
  • centos:7镜像 (所有的镜像文件创建时都需要有一个空的centos镜像,就类似通过一个空的光盘或u盘创建一个系统启动盘是一样的)
  • jdk压缩包 jdk-8u51-linux-x64.tar.gz,基于此压缩包,制作jdk镜像。
  • 例如:JDK 拷贝的目录
  • 创建Dockerfile文件
  • 在创建新的镜像时都需要有一个Dockerfile文件(文件名一定要注意大小写),这个文件中定义镜像制作过程,这一小结以JDK镜像制作过程为例,讲解Dockerfile文件以及文件内容.
  • 第一步:进入jdk-8u51-linux-x64.tar.gz文件所在目录,基于vim创建Dockerfile文件,例如
  • vim  Dockerfile
  • 说明,这里一定要注意文件的大小写.
  • 第二步:按键盘上的"i"进入编辑模式
  • 第三步:拷贝如下代码到你的Dockerfile中,例如:
  • FROM centos:7
  • ADD jdk-8u51-linux-x64.tar.gz /usr/local/docker
  • ENV JAVA_HOME=/usr/local/docker/jdk1.8.0_51 \
  •     PATH=/usr/local/docker/jdk1.8.0_51/bin:$PATH
  • CMD ['bash']
  • 第四步:拷贝完成,按ESC进入命令行模式(又叫最后一行模式)
  • 第五步:然后按shift+冒号,输入wq保存退出.
  1. Docker 诞生的背景(服务多了,维护困难了)
  2. Docker 平台基本架构(Client/Server,参考官方的架构图)
  3. Docker 平台核心对象(镜像-image,容器-Container)
  4. Docker 平台的安装(在CentOS系统上离线安装、在线安装)
  5. Docker 服务的基本操作(status,start,stop ,restart,enable,disable,docker info,docker -v)
  6. Docker 镜像(Image)基本操作(pull,images,rm,save,load,inspect,history,…)
  7. Docker 容器基本操作(run,ps,ps -a,stop,start,restart,exec,logs,exit,rm,rm -f,prune)
  8. Docker 中的数据管理(数据卷-volume,直接的目录挂载)
  9. Docker 平台下镜像(Image)的制作(文件系统~软件+Dockerfile,build)
  10. 常见问题分析
  11. Docker是什么?(虚拟引擎,容器化技术平台,基于docker创建镜像,启动容器,运行镜像程序)
  12. Docker用于解决什么问题?(简化部署-例如sentinel镜像,运维,提高其服务的可维护性)
  13. Docker的基本架构是怎样的?(Client/Server,pull,run,build都属于客户端指令,通过这些指令向docker服务发起请求)
  14. Docker中有哪些核心对象?(Image/Container/…)
  15. 如何理解docker中的镜像(Image)?(一套文件系统,是静态,需要放到容器中去运行。类似一个jar包,需要JVM解释执行)
  16. 如何理解Docker中的容器(Container)?(一个进程,拥有独立的namespace,通过namaspace实现容器隔离)
  17. 是否可以基于同一个镜像启动多个容器?(可以,但是指定的容器名不能相同)
  18. 什么数据卷,为什么要使用数据卷,如何使用数据卷?
  19. 为什么我们要自己制作镜像?制作镜像的步骤是怎样的?
  20. Dockerfile的作用是什么?(描述镜像文件的内容,制作镜像时是参考Dockerfile中内容制作)
  21. 常见Bug分析
  22. 虚拟机系统没有ip地址?(确保vmvare服务已启动,在虚拟机网络编辑器中尝试还原vnet8)
  23. 容器使用着镜像时,不能删除镜像,例如
  24. 不要在容器(Container)内部使用docker指令,例如:
  25. Docker容器进入失败,例如:
  26. Dockerfile的大小写以及文件内容的不完整(注意拷贝时,单词要拷贝完整)
  27. 容器已经存在,但还要再创建,要注意名字重复.(可能你创建过这个容器,但是启动失败了)
     

创建JDK镜像文件

  1. 在Dockerfile所在目录执行docker build指令.例如:
  2. docker build -t jdk:8 .  #不要丢掉这里的点,-t表示镜像标识(镜像名),是tag单词的缩写.
  3. 注意末尾的点,表示构建过程中从当前目录寻找文件,jdk:8为我们创建的镜像名。
  4. 运行JDK镜像(image)文件
  5. 在宿主机中执行如下指令,启动JDK容器,例如:
  6. docker run -it jdk:8 bash
  7. 进入容器以后,可以通过echo $PATH查看环境变量(注意单词大小写),并可以通过java –version查看JDK版本信息。
  8. 基于JDK镜像启动sentinel
  9. JDK镜像创建以后,如何通过此镜像运行一个web服务呢,例如sentinel等。
  10. 第一步:将sentinel拷贝宿主机指定目录,例如/root/servers目录(servers目录不存在可以自己创建)。
  11. 第二步:启动镜像容器,通过java执行运行web服务
  12. 基于jdk:8镜像启动运行sentinel服务(服务启动后可在宿主机通过localhost:8180进行访问)
  13. docker run -d -p 8180:8080 --name sentinel \
  14. -v /root/servers:/usr/sca \
  15. jdk:8 java -jar /usr/sca/sentinel-dashboard-1.8.1.jar
  16. 其中:
  17. -d 表示后台运行
  18. -p 用于实现端口映射(假设外部要访问这个容器,必须要做端口映射)
  19. –name 表示为启动的容器起一个名字
  20. 这里,服务启动后可通过docker ps 指令查看启动的服务,假如看不到服务,可能服务启动失败,可通过如下指令查看具体日志
  21. docker container logs  689 #这里689为容器id,也可以为你的容器名
  22. 我们访问sentinel服务时需要通过宿主机进行访问,不可以直接访问,所以要做端口映射,例如
  23. 第三步:打开浏览器,访问sentinel服务.
  24. 在windows中打开浏览器,输入你的ip地址(这个ip为远端宿主机的ip地址),端口号为宿主机的端口号.例如
  • 制作Sentinel镜像

  • 准备工作
  • centos:7镜像
  • jdk-8u51-linux-x64.tar.gz
  • sentinel-dashboard-1.8.1.jar
  • 说明,通过docker images指令查看centos:7是否存在,然后将 jdk-8u51-linux-x64.tar.gz,sentinel-dashboard-1.8.1.jar放在/root/setup/sentinel目录(目录不存在的话自己创建)
  • 构建Sentinel镜像
  • 第一步:在sentinel所在目录创建Dockerfile文件,并添加如下内容
  • FROM centos:7
  • ADD jdk-8u51-linux-x64.tar.gz  /usr/local/
  • ADD sentinel-dashboard-1.8.1.jar  /usr/local/
  • ENV JAVA_HOME=/usr/local/jdk1.8.0_51 \
  •     PATH=/usr/local/jdk1.8.0_51/bin:$PATH
  • EXPOSE 8080
  • ENTRYPOINT ["java","-jar","/usr/local/sentinel-dashboard-1.8.1.jar"]
  • 其中,EXPOSE表示对外暴露的服务端口,ENTRYPOINT中写的是你容器启动时候要执行的指令.
  • 第二步:使用 Dockerfile 构建镜像(在Dockerfile所在目录执行docker指令)
  • docker build -t  sentinel:8 .  #不要丢掉这里的点
  • 第三步:后台运行sentinel容器
  • docker run -d --name sentinel8181 -p 8181:8080 sentinel:8  #-d 表示后台运行,-p用于指定端口映射,sentinel:8为镜像文件名
  • 第四步:查看sentinel容器
  • docker ps
  • 假如看不到容器,可通过"docker container logs 容器id"方式查看容器状态.
  • 第五步:访问sentinel服务
  • 可以在window中访问时你的linux系统中启动的sentinel服务,ip地址应该为宿主机的ip地址,端口号为宿主机的端口号.例如

安装MySql数据库

  • 安装步骤
  • 第一步:在hub.docker.com上搜索mysql镜像
  • 第二步:拉取指定版本的mysql,也可以指定拉取版本,例如:
  •  docker pull mysql:8.0.23
  • 第三步:检查mysql镜像
  •  docker images
  • 第四步:启动运行mysql镜像 (docker run 用于启动一个容器)
  • sudo docker run -p 3306:3306 --name mysql \
  • -v /usr/local/docker/mysql/mysql-files:/var/lib/mysql-files \
  • -v /usr/local/docker/mysql/conf:/etc/mysql \
  • -v /usr/local/docker/mysql/logs:/var/log/mysql \
  • -v /usr/local/docker/mysql/data:/var/lib/mysql \
  • -e MYSQL_ROOT_PASSWORD=root \
  • -d mysql:8.0.23
  • 假如安装过程中失败了,则可通过docker ps -a 查看以前的容器,假如已存在,则通过docker rm 镜像id 删除再重新安装即可。
  • 登陆mysql服务
  • 第一步:进入容器 (退出容器用exit)
  • sudo docker exec -it mysql bash
  • 第二步:登陆(默认密码root),一定要先进入mysql容器。
  • mysql -uroot -proot
  • 停止和启动mysql服务
  • 停止mysql服务)
  • docker stop mysql
  • 启动mysql服务
  • docker start mysql
  • 假如希望查看mysql启动时的日志,可以执行 docker container logs mysql 这个指令。
  • 设置mysql开机自启动(可选)
  • docker update mysql --restart=always

安装Redis数据库

  • 安装步骤
  • 第一步:下载镜像文件
  • docker pull redis
  • 第二步:准备配置文件
  • 创建redis配置文件目录
  • mkdir -p /usr/local/docker/redis01/conf
  • 在配置文件录下创建redis.conf配置文件(这个文件一定要创建,否在我们进行目录挂载时默认生成的是一个目录)
  • touch /usr/local/docker/redis01/conf/redis.conf
  • 第三步:创建redis实例并启动
  • sudo docker run -p 6379:6379 --name redis01 \
  • -v /usr/local/docker/redis01/data:/data \
  • -v /usr/local/docker/redis01/conf/redis.conf:/etc/redis/redis.conf \
  • -d redis redis-server /etc/redis/redis.conf 
  • 直接启动redis:docker run -itd --name redis-test -p 6379:6379 redis
  • 第四步:查看正在运行的进程
  • docker ps
  • 访问redis服务器
  • 第一步:控制台直接连接redis测试
  • docker exec -it redis01 bash
  • 第二步:检测redis 版本
  • redis-server  -v
  • 或者
  • redis-cli -v
  • 第三步:登录redis(默认不需要密码)
  • redis-cli
  • 或者直接将上面的两个步骤合为一个步骤执行也可以,指令如下:
  • docker exec -it redis01 redis-cli
  • 停止和启动redis服务
  • 停止redis服务?
  • docker stop redis01
  • 启动redis服务?
  • docker start redis01
  • 重启 redis 服务?
  • docker restart redis01

安装Nginx代理

  • 安装步骤
  • 第一步:拉取nginx镜像 (从这里hub.docker.com去查找)
  • docker pull nginx
  • 第二步:查看images镜像
  • docker images
  • 使用nginx镜像来创建nginx容器实例
  • docker run --name nginx-test -p 80:80 -d nginx
  • run 创建容器实例
  • -- name 容器命名
  • -v 映射目录
  • -d 设置容器后台运行
  • -p 本机端口映射 将容器的80端口映射到本机的80端口
  • 语句最后一个nginx是使用镜像的名称
  • 创建容器成功后,启动nginx容器

  •  
  • 访问 本机测试
     
  • 其中:/etc/nginx 为nginx容器启动时,nginx镜像文件默认的解压目录
  • 说明:假如以后想修改nginx配置,可以直接去nginx-vol数据卷对应的目录去修改.
  • 访问nginx服务
  • 进行访问检测,如图所示:
  • 停止和nginx服务
  • 停止nginx服务
  • docker stop nginx
  • 启动nginx服务
  • docker start nginx
  • 重启nginx服务
  • docker restart nginx

安装Nacos组件

  • 安装步骤
  • 第一步:拉取nacos(hub.docker.com)
  • docker pull nacos/nacos-server:1.4.1
  • 第二步: mysql中执行nacos的sql脚本文件
  • 1)将此文件nacos-mysql.sql(这个文件可从code服务器下载)拷贝到mysql容器的宿主机对应的挂载目录(可通过docker inspect mysql查看你mysql的挂载目录)
  • 2)在linux环境下启动并登录mysql
  • 进入mysql容器(前提是mysql已启动)
  • docker exec -it mysql bash
  • 登录mysq
  • 3)通过source指令运行容器目录下的sql文件
  • source  /etc/mysql/nacos-mysql.sql  #这里的/etc/mysql为容器中的一个目录(要选择你自己挂载的目录)
  • 例如:
  • 第三步:创建并启动nacos容器(拷贝下面内容时,账号和密码要用自己宿主机ip,自己数据库的账号密码)
  • docker run  \
  • -e TZ="Asia/Shanghai" \
  • -e MODE=standalone \
  • -e SPRING_DATASOURCE_PLATFORM=mysql \
  • -e MYSQL_DATABASE_NUM=1 \
  • -e MYSQL_SERVICE_HOST=192.168.126.129 \
  • -e MYSQL_SERVICE_PORT=3306 \
  • -e MYSQL_SERVICE_USER=root \
  • -e MYSQL_SERVICE_PASSWORD=root \
  • -e MYSQL_SERVICE_DB_NAME=nacos_config \
  • -p 8848:8848 \
  • --name nacos \
  • --restart=always \
  • -d nacos/nacos-server:1.4.1
  • 参数说明
  • 单节点模式
  • MODE=standalone
  • 数据库地址
  • MYSQL_SERVICE_HOST
  • 数据库用户名
  • MYSQL_SERVICE_USER
  • 数据库密码
  • MYSQL_SERVICE_PASSWORD
  • 需连接的数据库名称
  • MYSQL_SERVICE_DB_NAME
  • 端口映射
  • -p 8848:8848
  • 任意时候重启容器,开机就能自动启动容器(需设置docker为开机自启)
  • --restart=always
  • 第四步:检查nacos服务
  • docker ps
  • 假如启动失败,检查启动日志,例如:
  • docker container logs nacos
  • 其中,nacos的启动日志在/home/nacos/logs/start.out文件中。
  • 访问nacos服务
  • 启动nacos,然后在windows中输入http://ip:port/nacos方式进行访问测试
  • 说明,nacos登录时,默认用户名和密码都是nacos.
  • Nacos 与 MySQL 通讯分析
  • 停止和启动nacos服务
  • 停止nacos服务
  • docker stop nacos
  • 启动nacos服务
  • docker start nacos
  • 重启nacos服务
  • docker restart nacos

————————————————
版权声明:本文为CSDN博主「雨田说码」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/maitian_2008/article/details/119405755

你可能感兴趣的:(docker,docker,容器,运维)