当前位置: 首页 > news >正文 简单网站设计西安网站建立 news 2025/10/24 0:40:39 简单网站设计,西安网站建立,logo在线设计制作,电子商务网站建设与管理王生春Docker快速入门 前言 当今软件开发领域的一股热潮正在迅速兴起#xff0c;它融合了便捷性、灵活性和可移植性#xff0c;让开发者们欣喜若狂。它就是 Docker#xff01;无论你是一个初学者#xff0c;还是一位经验丰富的开发者#xff0c;都不能错过这个引领技术浪潮的工…Docker快速入门 前言 当今软件开发领域的一股热潮正在迅速兴起它融合了便捷性、灵活性和可移植性让开发者们欣喜若狂。它就是 Docker无论你是一个初学者还是一位经验丰富的开发者都不能错过这个引领技术浪潮的工具。 想象一下你可以在几分钟内轻松创建和部署应用程序而不再担心因为环境差异而导致的问题。Docker通过将您的代码、运行时环境和所有依赖项打包到一个容器中实现了真正的一次构建到处运行。 随着 Docker 的快速入门您将迈出构建现代化、高效和可靠软件的第一步。在本博客中我们将带您探索 Docker 的世界从安装和配置开始逐步引导您了解如何使用 Docker 命令构建、运行和管理容器。您将了解到镜像的概念以及如何使用 Docker Hub 查找和分享常用的容器镜像。此外我们还会介绍 Docker 的网络和存储功能以及与其他工具集成的最佳实践。 无论是想要在本地开发环境中提高效率还是在生产环境中实现高度可扩展的应用程序部署Docker 都将成为您的得力助手。让我们一起探索这个令人兴奋的世界体验 Docker 带来的快速、灵活和可靠的开发和部署过程 无论您是一名开发者、运维工程师还是对技术充满好奇心的新手这篇博客将帮助您快速入门 Docker并为您打开一扇通向创新和成功的大门。准备好了吗让我们一起开始吧 1、初识Docker 1.1 Docker概述 微服务虽然具备各种各样的优势但服务的拆分通用给部署带来了很大的麻烦 分布式系统中依赖的组件非常多不同组件之间部署时往往会产生一些冲突在数百上千台服务中重复部署环境不一定一致会遇到各种问题 所以Docker应运而生我们现在就来学习Docker看Docker如何解决微服务的这些难点、痛点问题吧 什么是Docker Docker是一种开源的容器化平台它可以帮助开发人员更轻松、快速地构建、发布和运行应用程序。通过使用Docker容器可以将应用程序及其依赖项打包在一个可移植的容器中从而实现在不同的操作系统或云端环境中无缝运行的目的。Docker极大地简化了应用程序的部署和管理提高了应用程序的可移植性、可伸缩性和安全性。 什么是容器化 容器化是将应用程序及其依赖项例如库、配置文件等打包成一个独立的容器使其能在不同的计算机环境中以相同的方式运行。容器化技术的核心是容器引擎例如 Docker它可以管理和运行多个容器实例。与传统的虚拟机不同容器化可以更加轻量级和快速启动同时也能够更好地利用系统资源。容器化技术广泛应用于云计算、持续集成/持续部署、开发和测试等领域。 为什么要需要Docker 使用 Docker 可以大大简化应用程序的部署过程提高部署的效率和可靠性同时Docker 还支持快速构建、测试和部署应用程序减少开发人员的开发、测试和部署时间提高团队的协作和效率。此外Docker 还支持自动化部署和负载均衡等功能能够更好地应对高流量和高并发的情况。因此使用 Dockers 可以显著提高应用程序的可靠性和可维护性是现代化应用程序开发的一个重要工具。 总的来讲Docker解决了以下几个主要问题 依赖不兼容操作系统环境差异性很大 使用Docker具有以下几个优点 解决时间大幅降低开发人员开发、测试和部署的时间能够更好地应对高流量和高并发的情况显著提高应用程序的可靠性和可维护性 Docker如何解决依赖兼容性问题的呢 Docker为了解决依赖的兼容问题的采用了两个手段 将应用的Libs函数库、Deps依赖、配置与应用一起打包 将每个应用放到一个隔离容器去运行避免互相干扰 这样打包好的应用包中既包含应用本身也保护应用所需要的Libs、Deps无需再操作系统上安装这些自然就不存在不同应用之间的兼容问题了 Docker如何解决操作系统的差异性的呢 Docker将用户程序与所需要调用的系统(比如Ubuntu)函数库一起打包Docker运行到不同操作系统时直接基于打包的函数库借助于操作系统的Linux内核来运行 1.2 Docker与虚拟机的区别 通过1.1小节的学习我们发现Docker与虚拟机很类似都能让一个程序在不同的操作系统行运行现在就让我们来探究以下Docker与虚拟机有哪些区别和联系吧 虚拟机和Docker都是用于在一台物理机上运行多个操作系统环境的技术但它们有一些区别和联系 虚拟机和Docker的作用不同虚拟机主要用于运行完整的操作系统而Docker则主要用于运行基于容器的应用程序。 虚拟机需要完整的操作系统包括操作系统内核、文件系统等而Docker容器只需要包含应用程序和其依赖项即可。 Docker容器更轻量级因为它们使用了宿主操作系统的内核和资源只需要提供程序所需的文件和库。 虚拟机需要使用更多的系统资源包括内存、CPU和磁盘等而Docker容器使用的资源更少可以更高效地利用系统资源。 虚拟机需要额外的软件来管理和监控虚拟机的运行如VMware、VirtualBox等而Docker则使用Docker引擎来管理和监控容器的运行。 总体来说虚拟机和Docker都是将多个环境运行在一台物理机上的技术但是它们的应用场景和实现方式不同。虚拟机更适合运行完整的操作系统环境提供更高的安全级别但是需要更多的系统资源。而Docker更适合运行基于容器的应用程序具有更高的可移植性和扩展性可以更高效地利用系统资源。 虚拟机virtual machine是在操作系统中模拟硬件设备然后运行另一个操作系统比如在 Windows 系统里面运行 Ubuntu 系统这样就可以运行任意的Ubuntu应用了。而Docker仅仅是封装函数库并没有模拟完整的操作系统如图 两者对比来看 Docker和虚拟机的差异 docker是一个系统进程虚拟机是在操作系统中的操作系统 docker体积小、启动速度快、性能好虚拟机体积大、启动速度慢、性能一般 1.3 Docker架构 镜像和容器相关概念 Docker中有几个重要的概念 镜像ImageDocker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起称为镜像。 容器Container镜像中的应用程序运行后形成的进程就是容器只是Docker会给容器进程做隔离对外不可见。 一切应用最终都是代码组成都是硬盘中的一个个的字节形成的文件。只有运行时才会加载到内存形成进程。而镜像就是把一个应用在硬盘上的文件、及其运行环境、部分系统函数库文件一起打包形成的文件包。这个文件包是只读的。容器呢就是将这些文件中编写的程序、函数加载到内存中允许形成进程只不过要隔离起来。因此一个镜像可以启动多次形成多个容器进程。 例如你下载了一个QQ如果我们将QQ在磁盘上的运行文件及其运行的操作系统依赖打包形成QQ镜像。然后你可以启动多次双开、甚至三开QQ跟多个妹子聊天 DockerHub 开源应用程序非常多打包这些应用往往是重复的劳动。为了避免这些重复劳动人们就会将自己打包的应用镜像例如Redis、MySQL镜像放到网络上共享使用就像GitHub的代码共享一样 Docker RegistryDockerHub是一个官方的Docker镜像的托管平台。这样的平台称为Docker Registry 国内也有类似于DockerHub 的公开服务比如 网易云镜像服务、阿里云镜像库等 我们一方面可以将自己的镜像共享到DockerHub另一方面也可以从DockerHub拉取镜像 Docker架构 Docker是一个CS架构的程序由两部分组成 服务端(server)Docker守护进程负责处理Docker指令管理镜像、容器等客户端(client)通过命令或RestAPI向Docker服务端发送指令。可以在本地或远程向服务端发送指令 1.4 安装Docker 略……详情请参考这篇文章Docker安装包教包会 2、Docker的基本操作 2.1 镜像操作 镜像名称 镜名称一般分两部分组成[repository]:[tag]。在没有指定tag时默认是latest代表最新版本的镜像 例如mysql:5.7其中mysql就是repository5.7就是tag合在一起就是一个镜像名称代表5.7版本的MySQL镜像 镜像命令 常见的镜像操作命令执行流程如下图所示 2.2.1 拉取查看镜像 Step1查看镜像名称。首先去镜像仓库搜索nginx镜像比如DockerHub Step2拉取镜像 docker pull nginx备注注解使用上面那条指令拉取的是最新的Nginx镜像等价于 docker pull nginx:latest 2.2.2 保存导入镜像 将镜像导出 docker save -o [保存的目标文件名称] [镜像名称]# 将nginx镜像导出到磁盘 docker save -o nginx.tar nginx:latest加载镜像 1先删除镜像 docker rmi nginx:latest2加载镜像 docker load -i nginx.tar2.2 容器操作 2.2.1 容器相关命令 容器保护三个状态 运行进程正常运行暂停进程暂停CPU不再运行并不释放内存停止进程终止回收进程占用的内存、CPU等资源 其中 docker run创建并运行一个容器处于运行状态 docker pause让一个运行的容器暂停 docker unpause让一个容器从暂停状态恢复运行 docker stop停止一个运行的容器 docker start让一个停止的容器再次运行 docker rm删除一个容器 exit退出容器 2.2.2 创建运行容器 创建并运行Nginx容器 docker run --name containerName -p 80:80 -d nginx命令解读 docker run 创建并运行一个容器--name : 给容器起一个名字比如叫做mn-p 将宿主机端口与容器端口映射冒号左侧是宿主机端口右侧是容器端口-d后台运行容器nginx镜像名称例如nginx 这里的-p参数是将容器端口映射到宿主机端口。 默认情况下容器是隔离环境我们直接访问宿主机的80端口肯定访问不到容器中的nginx。 现在将容器的80与宿主机的80关联起来当我们访问宿主机的80端口时就会被映射到容器的80这样就能访问到nginx了 通过查看日志可以判断Nginx是否被访问了 docker logs -f nginx可以看到没刷新一次浏览器日志都会新增一条这说明我们Docker中的Nginx已经被成功访问了 2.2.3 修改容器中的文件 进入我们创建的nginx容器然后修改其中的HTML页面 Step1进入Nginx容器 # 进入容器bash是进入容器后执行的命令 docker exec -it nginx bash备注进入容器内部后可以发现相当于进入了另外一个Linux系统该Linux系统支持部分Linux指令没有外部的全面 Step2切换到Nginx的html页面 # 进入nginx的html页面目录注意这个目录是通过查看官方文档知道的 cd /usr/share/nginx/htmlStep3编辑html页面 注意这里不能直接私用vim/vi命令进项编辑因为容器中的Linux只支持部分指令1.2小节有讲 sed -i -e s#Welcome to nginx#Welcome to Docker#g -e s#head#headmeta charsetutf-8#g index.html2.3 数据卷 2.3.1 数据卷介绍 在之前的nginx案例中修改nginx的html页面时需要进入nginx内部。并且因为没有编辑器修改文件也很麻烦。 这就是因为容器与数据容器内文件耦合带来的后果 要解决这个问题必须将数据与容器解耦这就要用到数据卷了 什么是数据卷 数据卷Data Volume是指一种用于容器持久化数据的技术它可以将宿主机的文件或目录挂载到容器内部使得容器内部的数据可以持久化到宿主机上。通过数据卷的使用我们可以很方便地将容器中的数据与宿主机解耦避免了容器删除时数据丢失的问题同时也方便了数据的备份、恢复和迁移等操作。数据卷可以使用Docker命令行进行创建、挂载和删除也可以在Dockerfile中脚本化操作。 简言之数据卷其实就是是一个虚拟目录指向宿主机文件系统中的某个目录 数据卷的作用是什么 一旦完成数据卷挂载对容器的一切操作都会作用在数据卷对应的宿主机目录了。这样我们操作宿主机的/var/lib/docker/volumes/html目录就等于操作容器内的/usr/share/nginx/html目录了。 PS这个有点类似与虚拟机中的VMware Tools 2.3.2 数据卷操作命令 docker volume [COMMAND]docker volume命令是数据卷操作根据命令后跟随的command来确定下一步的操作 create 创建一个volumeinspect 显示一个或多个volume的信息ls 列出所有的volumeprune 删除未使用的volumerm 删除一个或多个指定的volume 示例 # 创建一个test的数据卷 docker volume create test# 查看当前所有的数据卷 docker volume ls# 删除test数据卷 docker volume rm test2.3.3 挂载数据卷 示例一 将html数据卷挂载到Docker中的html目录然后实现容器外部修改Nginx中的文件 Step1创建一个数据卷 docker volume create htmlStep2创建并运行容器的同时使用-v参数挂载数据卷 docker run --name ngnix -p 80:80 -v html:/usr/share/nginx/html -d nginx-v [数据卷目录]:[容器目录] 把html数据卷挂载到ngxin容器内的/usr/share/nginx/html这个目录中 备注可以直接省略Step1当数据卷不存在时执行step2时会自动创建一个数据卷 示例二 创建并运行一个MySQL容器将宿主机目录直接挂载到容器。目录挂载和数据卷挂载是很类似的 -v [宿主机目录]:[容器内目录] -v [宿主机文件]:[容器内文件] 注意宿主机的文件会直接覆盖容器内的文件 3、Dockerfile自定义镜像 3.1 镜像结构 常见的镜像在DockerHub就能找到但是我们自己写的项目就必须自己构建镜像了。而要自定义镜像就必须先了解镜像的结构才行 镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而成。镜像的主要组成BaseimageLayerEntrypoint 我们以MySQL为例来看看镜像的组成结构 简单来说镜像就是在系统函数库、运行环境基础上添加应用程序文件、配置文件、依赖文件等组合然后编写好启动脚本打包在一起形成的文件。 我们要构建镜像其实就是实现上述打包的过程。 3.2 Dockerfile 构建自定义的镜像时并不需要一个个文件去拷贝打包。我们只需要告诉Docker我们的镜像的组成需要哪些BaseImage、需要拷贝什么文件、需要安装什么依赖、启动脚本是什么将来Docker会帮助我们构建镜像。 而描述上述信息的文件就是Dockerfile文件。 Dockerfile 就是一个文本文件其中包含一个个的 指令(Instruction)用指令来说明要执行什么操作来构建镜像。每一个指令都会形成一层Layer。 更新详细语法说明请参考官网文档 https://docs.docker.com/engine/reference/builder 3.3 构建自定义镜像 3.3.1 基于Ubuntu构建 示例 基于Unbuntu将打包好的Java程序构建称一个镜像然后使用Docker运行最终访问 Step1创建目录 cd /tmp mkdir docker-demo cd docker-demoStep2上传Java项目 # 指定基础镜像 FROM ubuntu:16.04 # 配置环境变量JDK的安装目录 ENV JAVA_DIR/usr/local# 拷贝jdk和java项目的包 COPY ./jdk8.tar.gz $JAVA_DIR/ COPY ./docker-demo.jar /tmp/app.jar# 安装JDK RUN cd $JAVA_DIR \ tar -xf ./jdk8.tar.gz \ mv ./jdk1.8.0_144 ./java8# 配置环境变量 ENV JAVA_HOME$JAVA_DIR/java8 ENV PATH$PATH:$JAVA_HOME/bin# 暴露端口 EXPOSE 8090 # 入口java项目的启动命令 ENTRYPOINT java -jar /tmp/app.jarStep3构建镜像 docker build -t dockerdemo:1.0 .备注 dockerdemo:1.0表示镜像名称 最后的.表示Dockersfile所在位置.表示Dockerfile在当前目录如果在其它目录要则要修改 Step4运行镜像 docker run --name dockerdemo -p 8090:8090 -d dockerdemo:1.03.3.2 基于Java8构建 虽然我们可以基于Ubuntu基础镜像添加任意自己需要的安装包构建镜像但是却比较麻烦。大多数情况下我们都想要在一些安装了部分软件的基础镜像上做改造。例如构建java项目的镜像可以在已经准备了JDK的基础镜像基础上构建。 PS这就优点类似于开发一个框架或者一个项目模块目的就是提高效率节约时间 示例 基于java:8-alpine镜像将一个Java项目构建为镜像。 Java:8-alpine镜像是一个基于Alpine Linux系统的Docker镜像其中包含了Java 8运行环境。它的特点是体积非常小仅有不到100MB相比于其他Java镜像大幅缩减了容器的大小在一些对容器大小限制比较严格的场景也能得到很好的应用。同时由于Alpine Linux是一个轻量级的Linux操作系统使用起来也比较快速和高效。但需要注意的是由于它是一个轻量级的操作系统可能不支持一些常用的软件包或库需要自行安装相应的依赖和工具。 Step1创建目录 Step2修改Dockerfile文件 # 指定基础镜像 FROM java:8-alpine # 拷贝Java项目的包 COPY ./docker-demo.jar /tmp/app.jar # 暴露端口 EXPOSE 8090 # 入口java项目的启动命令 ENTRYPOINT java -jar /tmp/app.jarStep3运行镜像 docker run --name dockerdemo2 -p 8091:8091 -d dockerdemo:2.0备注 docker stop 容器名 # 停止指定的容器 docker rm $(docker ps -a -q) # 移除已经停止的容器4、Docker Compose Docker Compose可以基于Compose文件帮我们快速的部署分布式应用而无需手动一个个创建和运行容器 官网Docker Compose overview | Docker Documentation 4.1 Docker Compose 什么是DockerCompose Docker Compose是一个由Docker官方提供的用于定义和运行多个Docker容器应用的工具。它基于YAML文件格式定义应用的服务、网络和卷并使用compose命令来启动、停止、构建和管理这些多容器应用。通过Docker Compose开发人员可以轻松在单个命令下启动、停止和重建多个Docker容器而不必手动创建和管理多个Docker容器。这使得开发人员可以更加专注于应用程序的构建和运行而不必担心与Docker容器环境相关的技术细节。 DockerCompose的详细语法参考官网https://docs.docker.com/compose/compose-file/ DockerCompose的作用 帮助我们快速部署分布式应用无需一个个微服务去构建镜像和部署 Compose文件是一个文本文件通过指令定义集群中的每个容器如何运行。格式如下 version: 3.8services:mysql:image: mysql:5.7.25environment:MYSQL_ROOT_PASSWORD: 123 volumes:- /tmp/mysql/data:/var/lib/mysql- /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnfweb:build: .ports:- 8090:8090可以看到它相当于是将命令行的命令放在了YAML文件中语法上稍微有一点差异不用手动去敲了大大减少部署时间 上面的Compose文件就描述一个项目其中包含两个容器 mysql一个基于mysql:5.7.25镜像构建的容器并且挂载了两个目录web一个基于docker build临时构建的镜像容器映射端口时8090 4.2 安装DockerCompose 略……详情请参考这篇文章手把手教你XXX 4.3 部署微服务集群 Step1准备一个微服务项目。注意要将数据库、nacos的地址都命名为docker-compose中的服务名 将localhost编程mysql或者nacos Step2打包。使用Maven打包工具将每一个微服务都打包成app.jar Step3将打好的jar包上传到对应的cloud-demo目录 Step4部署 /usr/local/src/docker-compose up -d中间会报一个错 这是因为在Nacos启动过程中order-service和user-servcie已经启动了直接去访问Nacos没有发现Nacos就直接报错了 docker-compsoe stop # 停止 docker-compsoe down # 停止并删除 docker-compsoe restart # 重启 docker-compsoe logs # 查看日志优点小bug这里直接跳过了 5、Docker镜像仓库 5.1 Docker镜像仓库的搭建 略……详情请参考这篇文章Docker安装教程 5.2 Docker镜像仓库相关操作 重命名镜像 docker tag nginx:latest 192.168.88.141:8080/nginx:1.0 docker tag固定写法 nginx:latest镜像的原名称 192.168.88.141:8080/nginx:1.0 镜像仓库地址/重命名 可以看到现在有两个镜像了这两个镜像的ID都是一致的说明是同一个镜像但是Tag不一致。 注意此时镜像仓库还没有重命名的镜像还需要将镜像进项推送 推送镜像 docker push 192.168.88.141:8080/nginx:1.0 拉取镜像 docker pull 192.168.88.141:8080/nginx:1.0 文章转载自: http://www.morning.bhjyh.cn.gov.cn.bhjyh.cn http://www.morning.tmzlt.cn.gov.cn.tmzlt.cn http://www.morning.kmwsz.cn.gov.cn.kmwsz.cn http://www.morning.yskhj.cn.gov.cn.yskhj.cn http://www.morning.wftrs.cn.gov.cn.wftrs.cn http://www.morning.yfmlj.cn.gov.cn.yfmlj.cn http://www.morning.qbfwb.cn.gov.cn.qbfwb.cn http://www.morning.lffrh.cn.gov.cn.lffrh.cn http://www.morning.iknty.cn.gov.cn.iknty.cn http://www.morning.qckwj.cn.gov.cn.qckwj.cn http://www.morning.dpppx.cn.gov.cn.dpppx.cn http://www.morning.xmyrn.cn.gov.cn.xmyrn.cn http://www.morning.btypn.cn.gov.cn.btypn.cn http://www.morning.hgsmz.cn.gov.cn.hgsmz.cn http://www.morning.blqmn.cn.gov.cn.blqmn.cn http://www.morning.brlgf.cn.gov.cn.brlgf.cn http://www.morning.bfjtp.cn.gov.cn.bfjtp.cn http://www.morning.fwwkr.cn.gov.cn.fwwkr.cn http://www.morning.smzr.cn.gov.cn.smzr.cn http://www.morning.jqkjr.cn.gov.cn.jqkjr.cn http://www.morning.plfrk.cn.gov.cn.plfrk.cn http://www.morning.wjpsn.cn.gov.cn.wjpsn.cn http://www.morning.qcrhb.cn.gov.cn.qcrhb.cn http://www.morning.shxrn.cn.gov.cn.shxrn.cn http://www.morning.lkthj.cn.gov.cn.lkthj.cn http://www.morning.jllnh.cn.gov.cn.jllnh.cn http://www.morning.qbdsx.cn.gov.cn.qbdsx.cn http://www.morning.grjh.cn.gov.cn.grjh.cn http://www.morning.dlwzm.cn.gov.cn.dlwzm.cn http://www.morning.wmyqw.com.gov.cn.wmyqw.com http://www.morning.lgwpm.cn.gov.cn.lgwpm.cn http://www.morning.kpbgvaf.cn.gov.cn.kpbgvaf.cn http://www.morning.brhxd.cn.gov.cn.brhxd.cn http://www.morning.qxnns.cn.gov.cn.qxnns.cn http://www.morning.pxwjp.cn.gov.cn.pxwjp.cn http://www.morning.yubkwd.cn.gov.cn.yubkwd.cn http://www.morning.hfyll.cn.gov.cn.hfyll.cn http://www.morning.nshhf.cn.gov.cn.nshhf.cn http://www.morning.dxhnm.cn.gov.cn.dxhnm.cn http://www.morning.mftdq.cn.gov.cn.mftdq.cn http://www.morning.qgdsd.cn.gov.cn.qgdsd.cn http://www.morning.knlgk.cn.gov.cn.knlgk.cn http://www.morning.nkcfh.cn.gov.cn.nkcfh.cn http://www.morning.nfzzf.cn.gov.cn.nfzzf.cn http://www.morning.lgphx.cn.gov.cn.lgphx.cn http://www.morning.wrdpj.cn.gov.cn.wrdpj.cn http://www.morning.fcwxs.cn.gov.cn.fcwxs.cn http://www.morning.lznfl.cn.gov.cn.lznfl.cn http://www.morning.thbkc.cn.gov.cn.thbkc.cn http://www.morning.zbqsg.cn.gov.cn.zbqsg.cn http://www.morning.kjjbz.cn.gov.cn.kjjbz.cn http://www.morning.lfdzr.cn.gov.cn.lfdzr.cn http://www.morning.dnphd.cn.gov.cn.dnphd.cn http://www.morning.qdmdp.cn.gov.cn.qdmdp.cn http://www.morning.tfrlj.cn.gov.cn.tfrlj.cn http://www.morning.jcrlx.cn.gov.cn.jcrlx.cn http://www.morning.dspqc.cn.gov.cn.dspqc.cn http://www.morning.cpktd.cn.gov.cn.cpktd.cn http://www.morning.fxjnn.cn.gov.cn.fxjnn.cn http://www.morning.rdmn.cn.gov.cn.rdmn.cn http://www.morning.ppwdh.cn.gov.cn.ppwdh.cn http://www.morning.gczqt.cn.gov.cn.gczqt.cn http://www.morning.nclps.cn.gov.cn.nclps.cn http://www.morning.mydgr.cn.gov.cn.mydgr.cn http://www.morning.crsqs.cn.gov.cn.crsqs.cn http://www.morning.tnjff.cn.gov.cn.tnjff.cn http://www.morning.btqrz.cn.gov.cn.btqrz.cn http://www.morning.pcshb.cn.gov.cn.pcshb.cn http://www.morning.fhjnh.cn.gov.cn.fhjnh.cn http://www.morning.qqhmg.cn.gov.cn.qqhmg.cn http://www.morning.kyflr.cn.gov.cn.kyflr.cn http://www.morning.rbtny.cn.gov.cn.rbtny.cn http://www.morning.yrdkl.cn.gov.cn.yrdkl.cn http://www.morning.xcjwm.cn.gov.cn.xcjwm.cn http://www.morning.bfmrq.cn.gov.cn.bfmrq.cn http://www.morning.pcgrq.cn.gov.cn.pcgrq.cn http://www.morning.ffbl.cn.gov.cn.ffbl.cn http://www.morning.mbmtn.cn.gov.cn.mbmtn.cn http://www.morning.qrnbs.cn.gov.cn.qrnbs.cn http://www.morning.nwclg.cn.gov.cn.nwclg.cn 查看全文 http://www.tj-hxxt.cn/news/243936.html 相关文章: linux做网站配置wordpress 主题更换 企业网站优化分为两个方向内容整合营销 网站每年续费给谁yy头像在线制作网站 网站建设英文翻译vs2010做网站前台 网站开发合同是否要交印花税威海外贸网站建设 只做自己网站腾讯邮箱企业邮箱入口网址 网站你应该明白什么意思吗中山网站建设咨询 网站流量指标做网站面临的困难 建站师telent手工制作国庆节作品 请给自己的网站首页布局长宁苏州网站建设公司 寻找南昌网站设计单位网站开发中文改成英文 在线购物网站 项目杭州网站设计的公司 网站建设有哪些推广渠道开网站需要租用机房服务器价格 苏州建设网站服务建设和住房保障部 网站 网站的ns记录赛车网站开发 深圳博大建设集团网站深圳小程序开发 wordpress调用文章部分内容站内关键词自然排名优化 赣州市网站建设销售推广的方法都有哪些 办网站需流程wordpress 文章音频 怎么免费做网站wordpress多店铺 花店商城网站设计站长统计导航窗口 新吴区住房和建设交通局网站白酒网站定制开发 上海哪里有网站建设龙华网站建设方案书例文 网站安全建设方案前言网站首页在哪个文件夹 网站后台文章排版网站开发成本主要有哪些 柯桥教育网站建设安徽合肥建设网 营销网站定位哪个网站可以做高像素动图 庙行网站建设上海建个人网站比较好的公司 做ic的电子网站有哪些广州工程信息网 男人做想看的免费网站frontpg做网站好吗