Docker容器部署Web应用
1.Docker是什么?
docker是一个开源的应用容器引擎,基于go语言并遵循apache2.0协议开源
2.Docker可以做什么?
Docker可以让开发者打包他们的应用以及依赖包到一个轻量级,可移植的容器中,然后发布到任务流行linux机器;容器是完全使用沙箱机制,相互间不会有任何接口,且容器性能开销低。Docker容器实际上是docker镜像的运行实例
3.Docker安装
3.1安装软件包(为方便添加软件源,支持devicemapper类型存储)
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
3.2更换阿里云镜像(https://www.ngui.cc/51cto/show-530173.html)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.3添加 yum 软件源,添加 Docker 稳定版本的 yum 软件源
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
4.docker基本命令:
- 安装docker-ce:yum install docker-ce
- 设置开机启动docker:systemctl enable docker
- 启动docker:systemctl start docker
- 更新docker:yum update docker-ce
- 查看docker信息:docker info
- 卸载docker:yum remove docker-ce
- 删除docker本地文件(镜像,容器,存储卷等 目录/var/lib/docker):rm -rf /var/lib/docker
- 检查docker是否可以正常运行(运行hello-world镜像):docker run hello-world
- 下载.netcore5镜像:docker pull mcr.microsoft.com/dotnet/core/aspnet:5
- 查看本地镜像:docker images
- 查看所有容器:docker ps -a
5.Docker中部署web应用
5.1.vs创建.net core webmvc或者api项目[Order.API]并修改dockerfile文件内容如下
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
MAINTAINER PDF
LABEL description="orderservice webapi"
LABEL version="1.0"
WORKDIR /app
COPY . .
EXPOSE 5000
ENV ASPNETCORE_ENVIRONMENT Production
ENTRYPOINT ["dotnet", "Order.API.dll"]
5.2.发布web应用上传至linux服务器,并打开5000端口,默认5000端口,可以在appsetting中修改,注意:端口执行打开命令后需重启防火墙后生效
5.3.构建镜像
进入项目目录执行(注意后面有空格和.):docker build -t orderapp .
5.4.创建并运行容器
docker run --name orderapp -d -p 5000:5000 orderapp
5.5.访问
6.Docker可视化-Portainer:
随着镜像的增加,依靠输入命令方式运维无疑加大了工作量和复杂性,可以安装Portainer来进行界面可视化操作容器和镜像,安装步骤如下
# 拉取镜像
docker pull portainer/portainer-ce
# 运行镜像
docker run -d -it --name portainer -p 8000:8000 -p 9000:9000 -v -v /var/run/docker.sock:/var/run/docker.sock --restart=always portainer/portainer-ce
# 浏览器输入主机加端口9000即可进入,然后设置密码,选择本地模式。可以进行镜像、容器、登录等管理
7.拓展:防火墙相关命令
- 安装:yum install firewalld
- 启动:systemctl start firewalld
- 关闭:systemctl stop firewalld
- 查看状态:systemctl status firewalld
- 开机禁用:systemctl disable firewalld
- 开机启动:systemctl enable firewalld
- 开放端口:firewall-cmd --add-port=5000/tcp --zone=public --permanent
- 重启防火墙:firewall-cmd --reload
- 查看已开放端口:firewall-cmd --list-all
- 停止容器:docker kill 容器id或者name
- 删除容器:docker rm 容器id或者name
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用