通过ACR快速部署网站应用实践

本文涉及的产品
云服务器ECS,u1 2核4GB 1个月
云服务器 ECS,每月免费额度200元 3个月
云服务器 ECS,u1 4核16GB 1个月
简介: 本场景介绍如何在云上基于ECS部署Docker环境,制作网站镜像并上传至ACR镜像仓库,通过容器镜像运行网站应用,网站运行在Docker容器中、网站业务数据存储在Mariadb数据库中、网站文件数据存储在服务器ECS云盘中,通过公网地址进行访问。

背景知识

容器镜像服务ACR

阿里云容器镜像服务ACR(Alibaba Cloud Container Registry)是面向容器镜像、Helm Chart等符合OCI标准的云原生制品安全托管及高效分发平台。ACR企业版支持全球同步加速、大规模和大镜像分发加速、多代码源构建加速等全链路加速能力,与容器服务ACK无缝集成,帮助企业降低交付复杂度,打造云原生应用一站式解决方案。

产品地址:https://www.aliyun.com/product/acr?spm=5176.28055625.J_4VYgf18xNlTAyFFbOuOQe.101.de16154asya4Hb

产品优势:

image.png

版本对比:

image.png

ACR全场景:

image.png


实验介绍

本次实验任务是在云上基于ECS部署Docker环境,制作网站镜像并上传至ACR镜像仓库,通过容器镜像运行网站应用,网站运行在Docker容器中、网站业务数据存储在Mariadb数据库中、网站文件数据存储在服务器ECS云盘中,并实现通过公网地址访问wordpress网站。

步骤如下:

1、创建实验资源ECS

2、开通容器镜像服务ACR

3、安装Docker服务

4、构建wordpress镜像

5、上传镜像至ACR镜像仓库

6、安装Mariadb数据库

7、通过镜像运行wordpress应用

8、访问并配置wordpress网站应用

9、释放资源


通过ACR快速部署网站应用

首先进入ECS界面,创建一台服务器,输入如下链接。

https://ecs.console.aliyun.com/

image.png

点击创建实例按钮,进入云服务器ECS创建界面。

image.png

因为是实验环境,配置按照如下即可:

image.png

image.png

image.png

image.png

image.png

image.png

以上配置都选择完成后,勾选右下角的《云服务器ECS服务条款》并点击确认下单,显示创建成功页面后,点击管理控制台进入ECS控制台界面。

image.png

接下来创建ACR服务

在阿里云控制台搜索框中搜索ACR,并点击搜索结果中控制台下的容器镜像服务ACR按钮进入云服务器ACR控制台。或者在远程桌面的Chromium网页浏览器中输入如下地址直接进入ACR控制台:

https://cr.console.aliyun.com/

image.png

进入ACR控制台后,选择华东1(杭州)地域(必须保证同一地域),点击个人实例方框进入个人版实例创建界面。

image.png

创建完成后,会自动进入个人实例,点击设置Registry登录密码设置ACR密码。

image.png

接下来需要创建镜像仓库的命名空间,点击左侧命名空间按钮,进入命名空间创建界面,在点击创建命名空间按钮,在弹出的命名空间设置界面填入命名空间名称wordpress-zouhsh(*可以使用您个人的姓名拼音替代)。

【注意:命名空间具有全局唯一性,如果您起的名字已经被占用,可以更换一个,但请记住命名空间的名字,后续步骤将会使用到。】

image.png

点击左侧镜像仓库按钮,进入镜像仓库创建界面,选择华东1(杭州)地域,在点击创建镜像仓库按钮,在弹出的镜像仓库设置界面选择上一步骤中创建的命名空间wordpress-zouhsh(取决于您的实际命名),仓库名称填写为wordpress,仓库类型默认选择私有,摘要信息填写为wordpress镜像仓库,在点击下一步。

image.png

在代码源选择界面中选择本地仓库,再点击创建镜像仓库进行创建。

image.png

创建完成后,会自动进入镜像仓库基本信息界面,后续可以在镜像仓库列表中点击wordpress仓库名称进入镜像仓库基本信息界面。

image.png

回到ECS控制台界面中,点击刚才创建的ECS实例右侧的远程连接按钮连接服务器ECS(workbench方式)。

image.png

在密码认证下输入密码,在点击确定按钮连接服务器ECS。

image.png

连接上服务器ECS后,按照以下步骤安装Docker服务。

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

其中:

device-mapper-persistent-data: 是一个用于 LVM(逻辑卷管理)的设备映射程序,用于提供高度抽象化的磁盘存储管理,并支持磁盘扩容、快照等功能。

lvm2: 是 Linux 下逻辑卷管理程序,用于创建、管理和控制逻辑卷。

image.png

接下来添加软件源信息。

sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

其中:

yum-config-manager:是一个 yum 命令的子命令,用于管理 yum 的配置。

--add-repo:选项用于向 yum 配置中添加一个软件仓库。

https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo:这是一个包含 Docker CE 软件包信息的仓库地址。通过这个命令,会将该仓库地址添加到 yum 的配置中。

添加完成后,系统就会知道从这个仓库获取 Docker CE 相关的软件包和更新。这个特定的仓库地址指向了阿里云镜像站点,可以更快地从该镜像站点下载 Docker CE 相关的软件包,加快安装速度。

image.png

接下里设置yum源。

sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo

其中:

's+download.docker.com+mirrors.aliyun.com/docker-ce+':这是 sed 命令的替换表达式,用于将文件中的 download.docker.com 替换为 mirrors.aliyun.com/docker-ce。

etc/yum.repos.d/docker-ce.repo:这是要进行修改的目标文件路径,即 Docker CE 的仓库配置文件。

image.png

更新Docker-CE。

sudo yum makecache fast

image.png

安装Docker-CE。

sudo yum -y install docker-ce

image.png

启动Docker服务。

sudo systemctl start docker

image.png

查看Docker服务运行状态,Active显示为:active(running) 表示Docker服务运行正常。

sudo systemctl status docker

image.png

设置Docker服务开机自启动。

sudo systemctl enable docker

image.png

至此,docker部署完毕。

继续在连接的服务器ECS上执行以下步骤构建WordPress镜像。

创建WordPress镜像制作目录makeWordpress并进入该目录。

mkdir -p /makeWordpress
cd /makeWordpress

image.png

下载Dockerfile文件和配置文件。

wget https://wordpress-clouder.oss-cn-hangzhou.aliyuncs.com/Dockerfile

image.png

wget https://wordpress-clouder.oss-cn-hangzhou.aliyuncs.com/docker-entrypoint.sh

image.png

设置文件权限

chmod 755 docker-entrypoint.sh

image.png

制作镜像(此过程大致需要运行5-10分钟左右)

docker build -t="wordpress:v1" /makeWordpress

其中:

docker build:这是一个 Docker 命令,用于构建 Docker 镜像。

-t="wordpress:v1":这是一个选项,用于给构建的镜像指定一个标签。在这个例子中,镜像的标签被设置为 "wordpress:v1",其中 "wordpress" 是镜像的名称,"v1" 是版本号。

/makeWordpress:这是指定 Docker 构建上下文路径的参数。Docker 构建过程中,会将这个路径指定的目录作为构建上下文,并将其中的文件复制到镜像中。

综合来说,执行这个命令会在当前目录下的 /makeWordpress 目录中查找构建所需的文件,然后根据这些文件构建一个名为 "wordpress"、版本为 "v1" 的 Docker 镜像。此镜像可以用于创建和运行 WordPress 应用程序的 Docker 容器。

image.png

查看构建完成的镜像

docker images

image.png

在连接的服务器ECS上执行以下步骤上传WordPress镜像。

docker login --username=用户名 registry-vpc.cn-hangzhou.aliyuncs.com

image.png

登录时输入密码,输入密码时屏幕不显示为正常现象,回车后显示Login Succeeded表示登录成功。

image.png

新增ACR镜像TAG,镜像名称为创建的个人仓库镜像ACR中的仓库地址和名称

docker tag wordpress:v1 registry-vpc.cn-hangzhou.aliyuncs.com/wordpress-***/wordpress:v1  //上述命令中的 wordpress-*** 需替换为您在开通ACR服务时创建的命名空间名称

image.png

将镜像推送到镜像仓库ACR

docker push registry-vpc.cn-hangzhou.aliyuncs.com/wordpress-***/wordpress:v1

image.png

回到根目录下,yum安装Mariadb数据库。

yum -y install mariadb mariadb-server

image.png

启动Mariadb数据库。

systemctl start mariadb

初始化Mariadb数据库,并设置root账号密码。

mysql_secure_installation

image.png

image.png

image.png

登录Mariadb数据库

mysql -uroot -p

image.png

创建wordpress数据库

create database wordpress;

image.png

授权root账号远程访问

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Admin@123' WITH GRANT OPTION;
FLUSH PRIVILEGES;

image.png

输入 exit; 可以退出数据库登陆界面

image.png

在服务器ECS上创建站点文件持久化存储目录。

cd /makeWordpress
mkdir -p /var/www/html

image.png

运行WordPress应用。

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

其中:

docker run:这是一个 Docker 命令,用于创建和运行容器。

--name wordpress:这是一个选项,用于给容器指定一个名称,这里将容器命名为 "wordpress"。

-p 80:80:这是一个选项,用于将主机的端口映射到容器的端口。这里将主机的 80 端口映射到容器的 80 端口,使得可以通过主机的 IP 地址访问容器中的 WordPress 网站。

-d:这是一个选项,用于将容器以后台(守护态)模式运行,即在容器内部运行的进程在后台执行而不占用当前终端。

-v /var/www/html:/var/www/html:这是一个选项,用于将主机的目录与容器的目录进行挂载。这里将主机的 /var/www/html 目录挂载到容器的 /var/www/html 目录,以便在容器中运行的 WordPress 可以访问主机上的网页文件。

registry-vpc.cn-hangzhou.aliyuncs.com/wordpress-*/wordpress:v1:这是要运行的镜像的地址或名称。在这个例子中,运行的是名为 "wordpress"、版本为 "v1" 的镜像,地址为 registry-vpc.cn-hangzhou.aliyuncs.com/wordpress-*/wordpress。

执行这个命令会在 Docker 中创建和运行一个名为 "wordpress" 的容器,并映射主机的80端口到容器的80端口。容器将以后台模式运行,并与主机的 /var/www/html 目录进行挂载,使得容器中运行的 WordPress 可以访问主机上的网页文件。所使用的镜像来自阿里云镜像仓库,地址为 registry-vpc.cn-hangzhou.aliyuncs.com/wordpress-*/wordpress,版本为 "v1"。

image.png

查看WordPress容器运行状态,STATUS显示为Up表示运行正常。

docker ps -a

【注意】在使用镜像运行应用时,需要先登录镜像仓库ACR,否则没有权限拉取到镜像。

image.png

在浏览器地址栏中输入服务器ECS公网IP,回车进入WordPress配置界面

image.png

在数据库配置界面,数据库名填入wordpress,用户名填入root,密码填入,数据库主机填入服务器的私有IP地址,表前缀使用默认值,点击提交

image.png

image.png

在账号设置页面,站点标题填入wordpress,用户名填入admin,密码填入,勾选确认密码,电子邮件填入admin@wordpress.com,在点击安装WordPress来完成安装

image.png

在安装完成后,点击登录按钮进入WordPress登录界面,账号填入admin,密码填入,点击登录按钮,进入WordPress系统

image.png

image.png

以上,我们就完成了基于容器和镜像的网站应用搭建。


资源释放

删除容器镜像服务ACR的镜像仓库,在镜像仓库列表中,选择 wordpress仓库 点击删除。

image.png

删除容器镜像服务ACR的命名空间,在命名空间列表中,选择 wordpress-* 点击删除。

image.png

回到ECS控制台,释放服务器

image.png

image.png

image.png

相关实践学习
Docker镜像管理快速入门
本教程将介绍如何使用Docker构建镜像,并通过阿里云镜像服务分发到ECS服务器,运行该镜像。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
2月前
|
人工智能 PyTorch 算法框架/工具
AI 容器镜像部署 Stable Diffusion
本文将基于阿里云 AMD 服务器和龙蜥 AI 容器服务,快速搭建出个人版文生图服务
|
2月前
|
人工智能 PyTorch 算法框架/工具
AI 容器镜像部署 Qwen-VL-Chat
本文将基于阿里云 AMD 服务器和龙蜥 AI 容器服务,快速搭建出个人版视觉 AI 助手服务
|
9月前
|
安全 应用服务中间件 数据安全/隐私保护
企业实战(5) Docker私有镜像仓库Harbor的部署与使用详解
企业实战(5) Docker私有镜像仓库Harbor的部署与使用详解
364 0
|
2月前
|
数据可视化 测试技术 Anolis
|
4天前
|
运维 Serverless 文件存储
函数计算产品使用问题之如何将本地代码与容器镜像一起打包部署
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
2月前
|
运维 IDE Serverless
Serverless 应用引擎产品使用之阿里函数计算中,阿里云容器镜像服务(Container Registry)中创建自定义镜像,然后将其部署到FC上如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
2月前
|
关系型数据库 MySQL Linux
Docker Registry本地镜像仓库部署并实现远程连接拉取镜像
Docker Registry本地镜像仓库部署并实现远程连接拉取镜像
232 1
|
2月前
|
Serverless 开发工具 git
Serverless 应用引擎报错问题之下载文件报错如何解决
Serverless部署是指将应用程序部署到无服务器架构中,该架构允许开发者专注于代码而无需关心底层服务器的运行和维护;针对Serverless部署过程中可能遇到的挑战,本合集提供全面的指南和最佳实践,帮助开发者顺利实现应用的无服务器化部署。
155 0
|
2月前
|
人工智能 PyTorch 算法框架/工具
AI 容器镜像部署 Qwen-Audio-Chat
本文将基于阿里云 AMD 服务器和龙蜥 AI 容器服务,快速搭建出语音 AI 助手服务
|
9月前
|
安全 应用服务中间件 数据安全/隐私保护
手把手带你部署Docker私有镜像仓库Harbor v2.3.2
手把手带你部署Docker私有镜像仓库Harbor v2.3.2
2168 0