Docker【5】 | Docker常用应用部署

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: Docker常用应用。

大家好,我是脚丫先生 (o^^o)

最近有小伙伴问我,脚丫,你写了这么几篇Docker的文章,大多数都是讲理论知识,没有实践。毛爷爷说过,“实践是检验真理的唯一标准”。为了听毛爷爷的话,我决定把Docker拉出来遛一遛。我们先来docker run方式部署,之后在感受docker-compose的闪亮。
请添加图片描述

申明

部分内容来源于网上资源,如若侵犯到您的权益,请联系作者第一时间删除

Docker应用部署

总体流程步骤:

  • 搜索镜像
  • 拉取镜像
  • 查看镜像
  • 通过镜像启动容器
  • 停止容器
  • 移除容器

注意 关于容器与宿主机的目录映射看nginx部署教程。

一、nginx部署

1、Docker hub上查找nginx镜像

docker search nginx

在这里插入图片描述

2、从docker hub上(阿里云加速器)拉取nginx镜像到本地

docker pull nginx

注意: 我这里是选择第一个nginx镜像,当然你也可以拉取其他的nginx镜像。
在这里插入图片描述

3、查看镜像

在这里插入图片描述

4、根据镜像创建nginx容器

docker run -d --name=mynginx -p 80:80 nginx
  • -it 交互
  • -d 后台
  • --name 容器名
  • -p 宿主机端口:容器端口 ( 端口进行映射,将宿主机 80 端口映射到容器内部的 80 端口)

5、打开浏览器访问

最后我们可以通过浏览器可以直接访问 80端口的 nginx 服务:
在这里插入图片描述
到此,我们已经把nginx容器启动起来了,完结撒花!!! 那是不可能的...也许你会问,脚丫,我光光学会了nginx容器,那我要显示我自己的前端咋搞?资源怎么放入容器呢?如果容器凉了,那是不是所有的数据全没了? 带着问题我们接着往下说

这里就要讲解的是容器数据卷

6、容器数据卷

如上诉问题,比如nginx容器,我们想到一个解决办法,就是如果能把容器的数据映射到宿主机,那么是不是就能持久化数据,即使容器凉了,也无关紧要(映射:就好比你照镜子,你做鬼脸,镜子里的你也跟着做鬼脸)。当然,官方也想到了,于是就有了数据卷。卷就是目录或者文件,它的设计就是持久化数据,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷。
就好比。镜子完全的显示你自己,如果你把镜子打碎了,镜子里的你,支离破碎,凉了。但是现实中的你依然坚挺。

接下来我们创建一个带有数据卷的nginx容器。

docker run -d --name=mynginx -p 80:80 -v /html:/usr/share/nginx/html nginx
  • -v 数据卷,宿主机绝对路径目录:容器内目录。

二、mysql部署

1、Docker hub上查找mysql镜像

docker search mysql

在这里插入图片描述
2、从docker hub上(阿里云加速器)拉取mysql镜像到本地标签为5.7

docker pull centos/mysql-57-centos7

3、查看mysql镜像
在这里插入图片描述

4、根据镜像创建mysql容器

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 centos/mysql-57-centos7
  • --name指定容器名字
  • -v 目录挂载(这里挂载的是日志、数据、配置)
  • -p指定端口映射
  • -e设置mysql参数
  • -d后台运行

三、redis部署

1、Docker hub上查找redis镜像

docker search redis:4.0

在这里插入图片描述
2、从docker hub上(阿里云加速器)拉取redis镜像到本地

docker pull redis:4.0

在这里插入图片描述

3、查看redis镜像
在这里插入图片描述

4、根据镜像创建redis容器

针对配置文件如果直接挂载的话docker会以为挂载的是一个目录,所以我们先创建一个文件然后再挂载,在虚拟机中。

mkdir -p /mydata/redis/conf
touch /mydata/redis/conf/redis.conf
docker run -p 6379:6379 --name redis \
-v /mydata/redis/data:/data \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis:4.0 redis-server /etc/redis/redis.conf

直接进去redis客户端。

docker exec -it redis redis-cli

默认数据是不持久化的。在配置文件中输入appendonly yes,就可以持久化了。进行配置文件的修改

vim /mydata/redis/conf/redis.conf
# 插入下面内容
appendonly yes

保存

修改完后进行redis容器的重新启动

docker restart redis
docker -it redis redis-cli

四、tomcat部署

1、Docker hub上查找tomcat镜像在这里插入图片描述
2、从docker hub上(阿里云加速器)拉取tomcat镜像到本地
在这里插入图片描述
3、查看tomcat镜像
在这里插入图片描述
4、根据镜像创建tomcat容器

docker run -d -p 3305:8080 --name mytomcat tomcat

我们进行公网的一个访问,发现测试访问没有问题,但为什么 tomcat 没有显示出来呢?
在这里插入图片描述
实际上官方提供的 tomcat 镜像是不完整的,如何解决这个问题,我们可以执行下面的操作:

# 根据容器名称进入tomcat容器
[root@spark3 /]# docker exec -it mytomcat /bin/bash
root@3475b4167b5b:/usr/local/tomcat# ls
BUILDING.txt     NOTICE         RUNNING.txt  lib             temp          work
CONTRIBUTING.md  README.md      bin          logs            webapps
LICENSE          RELEASE-NOTES  conf         native-jni-lib  webapps.dist
# 缺少ll命令
root@3475b4167b5b:/usr/local/tomcat# ll
bash: ll: command not found
# 进入webapps目录
root@3475b4167b5b:/usr/local/tomcat# cd webapps
root@3475b4167b5b:/usr/local/tomcat/webapps# ll
bash: ll: command not found
# 目录下文件为空
root@3475b4167b5b:/usr/local/tomcat/webapps# ls
root@3475b4167b5b:/usr/local/tomcat/webapps

# 发现问题:1、linux命令少了。 2.webapps目录为空 
# 解决方案:
# 将webapps.dist下的文件都拷贝到webapps下即可

root@3475b4167b5b:/usr/local/tomcat# cp -r webapps.dist/* webapps
root@3475b4167b5b:/usr/local/tomcat# cd webapps
root@3475b4167b5b:/usr/local/tomcat/webapps# ls
ROOT  docs  examples  host-manager  manager

当我们把webapps.dist目录下的内容拷贝到webapp目录下时,重新刷新浏览器页面,可以惊喜地发现“tomcat”出现了,说明我们把项目通过docker成功部署到tomcat上去了。当我们想把自己的项目部署上去时,操作也是一模一样的。
在这里插入图片描述

我们以后要部署项目,如果每次都要进入容器是不是十分麻烦?那么我们可以用第一节部署nginx容器那儿学到数据卷的知识,就可以在容器外部提供一个映射路径,比如webapps,我们在外部放置项目,就自动同步内部就好了!

五、mongodb部署

1、Docker hub上查找mongodb镜像
在这里插入图片描述
2、从docker hub上(阿里云加速器)拉取mongodb镜像到本地

docker pull mongo

在这里插入图片描述
3、查看mongo镜像

在这里插入图片描述
4、根据镜像创建mongo容器

docker run -d --name mongo -p 27017:27017 mongo --auth
  • --auth:需要密码才能访问容器服务。

接着使用以下命令添加用户和设置密码,并且尝试连接。

[root@spark3 ~]# docker exec -it mongo mongo admin
# 创建一个名为 admin,密码为 123456 的用户。
>  db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});
# 尝试使用上面创建的用户信息进行连接。
> db.auth('admin', '123456')

六、postgresql部署

1、Docker hub上查找postgresql镜像

docker search postgresql

在这里插入图片描述
2、从docker hub上(阿里云加速器)拉取postgresql镜像到本地
在这里插入图片描述

3、查看postgresql镜像

docker images | grep postgres

在这里插入图片描述
4、根据镜像创建postgresql容器

docker run --name my_postgres -v /home/data:/var/lib/postgresql -e POSTGRES_PASSWORD=****** -d -p ****:5432 postgres 
  • --name : 自定义容器名称
  • -v :进行映射,本地目录:容器内路径
  • POSTGRES_PASSWORD:数据库密码
  • -p:映射端口,宿主机端口:容器端口

总结: 我们先小小学习docker run基本的几个容器的安装,之后我们用docker-compose来进行容器大全的安装,会更加的感觉爽就一个字。因为我们在生产中,都是基于docker-compose来管理编排容器,它可读性更加好,更加方便。
在这里插入图片描述

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
4天前
|
存储 关系型数据库 MySQL
美团面试:MySQL为什么 不用 Docker部署?
45岁老架构师尼恩在读者交流群中分享了关于“MySQL为什么不推荐使用Docker部署”的深入分析。通过系统化的梳理,尼恩帮助读者理解为何大型MySQL数据库通常不使用Docker部署,主要涉及性能、管理复杂度和稳定性等方面的考量。文章详细解释了有状态容器的特点、Docker的资源隔离问题以及磁盘IO性能损耗,并提供了小型MySQL使用Docker的最佳实践。此外,尼恩还介绍了Share Nothing架构的优势及其应用场景,强调了配置管理和数据持久化的挑战。最后,尼恩建议读者参考《尼恩Java面试宝典PDF》以提升技术能力,更好地应对面试中的难题。
|
18天前
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
55 23
|
7天前
|
SQL Java Maven
docker部署apollo
docker部署apollo步骤
|
19天前
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
47 22
|
22天前
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
58 25
|
2月前
|
Ubuntu Linux 开发工具
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖项打包成标准化单元(容器),确保在任何支持 Docker 的操作系统上一致运行。容器共享主机内核,提供轻量级、高效的执行环境。本文介绍如何在 Ubuntu 上安装 Docker,并通过简单步骤验证安装成功。后续文章将探讨使用 Docker 部署开源项目。优雅草央千澈 源、安装 Docker 包、验证安装 - 适用场景:开发、测试、生产环境 通过以上步骤,您可以在 Ubuntu 系统上成功安装并运行 Docker,为后续的应用部署打下基础。
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
|
22天前
|
SQL 关系型数据库 MySQL
docker-compose部署mysql8
使用docker-compose容器化部署mysql8
|
3月前
|
持续交付 开发者 Docker
探索容器化技术Docker及其在现代软件开发中的应用
探索容器化技术Docker及其在现代软件开发中的应用
|
2月前
|
存储 Prometheus 监控
Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行
本文深入探讨了在Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行。
75 5
|
2月前
|
开发框架 安全 开发者
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。本文探讨了 Docker 在多平台应用构建与部署中的作用,包括环境一致性、依赖管理、快速构建等优势,以及部署流程和注意事项,展示了 Docker 如何简化开发与部署过程,提高效率和可移植性。
78 4

热门文章

最新文章