范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

基于Debain11构建asp。netcore6。x的基础运行时镜像

  dotnet 跨平台Linux 环境说明
  此处我们基于 Debian11 的 Linux 发行版,实现目标是编写 Dockerfile 构建 asp.net core 6.x 框架的 runtime 基础镜像。
  在 Docker 容器化运行环境中,应用程序运行中存在异常情况,此时可以借助一些常用的基础工具方便排查,因此我们需要在 asp.net core 6.x runtime 基础镜像添加 linux 环境常用的基础工具。
  注意:基础镜像的构建需要考虑镜像的体积和打包工具的安全隐患,此处不做过多讨论。Debian 简介
  1、Debian 是一个社区
  来自世界各地的数以千计的志愿者共同为 Debian 操作系统工作,注重自由和开源软件。认识 Debian 计划。
  2、Debian 是一个操作系统
  Debian 是一个自由的操作系统,由 Debian 计划开发和维护。Debian 是一个自由的 Linux 发行版,添加了数以千计的应用程序以满足用户的需要。
  关于 Debian 更多信息,请查看 => https://www.debian.org/intro/index.zh-cn.htmlDebian 发行版本
  Debian 一直维护着至少三个发行版本:稳定版(stable),测试版(testing)和不稳定版(unstable)。
  1、稳定版(stable稳定版包含了 Debian 官方最近一次发行的软件包。作为 Debian 的正式发行版本,它是我们优先推荐给用户您选用的版本。当前 Debian 的稳定版版本号是 11,开发代号为 bullseye。最初版本为 11.0,于 2021 年 08 月 14 日发布,其更新 11.6 已于 2022 年 12 月 17 日发布。
  2、测试版(testing)测试版包含了那些暂时未被收录进入稳定版的软件包,但它们已经进入了候选队列。使用这个版本的最大益处在于它拥有更多版本较新的软件。想要了解 什么是测试版以及 如何成为稳定版的更多信息,请看 Debian FAQ。当前的测试版版本代号是 bookworm。
  3、不稳定版(unstable)不稳定版存放了 Debian 现行的开发工作。通常,只有开发者和那些喜欢过惊险刺激生活的人选用该版本。推荐使用不稳定版的用户订阅 debian-devel-announce 邮件列表,以接收关于重大变更的通知,比如有可能导致问题的升级。不稳定版的版本代号永远都被称为 sid。
  4、发行生命周期
  Debian 通常会按照一定的规律每隔一段时间发布一个新稳定版。对每个稳定发行版本,用户可以得到三年的完整支持以及额外两年的长期支持。
  请查看 Debian Releases 维基页面和 Debian LTS 维基页面以了解详细信息。
  更多详细信息,请查看 => https://www.debian.org/releases/关于 Debian 11
  Debian 11 带有 Linux 5.10 内核,这是一个长期支持(LTS)版本。一个新的内核显然意味着对硬件有更好的支持,特别是较新的硬件以及性能的改进。
  debian11
  这里我们使用 Debian 11,代号为 bullseye,网络安装,用于 64 位 PC(amd64) debian-11.6.0-amd64-netinst.iso。
  关于 Debian 11 更多信息:新发布的 Debian 11 "Bullseye" Linux 发行版的 7 大亮点 => https://linux.cn/article-13695-1.htmlLinux 常用基础工具
  当在 Linux 服务器执行 telnet 命令时,如果提示 command not found: telnet,说明服务器上并未安装 telnet 命令,需要安装此命令。
  下面介绍在 linux 服务器如何安装 telnet、curl、ifconfig、vim、ping 等工具。
  首先,介绍一个安装工具时必须的命令 apt install。apt install 是应用程序管理器,用于一键安装软件包,与源码安装不同的是,该指令会自动检测并安装依赖,而且用 apt 安装的包都是成熟的软件包,基本不存在安装包有严重 bug 或者文件缺失的情况。 # 1、首先执行如下命令,更新相关资源。将所有包的来源更新,也就是提取最新的包信息,这一命令使用率非常高。
  apt update
  # 2、安装 telnet
  apt install telnet
  # 3、安装 curl
  apt install curl
  # 4、安装 ifconfig
  apt install net-tools
  # 5、安装 vim
  apt install vim
  # 6、安装ping
  apt install inetutils-ping
  # 7、安装 ipaddr
  apt install iproute2
  上面这些基础工具的安装,可以整合一条命令,执行操作如下: apt update && apt install -y net-tools iproute2 iputils-ping telnet curl vim
  执行上面命令,如果不是 root 用户,需在前面添加 sudo 提权,继续执行操作。Dockerfile 中 RUN 指令
  上面我们介绍了 linux 环境中常用的基础工具,此处我们 app 应用程序是容器化运行环境,为了方便排查异常信息,通常会在 runtime 基础镜像中添加一些常用工具。
  在编写 Dickerfile 构建 asp.net core runtime 镜像环境时,我们先来了解下 Dockerfile 中的 RUN 指令。RUN 语法格式
  在 Dockerfile 中 RUN 指令的编写格式有两种:
  【shell 形式】,命令在 shell 中运行,默认情况下,Linux 是 /bin/sh -c、Windows 是 cmd /S /C;
  【exec 形式】,按照 JSON Array 格式解析,意味着必须使用双引号【"】包含参数,而不能使用单引号【’】;RUN 语义说明
  RUN 指令在当前镜像的顶层上新建层执行命令,同时提交执行结果。提交的结果会在接下来的 Dockerfile 处理。
  分层 RUN 指令和生成提交符合 Docker 的核心理念,即:提交便利,容器可以依据任意历史镜像构建,像源代码管理一样。exec 形式能够避免 shell 形式表达含义模糊的问题,同时能够在一个不包含 shell 命令的基础镜像上执行 RUN 指令。shell 形式的默认 shell 可以通过 SHELL 修改。shell 形式中,若是指令参数过长,可以使用符号【】换行显示。 # RUN 参数不换行.
  RUN /bin/bash -c "source $HOME/.bashrc; echo $HOME"
  # RUN 参数换行.
  RUN /bin/bash -c "source $HOME/.bashrc;
  echo $HOME"
  exec 形式是按照 JSON Array 格式解析,必须使用双引号【"】包含参数。
  与 shell 形式不同,exec 形式不会调用 shell 命令行,意味着不会进行 shell 处理。 => 例如:运行 `RUN ["echo", $HOME]` 不会对 `$HOME` 进行变量替换。
  如果需要 shell 处理,那么可以使用 shell 形式或直接执行 shell;
  => 例如:`RUN["sh""-c""echo $HOME]`。
  当使用 exec 形式直接执行 shell 时,与 shell 形式类似,应用的 shell 是宿主机而非 Docker。
  exec 形式中的 JSON,必须转译反斜杠【】。Windows 系统中,反斜杠【】是路径分隔符,是需要特别关注的。否则,由于不是有效的 JSON,执行时会出现异常从而失败。 # 错误写法
  RUN ["c:windowssystem32	asklist.exe"]
  # 正确写法
  RUN ["c:windowssystem32tasklist.exe"]
  RUN 指令的缓存不会在下次构建时自动失效。 RUN apt dist-upgrade -y 指令的缓存将在下次构建时重用。
  RUN 指令的缓存可以通过使用 `--no-cache` 标志置为无效,例如:docker build --no-cache
  RUN 指令的缓存可由 ADD 和 COPY 指令置为无效。编写 Dockerfile 构建 Runtime 基础镜像
  在 Docker 中,编写 Dockerfile 是有个细节需要注意,RUN 指令执行多个命令时,可以合并写成一个,在 Dockerfile 中每执行一个指令都会对应的生成一个层,相应的构建镜像的体积也会随之增加。ASP.NET Core Runtime 基础镜像微软 MCR 容器镜像仓库,ASP.NET Core Runtime
  ASP.NET Core Runtime
  访问地址:https://mcr.microsoft.com/en-us/product/dotnet/aspnet/aboutDockerfile 编写
  上面我们介绍了RUN  指令的语法格式,同样的这里我们为了尽量建设镜像构建的层,通常情况我们会把多个命令整合为一个RUN  指令执行,完整  Dockerfile   编写如下: FROM mcr.microsoft.com/dotnet/aspnet:6.0
  # Debian 源添加参考
  # https://developer.aliyun.com/mirror/debian?spm=a2c6h.13651102.0.0.3e221b1137LtM1
  # https://mirrors.ustc.edu.cn/help/debian.html
  # https://mirrors.tuna.tsinghua.edu.cn/help/debian/
  # RUN 使用 shell 语法
  RUN sed -i -E "s/(deb|security).debian.org/mirrors.aliyun.com/g" /etc/apt/sources.list
  RUN sed -i "s/snapshot.debian.org/mirrors.ustc.edu.cn/g" /etc/apt/sources.list
  RUN sed -i "s/deb.debian.org/mirrors.ustc.edu.cn/g" /etc/apt/sources.list
  RUN apt update && apt install -y net-tools iproute2 iputils-ping telnet curl vim
  # RUN 使用 exec 语法
  #RUN ["apt", "update"]
  #RUN ["apt","install","-y","vim","curl","telnet","iputils-ping","iproute2","net-tools"]
  Windows 环境使用 WSL2 安装 Docker Desktop 工具
  注意:在 windows 环境使用 Dockerfile 构建镜像,需要安装 Docker Desktop 工具并启动运行。
  Windows 环境安装 Docker Desktop 工具,推荐使用 WSL2 模式运行。此处不过多讲解安装细节,请自行查看资料镜像安装。
  docker desktop
  Docker Engine 添加如下信息: {
  "builder": {
  "gc": {
  "defaultKeepStorage": "20GB",
  "enabled": true
  }
  },
  "dns": [
  "8.8.8.8",
  "8.8.4.4"
  ],
  "experimental": false,
  "features": {
  "buildkit": true
  },
  "insecure-registries": [
  "https://hub.atguigu.com"
  ],
  "registry-mirrors": [
  "https://registry.docker-cn.com",
  "http://hub-mirror.c.163.com",
  "https://mirror.ccs.tencentyun.com",
  "https://docker.mirrors.ustc.edu.cn",
  "https://cr.console.aliyun.com/"
  ]
  }
  docker build 构建 image 镜像执行 docker build 构建命令: docker build -t aspnet:6.0-debian11-amd64 ./
  输出如下 image 镜像构建步骤信息: [+] Building 0.6s (9/9) FINISHED
  => [internal] load build definition from Dockerfile 0.0s
  => => transferring dockerfile: 32B 0.0s
  => [internal] load .dockerignore 0.0s
  => => transferring context: 2B 0.0s
  => [internal] load metadata for mcr.microsoft.com/dotnet/aspnet:6.0 0.4s
  => [1/5] FROM mcr.microsoft.com/dotnet/aspnet:6.0@sha256:a4ac0ac8b96842c3d4161339e641d335e44f52647bdeb4ed619ac83 0.0s
  => CACHED [2/5] RUN sed -i -E "s/(deb|security).debian.org/mirrors.aliyun.com/g" /etc/apt/sources.list 0.0s
  => CACHED [3/5] RUN sed -i "s/snapshot.debian.org/mirrors.ustc.edu.cn/g" /etc/apt/sources.list 0.0s
  => CACHED [4/5] RUN sed -i "s/deb.debian.org/mirrors.ustc.edu.cn/g" /etc/apt/sources.list 0.0s
  => CACHED [5/5] RUN apt update && apt install -y net-tools iproute2 iputils-ping telnet curl vim 0.0s
  => exporting to image 0.0s
  => => exporting layers 0.0s
  => => writing image sha256:8e4e01b9340eef513279899468870ff57826a1e4f3a6f0b3689212d88f3119eb 0.0s
  => => naming to docker.io/library/aspnet:6.0-debian11-amd64 0.0s
  Use "docker scan" to run Snyk tests against images to find vulnerabilities and learn how to fix them
  从上面输出的信息可以看出,Dockerfile 文件中每一行单独编写的命令,都会当做一个步骤执行,一共执行 [5/5] 个步骤。查看 docker 镜像信息
  此时我打开 Docker Desktop 桌面端工具,选择 Images ,搜索框输入 tag 名称【aspnet-debian11-amd64:6.0】就可以看到刚才构建的镜像,体积 270.54 MB 。
  docker images
  和原生【mcr.microsoft.com/dotnet/aspnet:6.0】镜像相比,体积增加 170.51 MB,新增的这部分体积,主要是我们在这个镜像的基础上,添加了一些 linux 环境的常用小工具(net-tools、iproute2、iputils-ping、telnet、curl、vim)。
  我们可以点击【aspnet-debian11-amd64:6.0】镜像,即可进入镜像查看构建的层信息,如下所示:
  image 详细信息
  查看上面的镜像层信息,同样的我们也可以使用命令操作查看,操作如下:
  docker inspect : 获取容器/镜像的元数据。 docker inspect [OPTIONS] NAME|ID [NAME|ID...]
  OPTIONS 说明:-f :指定返回值的模板文件。-s :显示总的文件大小。--type :为指定类型返回 JSON。
  具体命令如下:  docker inspect aspnet:6.0-debian11-amd64
  输出如下信息: [
  {
  "Id": "sha256:8e4e01b9340eef513279899468870ff57826a1e4f3a6f0b3689212d88f3119eb",
  "RepoTags": [
  "aspnet:6.0-debian11-amd64"
  ],
  "RepoDigests": [],
  "Parent": "",
  "Comment": "buildkit.dockerfile.v0",
  "Created": "2023-02-19T07:44:04.106566658Z",
  "Container": "",
  "ContainerConfig": {
  "Hostname": "",
  "Domainname": "",
  "User": "",
  "AttachStdin": false,
  "AttachStdout": false,
  "AttachStderr": false,
  "Tty": false,
  "OpenStdin": false,
  "StdinOnce": false,
  "Env": ,
  "Cmd": ,
  "Image": "",
  "Volumes": ,
  "WorkingDir": "",
  "Entrypoint": ,
  "OnBuild": ,
  "Labels": 
  },
  "DockerVersion": "",
  "Author": "",
  "Config": {
  "Hostname": "",
  "Domainname": "",
  "User": "",
  "AttachStdin": false,
  "AttachStdout": false,
  "AttachStderr": false,
  "Tty": false,
  "OpenStdin": false,
  "StdinOnce": false,
  "Env": [
  "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
  "ASPNETCORE_URLS=http://+:80",
  "DOTNET_RUNNING_IN_CONTAINER=true",
  "DOTNET_VERSION=6.0.14",
  "ASPNET_VERSION=6.0.14"
  ],
  "Cmd": [
  "bash"
  ],
  "Image": "",
  "Volumes": ,
  "WorkingDir": "",
  "Entrypoint": ,
  "OnBuild": ,
  "Labels": 
  },
  "Architecture": "amd64",
  "Os": "linux",
  "Size": 270542384,
  "VirtualSize": 270542384,
  "GraphDriver": {
  "Data": {
  "LowerDir": "/var/lib/docker/overlay2/z1zc2q5ucw0srd1q6fz9dv5zs/diff:/var/lib/docker/overlay2/4vf1uowirpwps4nw4guvfr610/diff:/var/lib/docker/overlay2/xzob6lo9w8ita21r9o6qdowh3/diff:/var/lib/docker/overlay2/1a04b4cea9f8ea832c5f91a20d4ddd4f29f6ec5acb8ebbda6848282ec8159590/diff:/var/lib/docker/overlay2/5036b7ee8c50e873affdb40f9d1fd0e37573631587ed6b1f45347a10995ad935/diff:/var/lib/docker/overlay2/f7d1f588113cb3de37d0cd574614db511a098ba64e18f02ade45cb4b1d431fb6/diff:/var/lib/docker/overlay2/f0c4b961c76c425d8383575ca78c176a890d78d871a5cf60daab2ddc96ffee8d/diff:/var/lib/docker/overlay2/f7c839b494ad006d157084d919c15e812e10e57a8ac1c5cdda4d0150bf494f21/diff",
  "MergedDir": "/var/lib/docker/overlay2/9zxjyc54rcaf107f6cj6fhiax/merged",
  "UpperDir": "/var/lib/docker/overlay2/9zxjyc54rcaf107f6cj6fhiax/diff",
  "WorkDir": "/var/lib/docker/overlay2/9zxjyc54rcaf107f6cj6fhiax/work"
  },
  "Name": "overlay2"
  },
  "RootFS": {
  "Type": "layers",
  "Layers": [
  "sha256:4695cdfb426a05673a100e69d2fe9810d9ab2b3dd88ead97c6a3627246d83815",
  "sha256:f30d150c01520fbbbdd1bedcef3f940d809c82a46e08301dcc713903d7272ba3",
  "sha256:fe674e2b138caf1ef6a67419d5fb0a9081ca0759d97ce711be80d5d4d67145e1",
  "sha256:ff13768cb51ea8fe1831d93c2d18690c3fdca8cfee40b75a738f62b133413573",
  "sha256:355b7bb8c23e0d867141b0af69ecb6df39730bcd1b6c754cfae9ad36ca3f5572",
  "sha256:8d56eaae8bfea0a5eac4caf4350fa1987c162cd7dba828aa292cc15c3e90d91b",
  "sha256:b7d0c701d1f04294b2b98d3103c3856c9cbabc592cde48d3e07eb03bff7cb18a",
  "sha256:46ef367d7575beda39ffd3774b4d47b29c2fe0b628f1269b4626053ca44169d5",
  "sha256:6809bcac556f83ca4489ba09980a5bef05c9bc7463a45e4dac7fb600beec1c4e"
  ]
  },
  "Metadata": {
  "LastTagTime": "2023-02-19T08:46:50.196739744Z"
  }
  }
  ]
  镜像构建后,此时如果有镜像仓库(腾讯云平台准备 Docker 私有镜像仓库或者 IDC 机房搭建),确保 vm 和宿主机之间通信可以正常登录访问,此处以腾讯云 Docker 私有镜像仓库为例: # 登录腾讯云docker registry
  sudo docker login --username=[user] ccr.ccs.tencentyun.com
  # 提示输入对应的密码即可
  # 从 registry 拉取镜像
  sudo docker pull ccr.ccs.tencentyun.com/dotnet/image-name:[tag]
  # 将镜像推送到 registry
  sudo docker login --username=[user] ccr.ccs.tencentyun.com
  sudo docker tag [ImageId|image-name:tag] ccr.ccs.tencentyun.com/dotnet/aspnet:6.0-debian11-amd64
  sudo docker push ccr.ccs.tencentyun.com/dotnet/aspnet:6.0-debian11-amd64
  到这里我们就演示完 Dockerfile 的编写,以及 image 镜像构建的全过程。总结
  掌握 Dockerfile 文件语法格式的编写,熟悉 RUN 指令中多个命令的编写方式(减少 image 镜像构建层,相应的减少镜像体积大小),顺便熟悉下 Docker 镜像的构建 docker build 和 镜像的 push(推送)和 pull(拉取) 基本操作,感兴趣的小伙伴可以跟随上面描述动手实践起来,可以加深对 Docker 镜像构建的理解。

丁俊晖出战斯诺克巡回锦标赛迎直通世锦赛最后机会中新社北京3月27日电2023年斯诺克巡回锦标赛27日在英国赫尔开杆,中国台球名将丁俊晖将在此赛中迎来直通世锦赛的最后机会。2023年斯诺克巡回锦标赛是本赛季世界斯诺克巡回赛的第1不出意外!热刺与孔蒂分道扬镳,二愣子这一老毛病真是没救不出意外!热刺队官方宣布,孔蒂不再担任球队主教练,斯特里尼在本赛季剩余时间担任代理主教练。现年53岁的孔蒂在2021年11月入主热刺,上赛季孔蒂上任至今,带领热刺共取得32胜9平1德凯特拉雷在米兰的表现确实是消极的,会通过努力赢得首发位置直播吧3月26日讯在接受HetLaatsteNieuws采访时,米兰球员德凯特拉雷表示,他不在乎外界的评价,他同时谈到了马尔蒂尼米兰更衣室等话题。谈及卡塔尔世界杯,德凯特拉雷说道我国足打到今天,你满意吗?国足打到今天,可以说有圈可点,特别是对澳大利亚一战,战平澳大利亚就是一个不错的表现,但总观中国队,战绩平平,出现的形式渺茫。最后一站,对日本取胜很难。真实水平,不做幻想。早就不是亚手机显示存储空间不足时,怎么清理才能顺畅使用手机各种功能呢?唉,我目前就遇到了这种情况,现在在头条上做一份自媒体,每天就需要大量的视频,然后128G的手机就不够用了,我也不太清楚,然后我就咨询儿子,儿子说你又不会弄,你去拿到手机店要手机店的ps5还没一个手机贵,为什么那么多人一直在等降价?没啥,叫嚣等等党的不是真索粉,就这么简单,就是之前显卡不买然后发现涨价买不起的等等党一样,不喜欢的东西不急着买,甚至跟风买,他们这种人啥都不是,事后涨价了傻批了,我是必买的,游戏现塑身衣有用吗?谢谢邀请!穿塑身衣在视觉上的确是有塑身美体的外部形态,但是并不能从根本上解决胸部下垂以及腹部脂肪堆积的问题,它最主要的作用只是调整脂肪的分布,而并不能减掉脂肪,也就是说它并不能真正有什么特别好穿的高跟鞋?JimmyChoo灰姑娘的第一双水晶鞋JimmyChoo最为经典的是247系列,寓意女孩们可以一周7天,连续24小时,穿着这个鞋子游走于任何场合。其中,最为耳熟能详的就是Romy系北敬道南秦升!南北方假球组织者被挖出,男足15输泰国真相揭秘(点击阅读可看更多857体育赛事咨询)对老板,他提倡公益足球,结果球队钱没少花还年年亏损对球员,他发布限薪令,不仅限薪欠薪还越来越多之前说疫情,然后说房地产市场不景气,客观理由一大CBA全明星周末真刀真枪北区加时险胜南区京报体育记者陈嘉堃昨晚,CBA全明星周末的正赛在厦门举行。与以往以娱乐为主的味道不同,本次正赛南北区两队可谓展开了真刀真枪的较量。经过四节的精彩比赛,双方拼到加时赛,最终北区队以1弗里克维尔纳的射门有时是不走运,但他跑出的空间让他仍很重要直播吧3月27日讯德国队在今年的首场比赛中20击败秘鲁,但前锋维尔纳的表现依然不尽如人意。球队主帅弗里克坦言维尔纳在射门上有欠缺,但仍强调了他的重要性。维尔纳在这场比赛中搭档菲尔克
耐心地等待321东航事故调查情况的陆续公布和最终结果的确认321东航坠机事故原因调查急不得3。21东航坠机事故一周年前夕,2023年3月20日,中国民航局发布关于3。21东航MU5735航空器飞行事故调查情况的通报,通报中称由于本起事故非Windows10大类优秀软件工具集深度对比,硬核推荐值得收藏笔者根据自己多年使用经验和收集统计的用户反馈,总结了10大类推荐的精品软件。当然,本文也仅仅是笔者的一家之言,更多优秀软件希望朋友们可以在评论区分享和交流严正声明本文不含任何广告,一片式织袜方便又好看,一片式罗纹鞋袜教程,清爽简约赶紧学起来一片式鞋袜的款式多种多样,但如果经常看教程的朋友就会发现,原理始终是万变不离其宗。今天我们学习的是一款一片式罗纹鞋袜的织法。示范用线混纺羊毛线,3。5mm的棒针。我们从袜边开始织起邮报若本怀特能继续拿出优异表现,他肯定能在英格兰获得机会直播吧3月20日讯在北京时间昨晚结束的比赛中,阿森纳41战胜了水晶宫。赛后每日邮报记者DanielMatthews在栏目中谈到了他对本怀特表现的看法。以下是栏目中的内容当被问及本怀国产特斯拉ModelY去掉雷达,今后全靠视觉在自动驾驶感知领域,行业内分成了立场鲜明的两派视觉派和雷达派。作为纯视觉派最坚定的守护者,马斯克曾表示,激光雷达毫无意义,对于自动驾驶汽车来说没有必要。日前,据工信部最新一批道路机女人过了五十岁,留长直发,显老还是显年轻?头条创作挑战赛网上看到友友们讨论五十岁的女人,留长直发,会显得老气和土气。对这个话题,我觉得不能一概而论。本人67年出生,今年虚57岁。从小到大,记忆中一直都是留的长发,而且基本都退休后最好的状态,远离了单位和熟悉的环境,也远离了亲戚朋友我退休前就办好了护照和签证,自学了一些基础英语,退休后来到了美国西雅图,我远离了原本熟悉的生活圈子,开始接触新人新事新环境。在这个过程中,我发现自己并没有被孤立,反而有更多的机会去刘邦背后的女人是谁?号称混混的刘邦,你们知道他背后的女人是谁吗?说起这个,便不得不提我国历史上的当国太后西汉开国皇帝刘邦的夫人吕雉。正是这位一直隐藏在汉宫帷幕之后的女性政治家,首开了中国历史上女主称制人均GDP前十的省份都相当于哪些国家?人均GDP前十的省份都相当于哪些国家?中国的经济快速发展引起了世界的注意,不仅是全球贸易的重要参与者,也有着日益增长的国内市场。随着财富的不断积累,我国人均GDP也在不断提高,在全初上九华山(诸炳兴)初上九华山作者诸炳兴2013年五月初,我们受老大难(网名4野狼)之邀,与原知青时同连队的老干一起,自驾去了安徽庐江,顺便去了九华山。九华山位于安徽省青阳县城西南20公里处,距长江南新加坡也过爱尔兰国庆日?到处都是小绿人每年3月17日,全球各地的爱尔兰人都会庆祝圣帕特里克节(SaintPatricksDay),新加坡也不例外。圣帕特里克节是为了纪念爱尔兰的天主教圣人圣帕特里克,从5世纪末期起源于爱