苏州建网站哪家,免费的空间网站,公司域名怎么取比较好,wordpress像说明书一样的页面文章目录 Docker详解一、Docker简介什么是容器 #xff1f;容器技术有哪些优点 #xff1f;什么是Docker #xff1f;Docker的特点Docker的使用场景 二、Docker的基本组成Docker 客户端 / 守护进程Docker Image 镜像Docker Container 容器Docker Registry 仓库 三、Docker 依… 文章目录 Docker详解一、Docker简介什么是容器 容器技术有哪些优点 什么是Docker Docker的特点Docker的使用场景 二、Docker的基本组成Docker 客户端 / 守护进程Docker Image 镜像Docker Container 容器Docker Registry 仓库 三、Docker 依赖的 Linux内核特性Namespaces 命名空间Control groups (cgroups) 控制组Namespace 和 cgroup带给Docker的能力 四、Docker的安装Docker下载地址Linux系统shell命令下载Docker推荐 五、Docker命令1、进程相关命令2、Docker 镜像相关命令3、Docker 容器相关命令 六、Docker容器的数据卷数据卷概念配置数据卷配置数据卷容器总结 七、Docker 应用部署部署MySQL部署Tomcat部署Nginx部署Redis 八、DockerfileDocker 镜像原理镜像制作Dockerfile 概念Dockerfile关键字 九、Docker服务编排服务编排Docker ComposeDocker Compose安装使用1、安装Docker Compose2、卸载Docker Compose3、 使用docker compose编排nginxspringboot项目 十、Docker的私有仓库1、私有仓库搭建2、将镜像上传至私有仓库3、从私有仓库拉取镜像 Docker详解
一、Docker简介
什么是容器
一种虚拟化的方案操作系统级别的虚拟化只能运行相同或相似的内核操作系统依赖于Linux内核特性Namespace和CgroupsControl Group
容器技术有哪些优点 从图中我们很容器看出容器技术资源占用比较少由于虚拟机需要模拟硬件的行为对CUP和内存的损耗比较大。所以同样配置的服务器容器技术就有以下优点
资源占用比较少CPU/内存消耗低
那既然容器有这些优点为什么直到Docker的出现才真正的被关注呢一个重要原因就是容器技术的复杂性。容器本身就很复杂他依赖于Linux内核的很多特性而且他不易安装也不易于管理和实现自动化。而Docker就是为了改变这一切而产生的。
什么是Docker
将应用自动部署到容器的开源引擎Go语言实现的开源项目诞生于2013年初最初发起者是dotCloud公司
Docker的特点
提供简单轻量的建模方式简单Docker非常容器上手用户只需要几分钟就能把自己的项目Docker化。职责的逻辑分离使用Docker开发人员只需要关心容器中运行的程序运维人员只需要关心如何管理容器Docker设计的目的就是加强开发人员写代码的环境与应用程序要部署的生成环境的一致性。快速高效的开发生命周期Docker的目标之一是缩短代码开发到测试到部署上线的运行周期让应用程序具备可移植性在容器中开发以容器的形式交付和分发这样开发、测试、生产都使用相同的环境这样也就避免了额外的调试和部署上的开销这样就能有效的缩短产品的上线周期。鼓励使用面向服务的架构Docker推荐单个容器只运行一个应用程序或者进程这样就形成了一个分布式的应用程序模型在这种模式下应用程序或服务都可以表述为一系列内部互联的容器从而使分布式部署应用程序扩展或调试都变得非常简单。这就像我们开发中常用的思想高内聚低耦合单一任务。这样就能避免在同一服务器上部署不同服务时可能带来的服务之间相互影响。这样服务运行中出现问题时也比较容易定位问题的所在。
Docker的使用场景
使用Docker容器开发、测试、部署服务因为Docker本身非常轻量化所以本地开发人员可以构建、运行并分享Docker容器。容器可以在开发环境中创建然后再提交到测试最终进入生产环境。创建隔离的运行环境在很多企业应用中同一服务的不同版本可能服务于不同的用户那么使用Docker非常容易创建不同的生成环境来运行不同的服务。搭建测试环境由于Docker的轻量化所以开发者很容易利用Docker在本地搭建测试环境用来测试程序在不用系统下的兼容性甚至搭建集群的部署测试。构建多用户的平台即服务PaaS基础设施。提供软件即服务SaaS应用程序。高性能、超大规模的宿主机部署。
二、Docker的基本组成
Docker 包含了一下几个重要主要部分
Docker Client 客户端Docker Daemon 守护进程Docker Image 镜像Docker Container 容器Docker Registry 仓库
Docker 客户端 / 守护进程 Docker是C/S架构的程序Docker客户端向Docker服务器端也就是Docker的守护进程发出请求守护进程处理完所有的请求工作并返回结果。Docker 客户端对服务器端的访问既可以是本地也可以通过远程来访问。
Docker Image 镜像
镜像是Docker容器的基石容器基于镜像启动和运行。镜像就好比容器的源代码保存了用于启动容器的各种条件。Docker镜像是一个层叠的只读文件系统。Docker镜像使用联合加载技术
docker的镜像是一个层叠的只读文件系统最低端是一个引导文件系统即bootfs第二层是root文件系统即rootfs它位于bootfs之上可以是一种或多种操作系统比如ubuntu或者centos。在docker中root文件系统永远只能是只读状态并且docker运用联合加载技术又会在root文件系统之上加载更多的只读文件系统联合加载指的是一次加载多个文件系统但是在外面看起来只能看到一个文件系统联合加载会将各层文件系统叠加到一起这样最终的文件系统会包含所有的底层文件和目录docker将这样的文件系统称为镜像。 Docker Container 容器
容器通过镜像来启动Docker的容器是Docker的执行来源容器中可以运行客户的一个或多个进程如果说镜像是Docker声明周期中的构建和打包阶段那么容器则是启动和执行阶段。
当一个容器启动时docker会在该镜像的最顶层加载一个读写文件系统也就是一个可写的文件层我们在docker运行的程序就是在这个层中进行执行的当docker第一次启动一个容器时初始的读写层是空的当文件系统发生变化时这些变化都会应用到这一层上比如像修改一个文件该文件首先会从读写层下面的只读层复制到该读写层该文件的只读版本依然存在但是已经被读写层中的该文件副本所隐藏这就是docker的一个重要技术写时复制copy on write)。每个只读镜像层都是只读的永远不会变化当创建一个新容器时docker会构建出一个镜像栈如下图所示 Docker Registry 仓库
docker用仓库来保存用户构建的镜像仓库分为公有和私有两种,Docker公司提供了一个公有的仓库Docker Hub。
三、Docker 依赖的 Linux内核特性
Docker依赖于Linux内核的两个重要特性
Namespaces 命名空间Control groups (cgroups) 控制组
Namespaces 命名空间
很多编程语言都包含了“命名空间”的概念我们可以认为“命名空间”是一种“封装”的概念 而“封装”本身实际上实现的是代码的隔离。而在操作系统中命名空间提供的是系统资源的隔离而系统资源包括了进程、网络、文件系统等。
我们从Docker公开的文档来看它使用了5种命名空间
PIDProcess ID 进程隔离NETNetwork管理网络接口IPCInterProcess Communication管理跨进程通信的访问MNTMount管理挂载点UTSUnix Timesharing System 隔离内核和版本标识
那么这些隔离的资源是如何被管理起来的呢这就需要用到——Control groups(cgroup)控制组了。
Control groups (cgroups) 控制组
Control groups是Linux内核提供的一种可以限制、记录、隔离进程组所使用的物理资源的机制。 最初是由google工程师提出并且在2007年时被Linux的内核的2.6.24版本引进。可以说Control groups就是为容器而生的没有Control groups就没有容器技术的今天。
Control groups提供了以下功能
资源限制例如memory(内存)子系统可以为进程组设定一个内存使用的上限一旦进程组使用的内存达到了限额该进程组再发出内存申请时就会发出“out of memory”(内存溢出)的警告。优先级设定它可以设定哪些进程组可以使用更大的CPU或者磁盘IO的资源。资源计量它可以计算进程组使用了多少系统资源。尤其是在计费系统中这一点十分重要。资源控制它可以将进程组挂起或恢复。
Namespace 和 cgroup带给Docker的能力
到这里我们了解了Namespace和CGroup的概念和职能而这两个特性带给了Docker哪些能力呢如下
文件系统隔离首先是文件系统的隔离每个Docker的容器都可以拥有自己的root文件系统。进程隔离每个容器都运行在自己的进程环境中。网络隔离容器间的虚拟网络接口和IP地址都是分开的。资源的隔离和分组使用cgroups将cpu和内存之类的资源独立分配给每个Docker容器。
四、Docker的安装
Docker下载地址
Docker可以运行在MAC、Windows、CentOS、UBUNTU等操作系统上本文档基于CentOS 7 安装 Docker。
官网https://www.docker.com
Linux系统shell命令下载Docker推荐
# 1、yum 包更新到最新
yum update
# 2、安装需要的软件包 yum-util 提供yum-config-manager功能另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
# 3、 设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 4、 安装docker出现输入的界面都按 y
yum install -y docker-ce
# 5、 查看docker版本验证是否验证成功
docker -v五、Docker命令
1、进程相关命令 启动docker服务: systemctl start docker 停止docker服务: systemctl stop docker 重启docker服务: systemctl restart docker 查看docker服务状态: systemctl status docker 设置开机启动docker服务: systemctl enable docker2、Docker 镜像相关命令
查看镜像: 查看本地所有的镜像
docker images
docker images –q # 查看所用镜像的id搜索镜像:从网络中查找需要的镜像
docker search 镜像名称拉取镜像:从Docker仓库下载镜像到本地镜像名称格式为 名称:版本号如果版本号不指定则是最新的版本。 如果不知道镜像版本可以去docker hub 搜索对应镜像查看
docker pull 镜像名称删除镜像: 删除本地镜像
docker rmi 镜像id # 删除指定本地镜像
docker rmi docker images -q # 删除所有本地镜像3、Docker 容器相关命令
查看容器
docker ps # 查看正在运行的容器
docker ps –a # 查看所有容器创建并启动容器
docker run 参数进入容器
docker exec 参数 # 退出容器容器不会关闭停止容器
docker stop 容器名称启动容器
docker start 容器名称删除容器如果容器是运行状态则删除失败需要停止容器才能删除
docker rm 容器名称查看容器信息
docker inspect 容器名称六、Docker容器的数据卷
数据卷概念 数据卷是宿主机中的一个目录或文件 当容器目录和数据卷目录绑定后对方的修改会立即同步 一个数据卷可以被多个容器同时挂载 一个容器也可以被挂载多个数据卷
配置数据卷
创建启动容器时使用 –v 参数 设置数据卷
docker run ... –v 宿主机目录(文件):容器内目录(文件) ... PS 1.目录必须是绝对路径 2. 如果目录不存在会自动创建 3. 可以挂载多个数据卷
配置数据卷容器
创建启动c3数据卷容器使用 –v 参数 设置数据卷
docker run –it --namec3 –v /volume centos:7 /bin/bash 创建启动 c1 c2 容器使用 –-volumes-from 参数 设置数据卷
docker run –it --namec1 --volumes-from c3 centos:7 /bin/bash
docker run –it --namec2 --volumes-from c3 centos:7 /bin/bash 总结
数据卷概念 宿主机的一个目录或文件 数据卷作用 容器数据持久化客户端和容器数据交换容器间数据交换 数据卷容器 创建一个容器挂载一个目录让其他容器继承自该容器( --volume-from )。通过简单方式实现数据卷配置
七、Docker 应用部署
部署MySQL
需求
在Docker容器中部署MySQL并通过外部mysql客户端操作MySQL Server
实现步骤
① 搜索mysql镜像
② 拉取mysql镜像
③ 创建容器
④ 操作容器中的mysql
MySQL部署
容器内的网络服务和外部机器不能直接通信外部机器和宿主机可以直接通信宿主机和容器可以直接通信当容器中的网络服务需要被外部机器访问时可以将容器中提供服务的端口映射到宿主机的端口上。外部机 器访问宿主机的该端口从而间接访问容器的服务。这种操作称为端口映射 Linux命令(需要在root权限下)
搜索mysql镜像
docker search mysql拉取mysql镜像
docker pull mysql:5.6创建容器设置端口映射、目录映射
# 在/root目录下创建mysql目录用于存储mysql数据信息
mkdir ~/mysql
cd ~/mysqldocker run -id \
-p 3307:3306 \
--namec_mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD123456 \
mysql:5.6参数说明 -p 3307:3306将容器的 3306 端口映射到宿主机的 3307 端口。-v $PWD/conf:/etc/mysql/conf.d将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。配置目录-v $PWD/logs:/logs将主机当前目录下的 logs 目录挂载到容器的 /logs。日志目录-v $PWD/data:/var/lib/mysql 将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。数据目录-e MYSQL_ROOT_PASSWORD123456 初始化 root 用户的密码。
进入容器操作mysql
docker exec –it c_mysql /bin/bash 5.操作MySQL
mysql -uroot -p123456mysql show database;部署Tomcat
搜索tomcat镜像
docker search tomcat拉取tomcat镜像
docker pull tomcat创建容器设置端口映射、目录映射
# 在/root目录下创建tomcat目录用于存储tomcat数据信息
mkdir ~/tomcat
cd ~/tomcatdocker run -id --namec_tomcat \
-p 8080:8080 \
-v $PWD:/usr/local/tomcat/webapps \
tomcat 参数说明 -p 8080:8080 将容器的8080端口映射到主机的8080端口 -v $PWD:/usr/local/tomcat/webapps 将主机中当前目录挂载到容器的webapps
部署Nginx
搜索nginx镜像
docker search nginx拉取nginx镜像
docker pull nginx创建容器设置端口映射、目录映射
# 在/root目录下创建nginx目录用于存储nginx数据信息
mkdir ~/nginx
cd ~/nginx
mkdir conf
cd conf
# 在~/nginx/conf/下创建nginx.conf文件,粘贴下面内容
vim nginx.confuser nginx;
worker_processes 1;error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;events {worker_connections 1024;
}http {include /etc/nginx/mime.types;default_type application/octet-stream;log_format main $remote_addr - $remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for;access_log /var/log/nginx/access.log main;sendfile on;#tcp_nopush on;keepalive_timeout 65;#gzip on;include /etc/nginx/conf.d/*.conf;
}
docker run -id --namec_nginx \
-p 80:80 \
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \
-v $PWD/logs:/var/log/nginx \
-v $PWD/html:/usr/share/nginx/html \
nginx参数说明 -p 80:80将容器的 80端口映射到宿主机的 80 端口。-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf将主机当前目录下的 /conf/nginx.conf 挂载到容器的 :/etc/nginx/nginx.conf。配置目录-v $PWD/logs:/var/log/nginx将主机当前目录下的 logs 目录挂载到容器的/var/log/nginx日志目录。
部署Redis
搜索redis镜像
docker search redis拉取redis镜像
docker pull redis:5.0创建容器设置端口映射
docker run -id --namec_redis -p 6379:6379 redis:5.0使用外部机器连接redis
./redis-cli.exe -h 192.168.149.135 -p 6379八、Dockerfile
Docker 镜像原理
Docker镜像是由特殊的文件系统叠加而成最底端是 bootfs并使用宿主机的bootfs第二层是 root文件系统rootfs,称为base image然后再往上可以叠加其他的镜像文件统一文件系统Union File System技术能够将不同的 层整合成一个文件系统为这些层提供了一个统一的视角 这样就隐藏了多层的存在在用户的角度看来只存在 一个文件系统。一个镜像可以放在另一个镜像的上面。位于下面的镜像称 为父镜像最底部的镜像成为基础镜像。当从一个镜像启动容器时Docker会在最顶层加载一个读 写文件系统作为容器
问题 Docker 镜像本质是什么 • 是一个分层文件系统 Docker 中一个centos镜像为什么只有200MB而一个centos操作系统的iso文件要几个个G • Centos的iso镜像文件包含bootfs和rootfs而docker的centos镜像复用操作系统的bootfs只有rootfs和其他镜像层 Docker 中一个tomcat镜像为什么有500MB而一个tomcat安装包只有70多MB • 由于docker中镜像是分层的tomcat虽然只有70多MB但他需要依赖于父镜像和基础镜像所有整个对外暴露的 tomcat镜像大小500多MB
镜像制作
容器转为镜像
docker commit 容器id 镜像名称:版本号
docker save -o 压缩文件名称 镜像名称:版本号
docker load –i 压缩文件名称Dockerfile 概念
Dockerfile 是一个文本文件包含了一条条的指令每一条指令构建一层基于基础镜像最终构建出一个新的镜像对于开发人员可以为开发团队提供一个完全一致的开发环境对于测试人员可以直接拿开发时所构建的镜像或者通过Dockerfile文件 构建一个新的镜像开始工作了对于运维人员在部署时可以实现应用的无缝移植
Dochub网址https://hub.docker.com
Dockerfile关键字
关键字作用备注FROM指定父镜像指定dockerfile基于那个image构建MAINTAINER作者信息用来标明这个dockerfile谁写的LABEL标签用来标明dockerfile的标签 可以使用Label代替Maintainer 最终都是在docker image基本信息中可以查看RUN执行命令执行一段命令 默认是/bin/sh 格式: RUN command 或者 RUN [“command” , “param1”,“param2”]CMD容器启动命令提供启动容器时候的默认命令 和ENTRYPOINT配合使用.格式 CMD command param1 param2 或者 CMD [“command” , “param1”,“param2”]ENTRYPOINT入口一般在制作一些执行就关闭的容器中会使用COPY复制文件build的时候复制文件到image中ADD添加文件build的时候添加文件到image中 不仅仅局限于当前build上下文 可以来源于远程服务ENV环境变量指定build时候的环境变量 可以在启动的容器的时候 通过-e覆盖 格式ENV namevalueARG构建参数构建参数 只在构建的时候使用的参数 如果有ENV 那么ENV的相同名字的值始终覆盖arg的参数VOLUME定义外部可以挂载的数据卷指定build的image那些目录可以启动的时候挂载到文件系统中 启动容器的时候使用 -v 绑定 格式 VOLUME [“目录”]EXPOSE暴露端口定义容器运行的时候监听的端口 启动容器的使用-p来绑定暴露端口 格式: EXPOSE 8080 或者 EXPOSE 8080/udpWORKDIR工作目录指定容器内部的工作目录 如果没有创建则自动创建 如果指定/ 使用的是绝对地址 如果不是/开头那么是在上一条workdir的路径的相对路径USER指定执行用户指定build或者启动的时候 用户 在RUN CMD ENTRYPONT执行的时候的用户HEALTHCHECK健康检查指定监测当前容器的健康监测的命令 基本上没用 因为很多时候 应用本身有健康监测机制ONBUILD触发器当存在ONBUILD关键字的镜像作为基础镜像的时候 当执行FROM完成之后 会执行 ONBUILD的命令 但是不影响当前镜像 用处也不怎么大STOPSIGNAL发送信号量到宿主机该STOPSIGNAL指令设置将发送到容器的系统调用信号以退出。SHELL指定执行脚本的shell指定RUN CMD ENTRYPOINT 执行命令的时候 使用的shell
九、Docker服务编排
服务编排
微服务架构的应用系统中一般包含若干个微服务每个微服务一般都会部署多个实例如果每个微服务都要手动启停 维护的工作量会很大。
要从Dockerfile build image 或者去dockerhub拉取image要创建多个container要管理这些container启动停止删除
Docker Compose
Docker Compose是一个编排多容器分布式部署的工具提供命令集管理容器化应用的完整开发周期包括服务构建 启动和停止。使用步骤
利用 Dockerfile 定义运行环境镜像使用 docker-compose.yml 定义组成应用的各服务运行 docker-compose up 启动应用
Docker Compose安装使用
1、安装Docker Compose
# Compose目前已经完全支持Linux、Mac OS和Windows在我们安装Compose之前需要先安装Docker。下面我 们以编译好的二进制包方式安装在Linux系统中。
curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-uname -s-uname -m -o /usr/local/bin/docker-compose
# 设置文件可执行权限
chmod x /usr/local/bin/docker-compose
# 查看版本信息
docker-compose -version2、卸载Docker Compose
# 二进制包方式安装的删除二进制文件即可
rm /usr/local/bin/docker-compose3、 使用docker compose编排nginxspringboot项目
创建docker-compose目录
mkdir ~/docker-compose
cd ~/docker-compose编写 docker-compose.yml 文件
version: 3
services:nginx:image: nginxports:- 80:80links:- appvolumes:- ./nginx/conf.d:/etc/nginx/conf.dapp:image: appexpose:- 8080创建./nginx/conf.d目录
mkdir -p ./nginx/conf.d在./nginx/conf.d目录下 编写itheima.conf文件
server {listen 80;access_log off;location / {proxy_pass http://app:8080;}}在~/docker-compose 目录下 使用docker-compose 启动容器
docker-compose up测试访问
http://192.168.233.20/hello十、Docker的私有仓库
1、私有仓库搭建
# 1、拉取私有仓库镜像
docker pull registry
# 2、启动私有仓库容器
docker run -id --nameregistry -p 5000:5000 registry
# 3、打开浏览器 输入地址http://私有仓库服务器ip:5000/v2/_catalog看到{repositories:[]} 表示私有仓库 搭建成功
# 4、修改daemon.json
vim /etc/docker/daemon.json
# 在上述文件中添加一个key保存退出。此步用于让 docker 信任私有仓库地址注意将私有仓库服务器ip修改为自己私有仓库服务器真实ip
{insecure-registries:[私有仓库服务器ip:5000]}
# 5、重启docker 服务
systemctl restart docker
docker start registry
2、将镜像上传至私有仓库
# 1、标记镜像为私有仓库的镜像
docker tag centos:7 私有仓库服务器IP:5000/centos:7# 2、上传标记的镜像
docker push 私有仓库服务器IP:5000/centos:73、从私有仓库拉取镜像
#拉取镜像
docker pull 私有仓库服务器ip:5000/centos:7打开私人仓库只有{“repositories”:[]} 表示私有仓库 搭建成功 MySQL镜像推送私人仓库中~~~ 将MySQL的最新版本push到私人仓库后私人仓库中就有mysql 更多资料尽在 GitHub 欢迎各位读者去Star
⭐学术交流群Q 754410389 持续更新中~~~ 文章转载自: http://www.morning.cfrz.cn.gov.cn.cfrz.cn http://www.morning.fjmfq.cn.gov.cn.fjmfq.cn http://www.morning.cwskn.cn.gov.cn.cwskn.cn http://www.morning.rsnn.cn.gov.cn.rsnn.cn http://www.morning.yckwt.cn.gov.cn.yckwt.cn http://www.morning.trqhd.cn.gov.cn.trqhd.cn http://www.morning.xrqkm.cn.gov.cn.xrqkm.cn http://www.morning.bfbl.cn.gov.cn.bfbl.cn http://www.morning.lgsqy.cn.gov.cn.lgsqy.cn http://www.morning.yrnll.cn.gov.cn.yrnll.cn http://www.morning.cbmqq.cn.gov.cn.cbmqq.cn http://www.morning.yxkyl.cn.gov.cn.yxkyl.cn http://www.morning.qdlnw.cn.gov.cn.qdlnw.cn http://www.morning.tsnwf.cn.gov.cn.tsnwf.cn http://www.morning.kqrql.cn.gov.cn.kqrql.cn http://www.morning.easiuse.com.gov.cn.easiuse.com http://www.morning.rdwm.cn.gov.cn.rdwm.cn http://www.morning.tmbfz.cn.gov.cn.tmbfz.cn http://www.morning.hlxxl.cn.gov.cn.hlxxl.cn http://www.morning.lhrwy.cn.gov.cn.lhrwy.cn http://www.morning.gwjnm.cn.gov.cn.gwjnm.cn http://www.morning.dtgjt.cn.gov.cn.dtgjt.cn http://www.morning.tclqf.cn.gov.cn.tclqf.cn http://www.morning.shangwenchao4.cn.gov.cn.shangwenchao4.cn http://www.morning.fthqc.cn.gov.cn.fthqc.cn http://www.morning.xrsqb.cn.gov.cn.xrsqb.cn http://www.morning.bbrf.cn.gov.cn.bbrf.cn http://www.morning.pwgzh.cn.gov.cn.pwgzh.cn http://www.morning.xqgtd.cn.gov.cn.xqgtd.cn http://www.morning.pwdgy.cn.gov.cn.pwdgy.cn http://www.morning.krgjc.cn.gov.cn.krgjc.cn http://www.morning.bqpgq.cn.gov.cn.bqpgq.cn http://www.morning.crrjg.cn.gov.cn.crrjg.cn http://www.morning.dmlgq.cn.gov.cn.dmlgq.cn http://www.morning.dqkcn.cn.gov.cn.dqkcn.cn http://www.morning.tnyanzou.com.gov.cn.tnyanzou.com http://www.morning.mztyh.cn.gov.cn.mztyh.cn http://www.morning.fldsb.cn.gov.cn.fldsb.cn http://www.morning.fygbq.cn.gov.cn.fygbq.cn http://www.morning.ccffs.cn.gov.cn.ccffs.cn http://www.morning.pzcjq.cn.gov.cn.pzcjq.cn http://www.morning.gsjw.cn.gov.cn.gsjw.cn http://www.morning.jikuxy.com.gov.cn.jikuxy.com http://www.morning.hytfz.cn.gov.cn.hytfz.cn http://www.morning.zlnyk.cn.gov.cn.zlnyk.cn http://www.morning.rckdq.cn.gov.cn.rckdq.cn http://www.morning.tntqr.cn.gov.cn.tntqr.cn http://www.morning.htjwz.cn.gov.cn.htjwz.cn http://www.morning.sbyhj.cn.gov.cn.sbyhj.cn http://www.morning.lwdzt.cn.gov.cn.lwdzt.cn http://www.morning.shuanga.com.cn.gov.cn.shuanga.com.cn http://www.morning.fstdf.cn.gov.cn.fstdf.cn http://www.morning.nhpmn.cn.gov.cn.nhpmn.cn http://www.morning.sqmbb.cn.gov.cn.sqmbb.cn http://www.morning.zmwzg.cn.gov.cn.zmwzg.cn http://www.morning.dongyinet.cn.gov.cn.dongyinet.cn http://www.morning.dwdjj.cn.gov.cn.dwdjj.cn http://www.morning.flncd.cn.gov.cn.flncd.cn http://www.morning.mdtfh.cn.gov.cn.mdtfh.cn http://www.morning.wktbz.cn.gov.cn.wktbz.cn http://www.morning.xdqrz.cn.gov.cn.xdqrz.cn http://www.morning.qwdqq.cn.gov.cn.qwdqq.cn http://www.morning.mtmnk.cn.gov.cn.mtmnk.cn http://www.morning.bbtn.cn.gov.cn.bbtn.cn http://www.morning.jggr.cn.gov.cn.jggr.cn http://www.morning.nhgkm.cn.gov.cn.nhgkm.cn http://www.morning.kllzy.com.gov.cn.kllzy.com http://www.morning.bnbzd.cn.gov.cn.bnbzd.cn http://www.morning.rmdwp.cn.gov.cn.rmdwp.cn http://www.morning.cxryx.cn.gov.cn.cxryx.cn http://www.morning.nkjxn.cn.gov.cn.nkjxn.cn http://www.morning.jzgxp.cn.gov.cn.jzgxp.cn http://www.morning.trfh.cn.gov.cn.trfh.cn http://www.morning.drggr.cn.gov.cn.drggr.cn http://www.morning.bnwlh.cn.gov.cn.bnwlh.cn http://www.morning.rcbdn.cn.gov.cn.rcbdn.cn http://www.morning.atoinfo.com.gov.cn.atoinfo.com http://www.morning.frsxt.cn.gov.cn.frsxt.cn http://www.morning.nkjpl.cn.gov.cn.nkjpl.cn http://www.morning.gmztd.cn.gov.cn.gmztd.cn