当前位置: 首页 > news >正文

第三章 Docker中常用软件安装部署练习

目录

一、镜像仓库介绍

二、Nginx部署

2.1. 拉取镜像

2.2. 查看镜像

2.3. 运行镜像 

2.4. 查看在运行中的容器进程 

​编辑

2.5. 访问Nginx 

三、Tomcat部署

​编辑 3.1. 拉取镜像

3.2. 运行镜像

3.3. 拷贝文件到webapps 

3.4. 访问tomcat 

四、ElasticSearch部署

 4.1. 拉取运行镜像

​编辑 4.2. 访问ElasticSearch​编辑

4.3. 调整ElasticSearch的资源占用率

五、MySQL部署

5.1. 精简版安装

5.2. 高可靠安装

六、Portainer可视化面板安装

6.1. 拉取运行镜像

6.2. 访问 Portainer


镜像仓库地址:

​​​​​​https://image.cgdcgd.cc/search?q=nginx

注:对于Docker常用命令还不熟悉的同学,可以回看上一个章节,巩固常用命令基础

一、镜像仓库介绍

如下图所示,以Nginx为例,进入网站后在搜索栏里可以找自己想要的应用程序的镜像版本: 

我们也可以按照上一章讲到的,通过命令docker search nginx来搜索版本信息下载。上图中小红框圈的都是tag

Docker安装软件的基本步骤:

1. 搜索镜像

2. 拉取镜像

3. 查看镜像

4. 启动镜像(进行服务端口映射等)run命令可以同时执行2(pull命令)和4两个步骤

5. 停止容器

6. 移除容器

# 搜索ngnix的镜像版本
docker search ngnix
# 根据指定的tag即版本号下载ngnix
docker pull nginx:tag

二、Nginx部署

2.1. 拉取镜像

通过run命令也可以直接拉取镜像再运行

2.2. 查看镜像

2.3. 运行镜像 

docker run -d --name nginx1 -p 3355:80 nginx

docker run:这是Docker的一个基本命令,用于启动一个新的容器。

-d:这个标志表示“detached mode”,即以后台模式运行容器。这意味着容器将在后台运行,并且你可以继续使用你的终端或命令行界面执行其他任务。

--name nginx1:这个标志用于给容器指定一个名字,这里命名为nginx1。给容器命名有助于管理和识别,尤其是在你有多个容器运行时。

-p 3344:80:这个标志用于端口映射。它将宿主机的3344端口映射到容器内部的80端口。这意味着,当你访问宿主机的3344端口时,你实际上是在访问容器内部的Web服务器(例如Nginx)的80端口。

nginx:这是你想要运行的Docker镜像的名字。在这个例子中,你正在运行Nginx的Docker镜像。

2.4. 查看在运行中的容器进程 

 Nginx所在容器中的具体位置,可以修改nginx.conf的配置文件,本文不做修改: 

2.5. 访问Nginx 

通过我的服务器公网IP地址+公网开放的端口,可以成功访问到内网80端口的Nginx

三、Tomcat部署

 3.1. 拉取镜像

此处我们先通过pull拉取版本为9.0.0的tomcat镜像

3.2. 运行镜像

不同于安装Nginx时我们先pull拉取镜像,这里我们再演示下直接通过run方法拉取并运行其他版本的镜像,节省pull的操作: 

3.3. 拷贝文件到webapps 

在通过外网访问前我们先进入到tomcat的webapps目录下,发现里面是空的,没有页面。通常docker镜像生成的tomcat这个文件夹为空,所以为了测试访问我们的tomcat,我们可以把下图中webapps.dist中的内容拷贝到webapps中: 

3.4. 访问tomcat 

四、ElasticSearch部署

部署ElasticSearch之前我们一定要知道,es暴露的端口比较多,十分耗内存且数据一般需要放置(挂载)到安全的目录下。

 4.1. 拉取运行镜像

 $ docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:tag

--net somenetwork 可以先删掉,本章不做讲解,在后续章节的Docker网络的内容中再详细阐述。 

discovery.type=single-node 表明是单个节点,本章主要作为演示,我们就不做集群了。

docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2

 4.2. 访问ElasticSearch

4.3. 调整ElasticSearch的资源占用率

如果本地的服务器内存资源比较紧张,可以通过如下命令调整ES占用的资源上下限:

 docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2

通过docker stats命令我们可以查看各容器的资源占用情况 :

五、MySQL部署

5.1. 精简版安装

1. 拉取运行镜像

docker pull mysql
docker run --name wzx-mysql -e MYSQL_ROOT_PASSWORD=1234567890 -d mysql:tag

 命令解析:

-d 后台运行

--name 给容器指定名字

-e MYSQL_ROOT_PASSWORD 设置环境参数,给数据库设定root用户的密码

tag 想要安装的MySQL版本的标签,如5.78.0或者latest,使用时替换这个tag即可

2. 访问MySQL

进入容器后,通过mysql -uroot -p密码登录MySQL,就可以开始常规的MySQL增删改查等等一系列数据库操作了。

5.2. 高可靠安装

我们为MySQL的日志、配置文件以及数据文件目录进行挂载,避免在容器被删等情况下数据丢失

docker run -d -p 3310:3306 --privileged=true -v /home/mysql/logs:/var/log/mysql -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=1234567890 --name mysql01 mysql:latest

命令解析: 

-d 后台运行容器

-p 主机3310和容器3306数据库端口映射

--privileged 开放容器访问主机的权限,避免出现权限不足的访问异常

-v 卷挂载,将主机目录/home/mysql/conf和容器/etc/mysql/conf.d文件映射

-v 卷挂载,将主机目录/home/mysql/data和容器目录/var/lib/mysql映射

-e 环境配置,MYSQL_ROOT_PASSWORD=1234567890 设定mysql进入的初始密码

--name 指定容器别名

mysql:latest  指定mysql版本

注:-v 可以有多个,即可以同时挂载多个路径 

如下图所示,MySQL镜像安装成功: 

 

六、Portainer可视化面板安装

6.1. 拉取运行镜像

Portainer 是一个轻量级的管理用户界面,可以用来管理多个Docker环境。以下是使用Docker安装Portainer的步骤:

docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
  • -d 表示在后台运行容器。

  • -p 9000:9000 表示将容器的9000端口映射到宿主机的9000端口。

  • --name portainer 为容器指定一个名称。

  • --restart always 表示如果容器退出,将自动重启。

  • -v /var/run/docker.sock:/var/run/docker.sock 表示将Docker守护进程的Unix套接字挂载到容器中,Portainer可以通过这个套接字与Docker守护进程通信。

  • -v portainer_data:/data 表示创建一个持久化的数据卷来存储Portainer的数据。

  • portainer/portainer-ce 是Portainer的Docker镜像名称。

6.2. 访问 Portainer

第一次访问Portainer时,你需要设置管理员用户和密码。完成设置后,你可以登录并开始管理你的Docker环境。

相关文章:

  • win自带录屏怎么用?让视频制作更简单!
  • Spring Cloud全解析:服务调用之多个FeignClient调用服务名称相同
  • 在Pycharm中安装Cv2
  • Page<T>类型数据间的复制
  • Spring-bean实例化的方式
  • LeetCode 每日一题 2024/9/23-2024/9/29
  • 计算机毕业设计 基于Python国潮男装微博评论数据分析系统的设计与实现 Django+Vue 前后端分离 附源码 讲解 文档
  • 基于Node.js+Express+MySQL+VUE新闻网站管理系统的设计与实现
  • React学习笔记(四)——React 组件生命周期
  • 负载均衡(Load Balancing)是一种计算机技术,用于在网络应用中分配工作负载,以优化资源使用、最大化吞吐量、减少响应时间以及避免过载。
  • 【源码+文档+调试讲解】智能校园点餐管理系统springboot
  • 物联网系统中高精度压力检测方案_压力变送器
  • 15分钟学 Python 第29天 : 数据库基础
  • “不关心⚠️Warning”的代价:http自动升级https导致免费的存储服务扣费
  • 磁盘管理器
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • .pyc 想到的一些问题
  • LintCode 31. partitionArray 数组划分
  • magento 货币换算
  • NSTimer学习笔记
  • 高度不固定时垂直居中
  • 回流、重绘及其优化
  • ------- 计算机网络基础
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 码农张的Bug人生 - 见面之礼
  • 数据仓库的几种建模方法
  • 一个SAP顾问在美国的这些年
  • FaaS 的简单实践
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • ​比特币大跌的 2 个原因
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • #数据结构 笔记一
  • $.ajax中的eval及dataType
  • %check_box% in rails :coditions={:has_many , :through}
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (21)起落架/可伸缩相机支架
  • (C)一些题4
  • (libusb) usb口自动刷新
  • (Oracle)SQL优化基础(三):看懂执行计划顺序
  • (二)Kafka离线安装 - Zookeeper下载及安装
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (四)js前端开发中设计模式之工厂方法模式
  • (转载)虚函数剖析
  • .JPG图片,各种压缩率下的文件尺寸
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .net framework profiles /.net framework 配置
  • .NET Micro Framework初体验(二)
  • .Net Winform开发笔记(一)
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .net开源工作流引擎ccflow表单数据返回值Pop分组模式和表格模式对比
  • ??javascript里的变量问题
  • @manytomany 保存后数据被删除_[Windows] 数据恢复软件RStudio v8.14.179675 便携特别版...
  • [ 渗透工具篇 ] 一篇文章让你掌握神奇的shuize -- 信息收集自动化工具
  • [000-01-022].第06节:RabbitMQ中的交换机介绍
  • [2021]Zookeeper getAcl命令未授权访问漏洞概述与解决