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

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 本场景介绍如何在云上基于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 配置中添加一个软件仓库。

这是一个包含 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

相关实践学习
通过容器镜像仓库与容器服务快速部署spring-hello应用
本教程主要讲述如何将本地Java代码程序上传并在云端以容器化的构建、传输和运行。
Kubernetes极速入门
Kubernetes(K8S)是Google在2014年发布的一个开源项目,用于自动化容器化应用程序的部署、扩展和管理。Kubernetes通常结合docker容器工作,并且整合多个运行着docker容器的主机集群。 本课程从Kubernetes的简介、功能、架构,集群的概念、工具及部署等各个方面进行了详细的讲解及展示,通过对本课程的学习,可以对Kubernetes有一个较为全面的认识,并初步掌握Kubernetes相关的安装部署及使用技巧。本课程由黑马程序员提供。   相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
存储 缓存 弹性计算
阿里巴巴开源 容器镜像加速技术DADI 上手指南
阿里资深技术专家在阿里云开发者社区特别栏目《周二开源日》直播中,介绍刚于3月份开源的容器镜像加速器项目 DADI ,并带大家快速上手使用。本文为直播内容文字整理,看直播回放,请点击文首链接~
阿里巴巴开源 容器镜像加速技术DADI 上手指南
|
Kubernetes jenkins Devops
基于Jenkins和k8s构建企业级DevOps容器云平台
基于Jenkins和k8s构建企业级DevOps容器云平台
|
7月前
|
Devops Java 数据安全/隐私保护
DevOps搭建(二)-阿里云镜像仓库的使用详解
DevOps搭建(二)-阿里云镜像仓库的使用详解
176 0
|
安全 Cloud Native 双11
阿里云原生容器服务产品体系-阿里云容器镜像服务ACR介绍
阿里云原生容器服务产品体系-阿里云容器镜像服务ACR介绍
阿里云原生容器服务产品体系-阿里云容器镜像服务ACR介绍
|
弹性计算 运维 Cloud Native
带你读《企业级云原生白皮书项目实战》——3.2.1 ACR容器镜像服务(1)
带你读《企业级云原生白皮书项目实战》——3.2.1 ACR容器镜像服务(1)
186 0
|
Cloud Native 对象存储 容器
带你读《企业级云原生白皮书项目实战》——3.2.1 ACR容器镜像服务(3)
带你读《企业级云原生白皮书项目实战》——3.2.1 ACR容器镜像服务(3)
115 0
|
Cloud Native 对象存储 数据安全/隐私保护
带你读《企业级云原生白皮书项目实战》——3.2.1 ACR容器镜像服务(2)
带你读《企业级云原生白皮书项目实战》——3.2.1 ACR容器镜像服务(2)
189 0
|
弹性计算 Cloud Native 网络安全
带你读《企业级云原生白皮书项目实战》——3.2.1 ACR容器镜像服务(6)
带你读《企业级云原生白皮书项目实战》——3.2.1 ACR容器镜像服务(6)
117 0
|
Kubernetes Cloud Native Linux
带你读《企业级云原生白皮书项目实战》——3.2.1 ACR容器镜像服务(4)
带你读《企业级云原生白皮书项目实战》——3.2.1 ACR容器镜像服务(4)
145 0
|
弹性计算 Cloud Native 网络安全
带你读《企业级云原生白皮书项目实战》——3.2.1 ACR容器镜像服务(5)
带你读《企业级云原生白皮书项目实战》——3.2.1 ACR容器镜像服务(5)
115 0