如何在云服务上通过docker部署服务?
- 一、在云服务器上安装Docker
- 1、查看云服务器的OS信息
- 2、[安装Docker并使用(Linux)](https://help.aliyun.com/zh/ecs/use-cases/deploy-and-use-docker-on-alibaba-cloud-linux-2-instances)
- 二、通过docker部署服务
- 1、将本地的Docker镜像推送到Docker的仓库
- 1.1 [创建Docker仓库](https://hub.docker.com/repository/create)
- 1.2 登录本地的docker desktop,并推送镜像到远程
- 2、在云服务器的终端执行docker run
- 2.1 如何在macOS上生成linux/x86_64的镜像?
- 2.2 在云服务的终端重新执行docker run
- 2.3 在云服务上开放8080端口
- 2.4 在本机的浏览器中验证
前提:如何购买并使用阿里云的云服务器?
一、在云服务器上安装Docker
1、查看云服务器的OS信息
买云服务器的时候,咱选择过OS,但咱还是通过命令行的方式再查看下。
cat /etc/os-release
2、安装Docker并使用(Linux)
- (1)运行以下命令,添加docker-ce的dnf源:
sudo dnf config-manager --add-repo=https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- (2)运行以下命令,安装Alibaba Cloud Linux 3专用的dnf源兼容插件。
sudo dnf -y install dnf-plugin-releasever-adapter --repo alinux3-plus
- (3)运行以下命令,安装Docker。
sudo dnf -y install docker-ce --nobest
- (4)sudo docker -v
- (5)执行以下命令,启动Docker服务,并设置开机自启动。
sudo systemctl start docker
sudo systemctl enable docker
- (6)执行以下命令,查看Docker是否启动。
sudo systemctl status docker
二、通过docker部署服务
1、将本地的Docker镜像推送到Docker的仓库
1.1 创建Docker仓库
(1)即使有魔法,也可能因为网络原因导致无法创建…过一段时间,又自然好了~
(2)注意:由于Namespace为forrest0721,因此,docker build时,也要写成forrest0721/chatgpt-api
(3)用Public,而不是Private
1.2 登录本地的docker desktop,并推送镜像到远程
- 如果登录不上,看:解决docker desktop 登录不上账号的问题
- 登录后,推送镜像:
- 推送成功:
2、在云服务器的终端执行docker run
- 命令:
docker run -p 8080:8080 \
--name chatgpt-api \
-d forrest0721/chatgpt-api
报错:
docker: no matching manifest for linux/amd64 in the manifest list entries.
- 原因:
- macOS(m2 pro芯片)生成的镜像的OS/ARCH为:linux/arm64
- 而我云服务器的OS/ARCH为:linux/x86_64
2.1 如何在macOS上生成linux/x86_64的镜像?
Docker引入了一个名为buildx的实验性功能,它支持跨平台构建,这意味着可以在一个平台(例如macOS)上为另一个平台(例如linux/x86_64)构建Docker镜像。
- 我macOS上的docker版本:
Docker version 24.0.7
比较老的docker版本估计用不了
buildx
- 步骤:
(1)创建一个新的构建器实例
docker buildx create --use
(2)使构建器实例进入准备就绪状态
docker buildx inspect --bootstrap
(3)构建适用于linux/x86_64平台的Docker镜像
docker buildx build --platform linux/x86_64 -t forrest0721/chatgpt-api . --push
虽然显示的还是linux/arm64,但能在云服务上run起来了。
2.2 在云服务的终端重新执行docker run
docker run -p 8080:8080 \
--name chatgpt-api \
-d forrest0721/chatgpt-api
2.3 在云服务上开放8080端口
- 实例-加入安全组:
- 安全组-管理规则:
2.4 在本机的浏览器中验证
- 输入:公网ip:8080/verify?token=xxx