旅游网站开发的结论,龙岩网站建设要多久,全屏网站模板,一键清空wordpress文章文章目录 1.Docker介绍2.Docker安装3.免sudo设置4. 使用docker命令5.Images6.运行docker容器7. 管理docker容器8.创建image9.Push Image 1.Docker介绍
Docker 是一个简化在容器中管理应用程序进程的应用程序。容器让你在资源隔离的进程中运行你的应用程序。类似于虚拟机#… 文章目录 1.Docker介绍2.Docker安装3.免sudo设置4. 使用docker命令5.Images6.运行docker容器7. 管理docker容器8.创建image9.Push Image 1.Docker介绍
Docker 是一个简化在容器中管理应用程序进程的应用程序。容器让你在资源隔离的进程中运行你的应用程序。类似于虚拟机但容器更具可移植性更节约资源并且更依赖于主机操作系统。
常见组件简介如下
Docker for Mac − It allows one to run Docker containers on the Mac OS.Docker for Linux − It allows one to run Docker containers on the Linux OS.Docker for Windows − It allows one to run Docker containers on the Windows OS.Docker Engine − It is used for building Docker images and creating Docker containers.Docker Hub − This is the registry which is used to host various Docker images.Docker Compose − This is used to define applications using multiple Docker containers.
接下来此文章将记录在 Ubuntu 20.04 上安装和使用 Docker Community Edition (CE)。 安装 Docker 本身使用容器和镜像并将镜像推送到 Docker 存储库。
2.Docker安装
Ubuntu 官方存储库中提供的 Docker 安装包可能不是最新版本。 为了确保获得最新版本我们将从官方 Docker 存储库安装 Docker。 为此我将添加一个新的包源添加 Docker 的 GPG key以确保下载的文件是有效的然后安装该包。 首先更新现有的软件包列表
sudo apt update接下来安装一些必备包让 apt 通过 HTTPS来获取相关package 这里包含5个必备包apt-transport-https、ca-certificates 、curl 、software-properties-commo
sudo apt install apt-transport-https ca-certificates curl software-properties-common然后将官方 Docker 存储库的 GPG key添加到系统中
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -将 Docker 存储库添加到 APT 源
sudo add-apt-repository deb [archamd64] https://download.docker.com/linux/ubuntu focal stable这将使用新添加的repo中的 Docker 包更新我们的package数据库。 确保要从 Docker 存储库而不是默认的 Ubuntu 存储库进行安装
apt-cache policy docker-ceoutput: docker-ce: Installed: (none) Candidate: 5:19.03.93-0ubuntu-focal Version table: 5:19.03.93-0ubuntu-focal 500 500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages insalled:none)代表docer-ce尚未安装 Candidate: 5:19.03.93-0ubuntu-focal 意指候选安装,版本是 5:19.03.93-0ubuntu-focal
如果不清楚包的名字使用如下命令
apt-cache pkgnames|grep dockeroutput: golang-github-docker-notary-dev docker-ce docker-ce-cli docker.io 安装docker
sudo apt install docker-ce
Docker 现在应该已安装守护进程已启动并且该进程可以在os重启后自动启动。 检查它是否正在运行
sudo systemctl status dockerOutput ● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2020-05-19 17:00:41 UTC; 17s ago TriggeredBy: ● docker.socket Docs: https://docs.docker.com Main PID: 24321 (dockerd) Tasks: 8 Memory: 46.4M CGroup: /system.slice/docker.service └─24321 /usr/bin/dockerd -H fd:// --containerd/run/containerd/containerd.sock 现在安装 Docker 不仅提供了Docker 服务守护进程还提供 docker 命令行工具或 Docker 客户端。
3.免sudo设置
默认情况下docker命令只能由root用户或docker组中的用户运行该组是在Docker安装过程中自动创建。 如果尝试运行 docker 命令而不使用 sudo 前缀或不在 docker 组中将会获得到如下输出 Output docker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?. See ‘docker run --help’. 如果想避免在运行 docker 命令时输入 sudo需将用户名添加到 docker 组
sudo usermod -aG docker docker要应用新的组成员身份需要注销服务器并重新登录或输入以下内容
su - docker通过输入以下内容确认docker用户现已添加到 docker 组
groupsOutput root docker 4. 使用docker命令
使用 docker 包括向其传递一系列选项和命令后跟参数。 语法采用以下形式
docker [option] [command] [arguments]要查看所有可用的子命令输入
docker从 Docker 19 开始可用子命令的完整列表包括 attach Attach local standard input, output, and error streams to a running containerbuild Build an image from a Dockerfilecommit Create a new image from a containers changescp Copy files/folders between a container and the local filesystemcreate Create a new containerdiff Inspect changes to files or directories on a containers filesystemevents Get real time events from the serverexec Run a command in a running containerexport Export a containers filesystem as a tar archivehistory Show the history of an imageimages List imagesimport Import the contents from a tarball to create a filesystem imageinfo Display system-wide informationinspect Return low-level information on Docker objectskill Kill one or more running containersload Load an image from a tar archive or STDINlogin Log in to a Docker registrylogout Log out from a Docker registrylogs Fetch the logs of a containerpause Pause all processes within one or more containersport List port mappings or a specific mapping for the containerps List containerspull Pull an image or a repository from a registrypush Push an image or a repository to a registryrename Rename a containerrestart Restart one or more containersrm Remove one or more containersrmi Remove one or more imagesrun Run a command in a new containersave Save one or more images to a tar archive (streamed to STDOUT by default)search Search the Docker Hub for imagesstart Start one or more stopped containersstats Display a live stream of container(s) resource usage statisticsstop Stop one or more running containerstag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGEtop Display the running processes of a containerunpause Unpause all processes within one or more containersupdate Update configuration of one or more containersversion Show the Docker version informationwait Block until one or more containers stop, then print their exit codes查看特定命令可用的选项输入docker docker-subcommand --help如要进一步查看上面stop子命令的选项
docker stop --helpUsage: docker stop [OPTIONS] CONTAINER [CONTAINER…] Stop one or more running containers Aliases: docker container stop, docker stop Options: -s, --signal string Signal to send to the container -t, --time int Seconds to wait before killing the container 查看有关 Docker 的系统面信息使用
docker infooutput: Client: Docker Engine - Community Version: 25.0.4 Context: default Debug Mode: false Plugins: buildx: Docker Buildx (Docker Inc.) Version: v0.13.0 Path: /usr/libexec/docker/cli-plugins/docker-buildx compose: Docker Compose (Docker Inc.) Version: v2.24.7 Path: /usr/libexec/docker/cli-plugins/docker-compose Server: Containers: 6 Running: 0 Paused: 0 Stopped: 6 Images: 4 Server Version: 25.0.4 Storage Driver: overlay2 Backing Filesystem: extfs Supports d_type: true Using metacopy: false Native Overlay Diff: true userxattr: false Logging Driver: json-file Cgroup Driver: cgroupfs Cgroup Version: 1 Plugins: Volume: local Network: bridge host ipvlan macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog Swarm: inactive Runtimes: io.containerd.runc.v2 runc Default Runtime: runc Init Binary: docker-init containerd version: ae07eda36dd25f8a1b98dfbf587313b99c0190bb runc version: v1.1.12-0-g51d5e94 init version: de40ad0 Security Options: apparmor seccomp Profile: builtin Kernel Version: 5.4.0-172-generic Operating System: Ubuntu 20.04.6 LTS OSType: linux Architecture: x86_64 CPUs: 1 Total Memory: 1.925GiB Name: anzfam ID: bb7ac293-d8c0-4e8f-ac9b-61a802c06a7c Docker Root Dir: /var/lib/docker Debug Mode: false Experimental: false Insecure Registries: 127.0.0.0/8 Live Restore Enabled: false 5.Images
Docker 容器是从 Docker image构建的。 默认情况下Docker 从 Docker Hub 中提取这些imageDocker Hub 是由 Docker 项目背后的公司 Docker 管理的 Docker registry。 任何人都可以在 Docker Hub 上托管其 Docker image因此大家需要的大多数应用程序和 Linux 发行版都会在那里有托管的image。 注image后面将统一称作镜像 要检查是否可以从 Docker Hub 访问和下载镜像,输入
docker run hello-worldor
docker container run hello-world注意这里列出了两种命令写法前者是旧的命形式后者是新的命令形式这种dockobjectcommand的形式更容易记忆但为了保持向后兼容性Docker 仍然保留了旧的命令形式因此用户可以根据自己的习惯和偏好选择使用哪种形式。 后面的章节中我也会尽量将这两种形式都列出来
输出将表明 Docker 工作正常 Output Unable to find image ‘hello-world:latest’ locally latest: Pulling from library/hello-world 0e03bdcc26d7: Pull complete Digest: sha256:6a65f928fb91fcfbc963f7aa6d57c8eeb426ad9a20c7ee045538ef34847f44f1 Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. … Docker 最初无法在本地找到 “hello-world” 镜像因此它从默认存储库 Docker Hub 下载该镜像。 下载镜像后Docker 从镜像创建一个容器并执行容器内的应用程序并显示消息。
可以使用 docker 命令连同search 子命令来搜索 Docker Hub 上可用的镜像。 例如要搜索 Ubuntu 镜像输入
docker search ubuntu该脚本将抓取 Docker Hub 并返回名称与搜索字符串匹配的所有镜像的列表。 输出将类似于以下内容
NAME DESCRIPTION STARS OFFICIAL
ubuntu Ubuntu is a Debian-based Linux operating sys… 16927 [OK]
neurodebian NeuroDebian provides neuroscience research s… 106 [OK]
websphere-liberty WebSphere Liberty multi-architecture images … 298 [OK]
open-liberty Open Liberty multi-architecture images based… 64 [OK]
ubuntu-upstart DEPRECATED, as is Upstart (find other proces… 115 [OK]
ubuntu-debootstrap DEPRECATED; use ubuntu instead 52 [OK]
ubuntu/nginx Nginx, a high-performance reverse proxy we… 112
ubuntu/squid Squid is a caching proxy for the Web. Long-t… 84
ubuntu/cortex Cortex provides storage for Prometheus. Long… 4在“OFFICIAL ”列中“OK”表示由项目背后的公司构建和支持的镜像。 一旦确定要您想要使用的镜像像后可以使用 pull 子命令将其下载到计算机。 执行以下命令将官方 ubuntu 镜像下载到计算机上
docker pull ubuntu将看到以下输出
Output
Using default tag: latest
latest: Pulling from library/ubuntu
d51af753c3d3: Pull complete
fc878cd0a91c: Pull complete
6154df8ff988: Pull complete
fee5db0ff82f: Pull complete
Digest: sha256:747d2dbbaaee995098c9792d99bd333c6783ce56150d1b11e333bbceed5c54d7
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest下载镜像后您可以通过 run 子命令使用下载的镜像来运行容器。 如同在 hello-world 示例中看到的如果当docker 连同他的子命令一起执行时镜像时尚未被下载则 Docker 客户端将首先下载镜像然后使用它运行容器。
要查看已下载到您的计算机的镜像输入
docker imagesor
docker image ls输出将类似于以下内容
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest ca2b0f26964c 9 days ago 77.9MB
hello-world latest d2c94e258dcb 10 months ago 13.3kB正如将在后面看到的用于运行容器的镜像可以被修改并用于生成新镜像然后可以将其上传术语“push”到 Docker Hub 或其他 Docker registry。
6.运行docker容器
在上面运行的 hello-world 容器是一个容器示例仅在发出测试消息后运行并退出的。 功能简单实际上容器比这个更有用而且可以与之交互。 类似于虚拟机只是更加节省资源。 作为示例我们将使用新的 Ubuntu 镜像运行一个容器。 -i 和 -t 开关的组合可以使用 shell 访问容器交互
docker run -it ubuntuor
docker container run -it unbuntu命令提示符应该会发生变化反映现在正在容器内工作将具有以下形式 Output rootd9b100f2f636:/# 记下命令提示符中的容器 ID。 在此示例中它是 d9b100f2f636。 稍后当想要删除容器时将需要该容器 ID 来识别该容器。 现在可以在容器内运行任何命令。 例如让我们更新容器内的package数据库。 不需要在任何命令前加上 sudo 前缀因为已经以 root 用户身份在容器内进行操作
apt update然后在其中安装任何应用程序。 我们现在尝试安装 Node.js
apt install nodejs这将会从官方 Ubuntu 存储库将 Node.js 安装到容器中。 安装完成后验证 Node.js 是否已安装
node -vOutput v10.19.0 在容器内所做的任何变更将仅套用于该容器。 要退出容器在提示符下输入 exit。
7. 管理docker容器
使用 Docker 一段时间后计算机上将有许多active正在运行和inactive容器。 要查看active状态的容器使用
docker psor
docker container lsoutput如下
Output
CONTAINER ID IMAGE COMMAND CREATED在本文中启动了两个容器 一个来自 hello-world 镜像另一个来自 ubuntu 镜像。 两个容器都不再运行但它们仍然存在于系统上。
要查看所有容器活动和非活动需要使用 -a 开关否则默认只显示running状态的容器
docker ps -aor
docker ps container ls -aOutput:
1c08a7a0d0e4 ubuntu /bin/bash 2 minutes ago Exited (0) 8 seconds ago quizzical_mcnulty
a707221a5f6c hello-world /hello 6 minutes ago Exited (0) 6 minutes ago youthful_curie
查看创建的最新容器使用 -l 开关
docker ps -lor
docker container ls -lCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1c08a7a0d0e4 ubuntu /bin/bash 2 minutes ago Exited (0) 40 seconds ago quizzical_mcnulty要启动已停止的容器使用 docker start后跟容器 ID 或容器名称。 现在尝试启动 ID 为 1c08a7a0d0e4 的基于 Ubuntu 的容器
docker start 1c08a7a0d0e4or
docker container start 1c08a7a0d0e4容器将启动可以使用 docker ps 查看其状态
Output
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1c08a7a0d0e4 ubuntu /bin/bash 3 minutes ago Up 5 seconds要停止正在运行的容器使用 docker stop后跟container_ID 或名称。 这次我们将使用 Docker 为容器分配的名称即 quizzical_mcnulty
docker stop quizzical_mcnultyor
docker container stop quizzical_mcnulty一旦决定不再需要容器使用 docker rm 命令删除它再次使用容器 ID 或名称。 使用 docker ps -a 命令查找与 hello-world 镜像关联的容器 ID 或名称并将其删除。
docker rm youthful_curieor
docker container rm youthful_curie当然也可以启动一个新容器并使用 --name 开关为其命名。 还可以使用 --rm 开关创建一个容器该容器在停止时会自行删除容器。
8.创建image
当启动一个 Docker 镜像时可以像在虚拟机中一样创建、修改和删除文件。且所做的更改只会应用于该容器。也可以启动和停止它但一旦使用 docker rm 命令销毁它这些更改将永久丢失。 本节将展示如何将使用中的容器保存为一个新的 Docker 镜像。 在 Ubuntu 容器中安装 Node.js 后现在有一个运行在镜像之上的容器但该容器与前面用于创建它的原始镜像不同。但是有可能希望以后将这个 Node.js 容器作为新镜像的基础。 使用以下命令将更改提交到新的 Docker 镜像实例。从容器创建一个新的镜像
docker commit -m What you did to the image -a Author Name container_id repository/new_image_nameor
docker container commit -m What you did to the image -a Author Name container_id repository/new_image_name-m 开关用于commit message提交时的说明文字,帮助其他人了解这个镜像-a 用于指定作者。container_id 是您在本章前面启动交互式 Docker 会话时记下的 ID。repository/new_image_name,除非在 Docker Hub 上创建了其他repository否则repository通常是您的 Docker Hub 用户名。 例如对于用户 sammy容器 ID 为 d9b100f2f636命令为
docker commit -m added Node.js -a sammy d9b100f2f636 sammy/ubuntu-nodejsor
docker container commit -m added Node.js -a sammy d9b100f2f636 sammy/ubuntu-nodejs当提交镜像时新镜像将保存在计算机本地。 接下来我们将镜像推送到 Docker registry例如 Docker Hub以便其他人可以访问它。
再次list docker images ,将显示新镜像像及其派生它的旧镜像
docker imagesor
docker image lsOutput REPOSITORY TAG IMAGE ID CREATED SIZE sammy/ubuntu-nodejs latest 7c1f35226ca6 7 seconds ago 179MB … 在此示例中ubuntu-nodejs 是新镜像它源自 Docker Hub 中的现有 ubuntu 镜像。 大小差异反映了所做的改变。 在这个例子中变化是安装了 NodeJS。 因此下次需要使用预装 NodeJS 的 Ubuntu 来运行容器时可以只使用新镜像。 还可以从 Dockerfile 构建镜像这样就可以在新镜像中自动安装软件。 关于dockerfile构建镜像可以参考其他文章
9.Push Image
从现有镜像创建新镜像后下一个步骤是与选定的几个朋友、Docker Hub 上的整个世界或您有权访问的其他 Docker registry共享它。 要将镜像推送到 Docker Hub 或任何其他 Docker registry必须在docker hub官网上注册一个账户。 这里展示怎样将Docker 镜像推送到 Docker Hub。 要了解如何创建自己的私有 Docker registry请查看如何在设置私有 Docker registry。
要推送镜像请首先登录 Docker Hub。
docker login -u docker-registry-username系统将提示使用 Docker Hub 密码进行身份验证。 如果指定了正确的密码身份验证应该会成功。
注意如果您的 Docker registry用户名与用于创建镜像的本地用户名不同将必须使用您的registry用户名来tag镜像。 对于最后一步中给出的示例可以输入
docker tag sammy/ubuntu-nodejs docker-registry-username/ubuntu-nodejs假如我的本地用户名是sammy,而docker hub用户名是lakerhu则应该tag如下
docker tag sammy/ubuntu-nodejs tommy/ubuntu-nodejs然后使用以下方式push 这个镜像
docker push docker-registry-username/docker-image-name要将 ubuntu-nodejs 镜像推送到 lakerhu存储库命令为
docker push lakerhu/nodejsor
docker image push lakerhu/nodejsOutput Using default tag: latest The push refers to repository [docker.io/lakerhu/nodejs] 9ba80eacb2ad: Pushing 14.42MB/132.9MB 9ba80eacb2ad: Pushing 89.34MB/132.9MB 9ba80eacb2ad: Pushed …
将镜像推送到registry后它应该列在您帐户的仪表板上如下图所示
如果推送尝试导致此类错误则可能没有登录 Output The push refers to a repository [docker.io/lakerhu/ubuntu-nodejs] e3fbbfb44187: Preparing 5f70bf18a086: Preparing a3b5c80a4eba: Preparing 7f18b442972b: Preparing 3ce512daaf78: Preparing 7aae4540b42d: Waiting unauthorized: authentication required 使用 docker login 登录并重复推送尝试。 然后验证它是否存在于您的 Docker Hub 存储库页面上。
现在可以使用 docker pull sammy/ubuntu-nodejs 将镜像拉取到新机器并使用它来运行新容器。
docker pull lakerhu/nodejsor
docker image pull lakerhu/nodejs
文章转载自: http://www.morning.lsfzq.cn.gov.cn.lsfzq.cn http://www.morning.ndzhl.cn.gov.cn.ndzhl.cn http://www.morning.kghhl.cn.gov.cn.kghhl.cn http://www.morning.pdkht.cn.gov.cn.pdkht.cn http://www.morning.fkgqn.cn.gov.cn.fkgqn.cn http://www.morning.rjbb.cn.gov.cn.rjbb.cn http://www.morning.xfrqf.cn.gov.cn.xfrqf.cn http://www.morning.yznsx.cn.gov.cn.yznsx.cn http://www.morning.yfzld.cn.gov.cn.yfzld.cn http://www.morning.hxxwq.cn.gov.cn.hxxwq.cn http://www.morning.jgcrr.cn.gov.cn.jgcrr.cn http://www.morning.tlbdy.cn.gov.cn.tlbdy.cn http://www.morning.qshxh.cn.gov.cn.qshxh.cn http://www.morning.sjwws.cn.gov.cn.sjwws.cn http://www.morning.rhmk.cn.gov.cn.rhmk.cn http://www.morning.wfjrl.cn.gov.cn.wfjrl.cn http://www.morning.bnlsd.cn.gov.cn.bnlsd.cn http://www.morning.kjdxh.cn.gov.cn.kjdxh.cn http://www.morning.nrfqd.cn.gov.cn.nrfqd.cn http://www.morning.pccqr.cn.gov.cn.pccqr.cn http://www.morning.ngjpt.cn.gov.cn.ngjpt.cn http://www.morning.hcrxn.cn.gov.cn.hcrxn.cn http://www.morning.bcdqf.cn.gov.cn.bcdqf.cn http://www.morning.gswfs.cn.gov.cn.gswfs.cn http://www.morning.dbphz.cn.gov.cn.dbphz.cn http://www.morning.jzmqk.cn.gov.cn.jzmqk.cn http://www.morning.lwmzp.cn.gov.cn.lwmzp.cn http://www.morning.hgscb.cn.gov.cn.hgscb.cn http://www.morning.bcnsl.cn.gov.cn.bcnsl.cn http://www.morning.crqpl.cn.gov.cn.crqpl.cn http://www.morning.ckhyj.cn.gov.cn.ckhyj.cn http://www.morning.dytqf.cn.gov.cn.dytqf.cn http://www.morning.qzbwmf.cn.gov.cn.qzbwmf.cn http://www.morning.jkszt.cn.gov.cn.jkszt.cn http://www.morning.zdzgf.cn.gov.cn.zdzgf.cn http://www.morning.wjzzh.cn.gov.cn.wjzzh.cn http://www.morning.fhkr.cn.gov.cn.fhkr.cn http://www.morning.pgkpt.cn.gov.cn.pgkpt.cn http://www.morning.yrrnx.cn.gov.cn.yrrnx.cn http://www.morning.ypktc.cn.gov.cn.ypktc.cn http://www.morning.mfbzr.cn.gov.cn.mfbzr.cn http://www.morning.qglqb.cn.gov.cn.qglqb.cn http://www.morning.tmcmj.cn.gov.cn.tmcmj.cn http://www.morning.crsqs.cn.gov.cn.crsqs.cn http://www.morning.nqcts.cn.gov.cn.nqcts.cn http://www.morning.zpkfb.cn.gov.cn.zpkfb.cn http://www.morning.dkqr.cn.gov.cn.dkqr.cn http://www.morning.ngcsh.cn.gov.cn.ngcsh.cn http://www.morning.jfjpn.cn.gov.cn.jfjpn.cn http://www.morning.dmlgq.cn.gov.cn.dmlgq.cn http://www.morning.symgk.cn.gov.cn.symgk.cn http://www.morning.xrpjr.cn.gov.cn.xrpjr.cn http://www.morning.spghj.cn.gov.cn.spghj.cn http://www.morning.rlpmy.cn.gov.cn.rlpmy.cn http://www.morning.ydtdn.cn.gov.cn.ydtdn.cn http://www.morning.kyzxh.cn.gov.cn.kyzxh.cn http://www.morning.hqlnp.cn.gov.cn.hqlnp.cn http://www.morning.lwzgn.cn.gov.cn.lwzgn.cn http://www.morning.rrms.cn.gov.cn.rrms.cn http://www.morning.gczzm.cn.gov.cn.gczzm.cn http://www.morning.kybjr.cn.gov.cn.kybjr.cn http://www.morning.bnlsd.cn.gov.cn.bnlsd.cn http://www.morning.ctxt.cn.gov.cn.ctxt.cn http://www.morning.btns.cn.gov.cn.btns.cn http://www.morning.dfrenti.com.gov.cn.dfrenti.com http://www.morning.ygxf.cn.gov.cn.ygxf.cn http://www.morning.hwpcm.cn.gov.cn.hwpcm.cn http://www.morning.nmngq.cn.gov.cn.nmngq.cn http://www.morning.kwxr.cn.gov.cn.kwxr.cn http://www.morning.bfmrq.cn.gov.cn.bfmrq.cn http://www.morning.bwjws.cn.gov.cn.bwjws.cn http://www.morning.qfqld.cn.gov.cn.qfqld.cn http://www.morning.rmyt.cn.gov.cn.rmyt.cn http://www.morning.lqjlg.cn.gov.cn.lqjlg.cn http://www.morning.trkhx.cn.gov.cn.trkhx.cn http://www.morning.wsjnr.cn.gov.cn.wsjnr.cn http://www.morning.jrlgz.cn.gov.cn.jrlgz.cn http://www.morning.ltpph.cn.gov.cn.ltpph.cn http://www.morning.wxqmc.cn.gov.cn.wxqmc.cn http://www.morning.rptdz.cn.gov.cn.rptdz.cn