阿里云云服务器、ACR镜像服务、容器化实战:搭建企业应用

一、容器化基础知识

华为云免费试用服务器:https://activity.huaweicloud.com/free_test/index.html

阿里云docker容器教程:https://edu.aliyun.com/course/3111900/lesson/341807097

查询ip地址:www.ip138.com

二、容器化搭建企业应用实战

2024-阿里云容器训练营.docx

2024-6-12-三创=容器训练营.docx

1、完整实战步骤:

1、选择阿里云ESC云服务器,完成基本配置(内存、核数、安全组规则、用户名密码)

2、开通容器镜像服务ACR(个人版)。(创建时需要和ECS在同一地域下,否则ECS无法通过内网访问镜像仓库。)

(1)创建镜像仓库命名空间

(2)创建命名空间下的镜像仓库

(3)代码源选择本地仓库

3、ESC中安装docker服务,并启动,检查docker运行状态

4、ESC中构建wordPress镜像

(1)创建目录,并下载dockerfile和配置文件docker-entrypoint.sh

(2)制作镜像 docker build

(3)查看本地当前镜像

5、将ESC本地构建的镜像上传至ACR

(1)登陆个人镜像仓库ACR,docker login。(镜像仓库登陆以及后续打标签、推送均通过专有网络地址:registry-vpc.vn来操作速度会更快)

(2)新增ACR镜像tag,按照格式打上标签再推送到ACR方便管理

(3)docker push

6、ecs按照wordpress数据库mariadb

(1)yum按照mariadb,并启动,初始化,设置密码

(2)创建wordpress数据库 create database wordpress

(3)授权root账号远程访问

7、通过镜像运行wordpress应用

(1)在ecs上创建站点文件持久化存储目录(目录为esc服务器本地目录)

(2)运行docker镜像(运行本地创建好/或pull下来的镜像)

(3)拉去镜像前,必须要先登陆镜像仓库ACR,否则无权限

docker run --name wordpress -p 80:80 -d -v /var/www/html:/var/www/html registry-vpc.cn-hangzhou.aliyuncs.com/wordpress-***/wordpress:v1

8、访问并配置wordpress应用

(1)浏览器访问esc公网,端口80

(2)在wordpress界面配置数据库(数据库主机填入服务器的私有IP地址)

process status 显示运行中的进程、用户、CPU、内存

-aux:

-a 显示所有终端进程

-u 以用户易读格式显示

-x显示没有控制终端进程

ps -aux |grep docker

2、关键点

(1)安全组规则

用网络上的客户端连接容器中的mysql服务,会出现问题,在申请的华为云服务器与网络客户端之间,有一道安全组,默认只开放22端口,如果需要访问其他端口(如33061)需要设置安全组。是在ecs服务器外部,设置了一层防火墙,所有访问都需要经过它过滤。

[图片]

(2)其他问题

1、问题一:在华为云服务器启动docker,并启动mysql容器,此时外网用户如何访问?访问经历哪些步骤?

  1. 启动mysql容器,会事先定义端口映射规则,如33061:3306,即将容器3306端口映射到云服务器外网的33061端口(这个端口用于让外部用户访问)。容器相当于虚拟机,有自己虚拟的ip地址,ecs服务器在互联网中为公网ip,内部的容器使用私网ip地址。
  2. 当外部用户访问云服务器的公网端口33061时,会通过NAT将公网地址转化为私网地址,最后访问到容器的3306端口
  3. 外部用户用sqlyog(模拟客户端软件)连接mysql
  4. 在云服务器外部,华为/阿里云会设置安全组(实质上是防火墙)用于过滤访问。
  5. 安全组规则默认只开放22端口,需要开启33061端口访问权限,此时外网用户可以访问33061端口
    2、问题二:从容器化搭建企业应用反应-容器化的发展历程
    (1)随着云计算技术的迅速发展,小陈紧跟前沿技术,学习云计算相关技术也熟悉了阿里云产品,希望用云服务器来搭建公司网站。
    (2)在云服务器上搭建应用,相同应用、在不同运行环境中执行结果不同,移植性问题(小则引起应用更新失败,大则拉低工作效率,产生生产事故,严重影响业务。

(3)容器解决移植性问题,在学习容器,了解服务器虚拟化知识

(4)已学习容器和docker基础知识,需要搭建公司的网站。

(4)但这些镜像从哪来,公司的网站原本只是一些代码,还不是镜像文件,如何把代码、运行环境打包在一起称为镜像?

构建:将应用程序和运行环境打包成镜像

发布:镜像文件发布到仓库,

运行:获取已发布的镜像,运行成容器

构建:基于dockerfile构建,将构建过程每个步骤写到脚本中,通过dockerbuild放手构建,整个过程清晰、可见,而docker commit通过命令直接构建,只有构建者才知道整个过程,难以重现。

dockerfile用于构建镜像的文本文件,包含了所需的指令和说明。dockerfile是一种被docker程序解释的脚本(编写时要符合dockerfile规则,dockerfile由一条条命令构成,每条命令对应linux下的命令)

(5)镜像放在哪好

放在镜像仓库中,称为镜像发布

(6)为什么要发布镜像

宣告这个镜像时可部署的正式版本,可作为后期生产环境的部署、更新应用的基准

(7)为什么要发布到镜像仓库,而不是本地服务器

一个协同项目中,又开发、测试、运维多个角色,每个角色不止一个人,希望能够中应用构建到发布的不同阶段形成良好的协作,就需要大家能访问的镜像仓库作为协作平台。

(8)公有镜像仓库最知名的github,需要私有还是公有镜像仓库?

私有,公司网站的一些素材,关联到企业的品牌形象和数据信息,二次开发的代码也涉及到了用户、支付等敏感数据。

(9)有必要自建私有镜像仓库嘛?

没必要,工作中心聚焦在核心业务上,使用阿里云提供的镜像服务ACR更加方便、可靠、高安全性。

相关推荐
沛沛老爹几秒前
CI/CD是什么?
运维·git·ci/cd
IPdodo全球网络服务34 分钟前
如何通过TikTok引流到私域流量池
运维·服务器·网络
IT 古月方源1 小时前
关于高级acl的配置和讲解
运维·开发语言·网络·tcp/ip·智能路由器
Tester_孙大壮1 小时前
运维相关知识科普
大数据·运维·数据库
开疆智能1 小时前
ModbusTCP转Profinet:工业通信的利器
linux·服务器·网络
Carry_NJ1 小时前
docker-compose样例
运维·docker·容器
彩虹糖_haha1 小时前
Linux高并发服务器开发 第六天(rwx 对于目录和文件的区别 gcc编译器 动态库静态库)
linux·运维·服务器
溟洵1 小时前
【C++】异步(并发)实现 线程池 ---附源码+实现步骤(future、async、promise、package_task、任务池原理和框架)
服务器·网络·c++·分布式·后端
breaksoftware4 小时前
Windows Subsystem for Linux——设置默认登录用户名
linux·运维·服务器
PyAIGCMaster5 小时前
ubuntu装P104
服务器·网络·ubuntu