背景知识
容器镜像服务ACR
阿里云容器镜像服务ACR(Alibaba Cloud Container Registry)是面向容器镜像、Helm Chart等符合OCI标准的云原生制品安全托管及高效分发平台。ACR企业版支持全球同步加速、大规模和大镜像分发加速、多代码源构建加速等全链路加速能力,与容器服务ACK无缝集成,帮助企业降低交付复杂度,打造云原生应用一站式解决方案。
产品地址:https://www.aliyun.com/product/acr?spm=5176.28055625.J_4VYgf18xNlTAyFFbOuOQe.101.de16154asya4Hb
产品优势:
版本对比:
ACR全场景:
实验介绍
本次实验任务是在云上基于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/
点击创建实例按钮,进入云服务器ECS创建界面。
因为是实验环境,配置按照如下即可:
以上配置都选择完成后,勾选右下角的《云服务器ECS服务条款》并点击确认下单,显示创建成功页面后,点击管理控制台进入ECS控制台界面。
接下来创建ACR服务
在阿里云控制台搜索框中搜索ACR,并点击搜索结果中控制台下的容器镜像服务ACR按钮进入云服务器ACR控制台。或者在远程桌面的Chromium网页浏览器中输入如下地址直接进入ACR控制台:
https://cr.console.aliyun.com/
进入ACR控制台后,选择华东1(杭州)地域(必须保证同一地域),点击个人实例方框进入个人版实例创建界面。
创建完成后,会自动进入个人实例,点击设置Registry登录密码设置ACR密码。
接下来需要创建镜像仓库的命名空间,点击左侧命名空间按钮,进入命名空间创建界面,在点击创建命名空间按钮,在弹出的命名空间设置界面填入命名空间名称wordpress-zouhsh(*可以使用您个人的姓名拼音替代)。
【注意:命名空间具有全局唯一性,如果您起的名字已经被占用,可以更换一个,但请记住命名空间的名字,后续步骤将会使用到。】
点击左侧镜像仓库按钮,进入镜像仓库创建界面,选择华东1(杭州)地域,在点击创建镜像仓库按钮,在弹出的镜像仓库设置界面选择上一步骤中创建的命名空间wordpress-zouhsh(取决于您的实际命名),仓库名称填写为wordpress,仓库类型默认选择私有,摘要信息填写为wordpress镜像仓库,在点击下一步。
在代码源选择界面中选择本地仓库,再点击创建镜像仓库进行创建。
创建完成后,会自动进入镜像仓库基本信息界面,后续可以在镜像仓库列表中点击wordpress仓库名称进入镜像仓库基本信息界面。
回到ECS控制台界面中,点击刚才创建的ECS实例右侧的远程连接按钮连接服务器ECS(workbench方式)。
在密码认证下输入密码,在点击确定按钮连接服务器ECS。
连接上服务器ECS后,按照以下步骤安装Docker服务。
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
其中:
device-mapper-persistent-data: 是一个用于 LVM(逻辑卷管理)的设备映射程序,用于提供高度抽象化的磁盘存储管理,并支持磁盘扩容、快照等功能。
lvm2: 是 Linux 下逻辑卷管理程序,用于创建、管理和控制逻辑卷。
接下来添加软件源信息。
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 相关的软件包,加快安装速度。
接下里设置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 的仓库配置文件。
更新Docker-CE。
sudo yum makecache fast
安装Docker-CE。
sudo yum -y install docker-ce
启动Docker服务。
sudo systemctl start docker
查看Docker服务运行状态,Active显示为:active(running) 表示Docker服务运行正常。
sudo systemctl status docker
设置Docker服务开机自启动。
sudo systemctl enable docker
至此,docker部署完毕。
继续在连接的服务器ECS上执行以下步骤构建WordPress镜像。
创建WordPress镜像制作目录makeWordpress并进入该目录。
mkdir -p /makeWordpress
cd /makeWordpress
下载Dockerfile文件和配置文件。
wget https://wordpress-clouder.oss-cn-hangzhou.aliyuncs.com/Dockerfile
wget https://wordpress-clouder.oss-cn-hangzhou.aliyuncs.com/docker-entrypoint.sh
设置文件权限
chmod 755 docker-entrypoint.sh
制作镜像(此过程大致需要运行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 容器。
查看构建完成的镜像
docker images
在连接的服务器ECS上执行以下步骤上传WordPress镜像。
docker login --username=用户名 registry-vpc.cn-hangzhou.aliyuncs.com
登录时输入密码,输入密码时屏幕不显示为正常现象,回车后显示Login Succeeded表示登录成功。
新增ACR镜像TAG,镜像名称为创建的个人仓库镜像ACR中的仓库地址和名称
docker tag wordpress:v1 registry-vpc.cn-hangzhou.aliyuncs.com/wordpress-***/wordpress:v1 //上述命令中的 wordpress-*** 需替换为您在开通ACR服务时创建的命名空间名称
将镜像推送到镜像仓库ACR
docker push registry-vpc.cn-hangzhou.aliyuncs.com/wordpress-***/wordpress:v1
回到根目录下,yum安装Mariadb数据库。
yum -y install mariadb mariadb-server
启动Mariadb数据库。
systemctl start mariadb
初始化Mariadb数据库,并设置root账号密码。
mysql_secure_installation
登录Mariadb数据库
mysql -uroot -p
创建wordpress数据库
create database wordpress;
授权root账号远程访问
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Admin@123' WITH GRANT OPTION;
FLUSH PRIVILEGES;
输入 exit; 可以退出数据库登陆界面
在服务器ECS上创建站点文件持久化存储目录。
cd /makeWordpress
mkdir -p /var/www/html
运行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"。
查看WordPress容器运行状态,STATUS显示为Up表示运行正常。
docker ps -a
【注意】在使用镜像运行应用时,需要先登录镜像仓库ACR,否则没有权限拉取到镜像。
在浏览器地址栏中输入服务器ECS公网IP,回车进入WordPress配置界面
在数据库配置界面,数据库名填入wordpress,用户名填入root,密码填入,数据库主机填入服务器的私有IP地址,表前缀使用默认值,点击提交
在账号设置页面,站点标题填入wordpress,用户名填入admin,密码填入,勾选确认密码,电子邮件填入admin@wordpress.com,在点击安装WordPress来完成安装
在安装完成后,点击登录按钮进入WordPress登录界面,账号填入admin,密码填入,点击登录按钮,进入WordPress系统
以上,我们就完成了基于容器和镜像的网站应用搭建。
资源释放
删除容器镜像服务ACR的镜像仓库,在镜像仓库列表中,选择 wordpress仓库 点击删除。
删除容器镜像服务ACR的命名空间,在命名空间列表中,选择 wordpress-* 点击删除。
回到ECS控制台,释放服务器