首页 > 编程语言 >[转]AspNetCore容器化(Docker)部署(三) —— Docker Compose容器编排

[转]AspNetCore容器化(Docker)部署(三) —— Docker Compose容器编排

时间:2024-04-19 10:23:41浏览次数:18  
标签:ago 容器 Compose mynginx helloworld Docker com docker

一.前言

上一篇部署了一个最基础的helloworld应用,创建了两个容器和一个network,还算应付得过来。

如果该应用继续引入mysql、redis、job等若干服务,到时候发布一次得工作量之大就可想而知了,这时候就需要用到Docker Compose。

Docker Compose是一个用于定义和运行多容器Docker应用程序的工具。使用Compose,可以使用YAML文件来配置应用程序的服务,然后使用一条命令就可以从配置中创建并启动所有服务。

Docker Compose概述及命令使用 https://docs.docker.com/compose/reference/overview/

 

二.安装Compose

Windows下安装Docker Desktop时已经附带安装了Docker Compose

PS C:\Users\Administrator> docker-compose versiondocker-compose version 1.23.2, build 1110ad01docker-py version: 3.6.0CPython version: 3.6.6OpenSSL version: OpenSSL 1.0.2o  27 Mar 2018

 

Linux下需要自行安装

root@VM-16-9-ubuntu:~# apt install docker-compose

 

三.使用Compose

1.编排服务

在解决方案下创建docker-compose.yml文件

version: '3.4'services:  helloworld:    image: helloworld:v2.0    build: #镜像构建      context: . #工作目录      dockerfile: HelloWorld/Dockerfile #Dockerfile位置    environment: #环境变量      - ASPNETCORE_ENVIRONMENT=Development    ports: #端口映射      - "81:80"    container_name: netcore_helloworld #容器名    deploy:      restart_policy: #重启策略        condition: on-failure        delay: 5s        max_attempts: 3    networks: #指定network      - default      - newbridge        mynginx:    image: mynginx:v2.0    build:      context: MyNginx      dockerfile: Dockerfile    ports:      - "80:80"      - "801:801"    container_name: mynginx    deploy:      restart_policy:        condition: on-failure        delay: 5s        max_attempts: 3    networks:      - defaultnetworks:  default: #定义一个docker中已存在的network    external:       name: mybridge  newbridge: #新的network    #name: newbridge  #compose版本3.5开始才支持自定义名称

 

2.启动容器

https://docs.docker.com/compose/reference/up/

docker-compose up [options] [--scale SERVICE=NUM...] [SERVICE...]

docker-compose up指令包含了docker-compose build,当yml文件services中配置的image(helloworld:v2.0和mynginx:v2.0)不存在时会先build这两个镜像,再创建container,

如果image已存在,则直接创建container

PS C:\Users\Administrator> cd C:\Users\Administrator\source\repos\AspNetCore_DockerPS C:\Users\Administrator\source\repos\AspNetCore_Docker> docker-compose up -dWARNING: Some services (helloworld, mynginx) use the 'deploy' key, which will be ignored. Compose does not support 'deploy' configuration - use `docker stack deploy` to deploy to a swarm.Creating network "aspnetcore_docker_newbridge" with the default driverCreating netcore_helloworld ... doneCreating mynginx            ... done
PS C:\Users\Administrator\source\repos\AspNetCore_Docker> docker imagesREPOSITORY                             TAG                 IMAGE ID            CREATED             SIZEmynginx                                v2.0                9c18561d7ab3        27 minutes ago      109MBhelloworld                             v2.0                c42e9f575fc4        24 hours ago        265MBnginx                                  latest              62c261073ecf        9 days ago          109MBmcr.microsoft.com/dotnet/core/sdk      2.2-stretch         e4747ec2aaff        3 weeks ago         1.74GBmcr.microsoft.com/dotnet/core/aspnet   2.2-stretch-slim    f6d51449c477        3 weeks ago         260MBdocker4w/nsenter-dockerd               latest              2f1c802f322f        8 months ago        187kBPS C:\Users\Administrator\source\repos\AspNetCore_Docker> docker ps -aCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                      NAMES66ff08eda2ae        helloworld:v2.0     "dotnet HelloWorld.d…"   11 minutes ago      Up 11 minutes       0.0.0.0:81->80/tcp                         netcore_helloworld5357b641a7b1        mynginx:v2.0        "nginx -g 'daemon of…"   11 minutes ago      Up 11 minutes       0.0.0.0:80->80/tcp, 0.0.0.0:801->801/tcp   mynginx

 

3.删除容器

PS C:\Users\Administrator\source\repos\AspNetCore_Docker> docker-compose downWARNING: Some services (helloworld, mynginx) use the 'deploy' key, which will be ignored. Compose does not support 'deploy' configuration - use `docker stack deploy` to deploy to a swarm.Stopping mynginx            ... doneStopping netcore_helloworld ... doneRemoving mynginx            ... doneRemoving netcore_helloworld ... doneNetwork mybridge is external, skipping   #外部的bridge不会被删除,直接跳过Removing network aspnetcore_docker_newbridge

 

四.远程镜像仓库

docker官方的只能创建一个免费私有仓库,国内各大云服务器商都有提供免费的、无限量的镜像仓库。


1.登录到远程registry

docker login --username=[username] ccr.ccs.tencentyun.com

PS C:\Users\Administrator> docker login --username=你的用户名 ccr.ccs.tencentyun.comPassword:Login Succeeded

 

2.上传镜像

docker tag [ImageId] ccr.ccs.tencentyun.com/[namespace]/[ImageName]:[镜像版本号]

PS C:\Users\Administrator> docker tag c42e9f575fc4 ccr.ccs.tencentyun.com/wuuu/helloworldPS C:\Users\Administrator> docker tag 9c18561d7ab3 ccr.ccs.tencentyun.com/wuuu/mynginxPS C:\Users\Administrator> docker imagesREPOSITORY                               TAG                 IMAGE ID            CREATED             SIZEccr.ccs.tencentyun.com/wuuu/mynginx      latest              9c18561d7ab3        2 days ago          109MBmynginx                                  v2.0                9c18561d7ab3        2 days ago          109MBccr.ccs.tencentyun.com/wuuu/helloworld   latest              c42e9f575fc4        3 days ago          265MBhelloworld                               v2.0                c42e9f575fc4        3 days ago          265MBnginx                                    latest              62c261073ecf        12 days ago         109MBmcr.microsoft.com/dotnet/core/sdk        2.2-stretch         e4747ec2aaff        3 weeks ago         1.74GBmcr.microsoft.com/dotnet/core/aspnet     2.2-stretch-slim    f6d51449c477        3 weeks ago         260MBdocker4w/nsenter-dockerd                 latest              2f1c802f322f        8 months ago        187kBPS C:\Users\Administrator>

 
docker push ccr.ccs.tencentyun.com/[namespace]/[ImageName]:[镜像版本号]

PS C:\Users\Administrator> docker push ccr.ccs.tencentyun.com/wuuu/helloworldThe push refers to repository [ccr.ccs.tencentyun.com/wuuu/helloworld]
...latest: digest: sha256:d991fe759257905f727593cc09d8299462e20e31ada3a92023a48fbc130f7484 size: 1581PS C:\Users\Administrator> docker push ccr.ccs.tencentyun.com/wuuu/mynginxThe push refers to repository [ccr.ccs.tencentyun.com/wuuu/mynginx]
...
latest: digest: sha256:0eda000278411f5b6e034944993f6f5b94825125124f67cc7caf4e684aad5a85 size: 1155PS C:\Users\Administrator>

 

2.通过远程镜像启动容器

在原yml文件基础上移除build项,修改image地址。

docker compose up会从远程仓库pull镜像并启动容器,如果是私有仓库,需要提前登录到远程registry。

version: '3.4'services:  helloworld:    image: ccr.ccs.tencentyun.com/wuuu/helloworld    environment: #环境变量      - ASPNETCORE_ENVIRONMENT=Development    ports: #端口映射      - "81:80"    container_name: netcore_helloworld #容器名    deploy:      restart_policy: #重启策略        condition: on-failure        delay: 5s        max_attempts: 3    networks: #指定network      - default      - newbridge        mynginx:    image: ccr.ccs.tencentyun.com/wuuu/mynginx    ports:      - "80:80"      - "801:801"    container_name: mynginx    deploy:      restart_policy:        condition: on-failure        delay: 5s        max_attempts: 3    networks:      - defaultnetworks:  default: #定义一个docker中已存在的network    external:       name: mybridge  newbridge: #新的network    #name: newbridge  #compose版本3.5开始才支持自定义名称

 

示例代码Github地址https://github.com/wwwu/AspNetCore_Docker

 

 


---------------------
作者:找不到一个满意的昵称
来源:CNBLOGS
原文:https://www.cnblogs.com/wu_u/p/11017905.html
版权声明:本文为作者原创文章,转载请附上博文链接!
内容解析By:CSDN,CNBLOG博客文章一键转载插件

标签:ago,容器,Compose,mynginx,helloworld,Docker,com,docker
From: https://www.cnblogs.com/admans/p/18145220

相关文章

  • 在Linux中,如何在Linux中使用LXD进行容器管理?
    在Linux中使用LXD进行容器管理涉及一系列步骤,从安装LXD开始,到创建和管理容器。下面将详细解释这些步骤:一、安装LXD添加LXD仓库:对于大多数Linux发行版,如Ubuntu,首先需要将LXD仓库添加到系统中。这通常涉及到将仓库的GPG密钥添加到系统中,并添加一个新的APT源。安装LXD和相关工具......
  • 在Linux中,如何使用Docker和Kubernetes管理容器?
    在Linux中,使用Docker和Kubernetes管理容器涉及多个步骤,这些步骤涵盖了从安装到配置、部署和维护的整个过程。下面将详细解释这些步骤:一、Docker的使用安装Docker:首先,需要从Docker的官方网站或Linux发行版的软件仓库中下载并安装Docker。安装完成后,可以使用docker命令行工具进......
  • docker也能跑windows了
    地址https://github.com/dockur/windowscomposerversion:"3"services:windows:image:dockurr/windowscontainer_name:windowsenvironment:VERSION:"win11"devices:-/dev/kvmcap_add:-NET_ADMIN......
  • hyperf windows使用docker搭建开发环境
    2024年4月13日23:44:16首先安装好docker注意:powershell是不支持命令换行符的dockerrun--namehyperf-vD:/code:/data-w/data-p9501:9501-it--privileged-uroothyperf/hyperf:8.1-alpine-v3.18-swoole或者使用最新版本dockerrun--namehyperf-vD:/code:/dat......
  • Docker学习记录
    docker官方文档https://docs.docker.com/engine/install/ubuntu/docker全球镜像仓库https://hub.docker.com/1、docker的安装1.1、卸载旧版首先如果系统中已经存在旧的Docker,先卸载:但是不同的系统,卸载方式不一样!!!Ubuntu系统:apt-getautoremovedockerdocker-cedocker-......
  • 10 个优化技巧,减少 Docker 镜像大小【转】
    什么是docker?Docker是一种容器引擎,可以在容器内运行一段代码。Docker镜像是在任何地方运行您的应用程序而无需担心应用程序依赖性的方式。要构建镜像,docker使用一个名为Dockerfile的文件。Dockerfile是一个包含许多指令(RUN、COPY、EXPOSE等)的文件。成功执行这些命令后,do......
  • 使用 Dockerfile 定制镜像【转】
    前言大家好,本文是对Docker自定义镜像的详细讲解,讲解了如何进行构建自己的Docker镜像以及Dockerfile的操作指令。希望对大家有所帮助~一、使用Dockerfile定制镜像1.1、Dockerfile定制镜像镜像的定制实际上就是定制每一层所添加的配置、文件。如果我们可以把每一层修改......
  • net8 linux docker sqlserver报错error: 31 - Encryption(ssl/tls) handshake failed)
    asp.netcore升级到8.0后遇到数据库不能连接问题?_已解决_博问_博客园(cnblogs.com) 中文提示:连接数据库过程中发生错误,检查服务器是否正常连接字符串是否正确,错误信息:Aconnectionwassuccessfullyestablishedwiththeserver,butthenanerroroccurredduringthep......
  • 【Docker】Docker部署Redis
    ✨Docker本文介绍DockerDesktop以及docker命令行的简单使用DockerDesktop安装使用请查阅官方文档GetDocker|DockerDocumentation在Windows上安装DockersDesktop可参考【Docker】DockerDesktopforWindows(WSL2)安装-双份浓缩馥芮白-博客园(cnblogs.com)似乎......
  • browserless 部署无头浏览器到docker中的工具
    browserless部署无头浏览器到docker中的工具包含的特性支持可配置的并行以及请求队列开箱即用的字体支持debug视图支持交互式的puppeteer调试器支持puppeteer以及playwright支持基于websocket以及restapi的请求控制(可以进行pdf生成,图片处理等)简单使用docker......