Docker入门

Docker概述

为什么会出现Docker?

*两套环境,配置繁琐,集群搭错一个地方只有推倒重来,重复工作太多*

Docker的思想就是隔离。

JRE–多个应用(端口冲突)----原来都是交叉的!

隔离:Docker核心思想!打包装箱!每个箱子都是互相隔离的。

Docker通过隔离机制,可以将服务器利用到极致!

本质:所有的技术的出现都是因为产生了问题,去解决问题才出现的。

虚拟机:在windows中装一个VMware,通过这个软件我们可以虚拟出来一台或地平台电脑!笨重!

虚拟机是属于悉尼话技术,Docker容器技术,也是一种虚拟化技术!

VM: linux centos原生镜像(一台电脑)隔离,需要开机多个虚拟机! 最小几个G,开机要几分钟

docker:隔离,镜像(只要最核心的环境,最小为4M,在此基础上装所需要的软件+jdk+mysql)十分的小巧,运行镜像就可以启动! 最小几M,秒级启动

Docker是基于Go语言开发的!,开源项目!

Docker文档地址:https://docs.docker.com/

Docker仓库地址:https://hub.docker.com/

Docker能干嘛

虚拟机技术:这里的lib是运行所需要的库,可以更改
在这里插入图片描述

虚拟机缺点:

  1. 资源占用十分多(因为是一个电脑一个电脑的虚拟)

  2. 冗余步骤多

  3. 启动慢

容器化技术

容器化技术不是模拟的一个完整的操作系统

在这里插入图片描述

比较虚拟机和Docker的不同

传统虚拟机,虚拟出一整套硬件,运行一个完整的操作系统,然后再这个系统上安装和运行软件

容器是的应用直接运行在宿主机的内容,容器是没有自己的内核的,也没有虚拟的硬件,所以就轻便了,每个容器间是互相隔离,每个容器内都有一个属于自己的文件系统,互不影响

在这里插入图片描述

Docker的基本组成

在这里插入图片描述

*镜像(image):*

Docker镜像就好比是一个模板,通过这个模板来创建容器服务,tomcat镜像===>run===>tomcat01容器(提供服务器),通过这个镜像可以创造多个容器(最终服务运行或项目运行就是在容器中)

*容器(container)*

Docker利用容器技术,独立运行一个或者一组应用,通过镜像来创建的。

启动,停止,删除,基本命令。

目前就开源把这个容器理解为就是一个简易的Linux系统

*仓库(repository):*

仓库就是存放镜像的地方。

仓库分为公有仓库和私有仓库

Docker Hub(默认是国外的下载镜像很慢)

阿里云…都有容器服务器(配置镜像加速)

总结:从仓库远程拉取一个镜像到本地,run镜像启动一个容器

底层原理

Docker是怎么工作的?

Docker是一个Client-Server结构的系统,Docker的守护进程运行在主机上,通过Socket客户端访问!

DockerServer接受到Docker-Client的指令,就会执行这个命令

Docker为什么比VM快?

1.Docker比VM有更少的抽象层

2.Docker利用宿主机的内核,VM是需要Guest OS(再搭建一个这样的环境)

所以说,新建一个容器的时候,docker不需要像虚拟机一样重新加载一个操作系统内核,避免引导,虚拟机加载的是Guest OS,分钟级别的,而Docker是利用宿主机的操作系统,省略了这个复杂的过程,秒级!

在这里插入图片描述

Docker安装

内核是3.10以上的

uname -r

  1. 卸载旧的版本(粘贴,复制)
yum remove docker \​         docker-client \​         docker-client-latest \​         docker-common \​         docker-latest \​         docker-latest-logrotate \​         docker-logrotate \​         docker-engine
  1. 需要安装包
yum install -y yum-utils
  1. 设置镜像的仓库,这里的镜像地址更换为了阿里云
yum-config-manager \--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repoyum makecache fast			#更新索引再去安装
  1. 安装docker相关的内容,docker-ce 社区版 ee企业版
	yum install docker-ce docker-ce-cli containerd.io
  1. 启动Docker
	systemctl start docker
  1. 查看是否安装成功
	docker versiondocker run hello-world
  1. 查看下载的镜像
docker images

在这里插入图片描述

卸载Docker:

  1. 卸载依赖
yum remove docker-ce docker-ce-cli containerd.io
  1. 删除目录
rm -rf /var/lib/docker

1.配置阿里云镜像加速器

https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

2.配置使用

sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF'{ "registry-mirrors": ["https://u4yijdry.mirror.aliyuncs.com"]}EOFsudo systemctl daemon-reloadsudo systemctl restart docker

Docker的常用命令:

帮助命令:

docker version			#显示docker的版本信息docker info				#显示docker的系统信息,包括镜像和容器的数量docker 命令 --help

镜像命令

[root@docker ~]# docker imagesREPOSITORY  		TAG    IMAGE ID       CREATED       SIZEhello-world     latest    bf756fb1ae65     5 months ago     13.3kB

#解释

REPOSITORY 镜像的仓库

TAG 镜像的标签

IMAGE ID 镜像的ID

CREATED 镜像的创建时间

SIZE 镜像的大小

#可选项

-a	--all		#列出所有镜像-q	--quiet	#只显示镜像的IDdocker search 镜像		#搜索镜像

#下载镜像*

docker pull mysql[:tag]
[root@docker ~]# docker pull mysqlUsing default tag: latest				#如果不写tag,默认就是latestlatest: Pulling from library/mysql		8559a31e96f4: Pull complete 			#分层下载,docker image的核心,联合文件系统d51ce1c2e575: Pull complete c2344adc4858: Pull complete fcf3ceff18fc: Pull complete 16da0c38dc5b: Pull complete b905d1797e97: Pull complete 4b50d1c6b05c: Pull complete c75914a65ca2: Pull complete 1ae8042bdd09: Pull complete 453ac13c00a3: Pull complete 9e680cd72f08: Pull complete a6b5dc864b6c: Pull complete Digest: sha256:8b7b328a7ff6de46ef96bcf83af048cb00a1c86282bfca0cb119c84568b4caf6	#签名Status: Downloaded newer image for mysql:latestdocker.io/library/mysql:latest			#真实地址# 两者相同
docker pull mysqldocker pull docker.io/library/mysql:latest

指定版本下载:

docker pull mysql:5.7docker rmi -f 镜像id			#删除指定镜像docker rmi -f 镜像id 镜像id 镜像id		#删除多个镜像docker rmi -f $(docker images -aq)		#删除全部镜像

容器命令

docker pull centos 	#下载一个最新的centos镜像
docker run [可选参数] image\#参数说明--name=”Name”		容器名字,tomcat01,tomcat02 ,用来区分容器-d					后台方式运行-it					使用交互方式运行,进入容器查看内容-p					指定容器的端口	-p	8080:8080-p 					ip:主机端口:容器端口-p 					主机端口:容器端口-p 					容器端口-P					随机指定端口\#测试,启动并进入容器docker run -it 容器id/镜像名	/bin/bash

*退出容器*

[root@4bb285138de4 /]# exit #直接停止容器并退出

[root@docker ~]#

ctrl+P+Q #容器不停止退出

列出所有运行的容器

# docker ps 命令#	列出当前正在运行的容器-a	#	列出当前正在运行的容器+历史上运行过的容器-n=? #	显示最近创建的容器-q	#	显示容器的编号

[root@docker ~]# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

[root@docker ~]# docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

4bb285138de4 831691599b88 “/bin/bash” 8 minutes ago Exited (0) 5 minutes ago musing_ganguly

c5dc2112d9a9 bf756fb1ae65 “/hello” 3 hours ago Exited (0) 3 hours ago vibrant_wescoff

5b97245a8bc3 bf756fb1ae65 “/hello” 3 hours ago Exited (0) 3 hours ago vigilant_hertz

[root@docker ~]# docker ps -qa

4bb285138de4

c5dc2112d9a9

5b97245a8bc3

删除容器

docker rm 容器id				#删除指定容器,不能删除正在运行的容器docker rm -f $(docker ps -aq)		#删除全部容器

启动和停止容器的操作

docker start 容器id			#启动容器docker restart 容器id			#重启容器docker stop 容器id			#停止当前正在运行的容器docker kill 容器id			#强制停止当前容器

查看日志

docker logs -tf 容器id 				#显示日志docker logs -tf --tail number 容器id	#显示日志条数,这里用number控制条数docker logs -tf --tail 10 dce7b8628bf

查看容器中的进程信息

[root@docker ~]# docker top 4bb285138de4

UID PID PPID C STIME TTY TIME CMD

root 8900 8884 1 22:36 pts/0 00:00:00 /bin/bash

查看镜像源数据

# 命令

docker inspect 容器id

#测试

[root@docker ~]# docker inspect 4bb285138de4[{"Id": "4bb285138de45ed2dda34546ef8547d74fb5d5922acd3624ea9e3b93f53ded04",​    "Created": "2020-06-29T10:18:02.112722322Z",​    "Path": "/bin/bash",​    "Args": [],​    "State": {"Status": "running",​      "Running": true,​      "Paused": false,​      "Restarting": false,​      "OOMKilled": false,​      "Dead": false,​      "Pid": 8900,​      "ExitCode": 0,​      "Error": "",​      "StartedAt": "2020-06-30T02:36:03.304931826Z",​      "FinishedAt": "2020-06-29T10:20:35.269240929Z"},​    "Image": "sha256:831691599b88ad6cc2a4abbd0e89661a121aff14cfa289ad840fd3946f274f1f",​    "ResolvConfPath": "/var/lib/docker/containers/4bb285138de45ed2dda34546ef8547d74fb5d5922acd3624ea9e3b93f53ded04/resolv.conf",​    "HostnamePath": "/var/lib/docker/containers/4bb285138de45ed2dda34546ef8547d74fb5d5922acd3624ea9e3b93f53ded04/hostname",​    "HostsPath": "/var/lib/docker/containers/4bb285138de45ed2dda34546ef8547d74fb5d5922acd3624ea9e3b93f53ded04/hosts",​    "LogPath": "/var/lib/docker/containers/4bb285138de45ed2dda34546ef8547d74fb5d5922acd3624ea9e3b93f53ded04/4bb285138de45ed2dda34546ef8547d74fb5d5922acd3624ea9e3b93f53ded04-json.log",​    "Name": "/musing_ganguly",​    "RestartCount": 0,​    "Driver": "overlay2",​    "Platform": "linux",​    "MountLabel": "",​    "ProcessLabel": "",​    "AppArmorProfile": "",​    "ExecIDs": null,​    "HostConfig": {"Binds": null,​      "ContainerIDFile": "",​      "LogConfig": {"Type": "json-file",​        "Config": {}},​      "NetworkMode": "default",​      "PortBindings": {},​      "RestartPolicy": {"Name": "no",​        "MaximumRetryCount": 0​      },​      "AutoRemove": false,​      "VolumeDriver": "",​      "VolumesFrom": null,​      "CapAdd": null,​      "CapDrop": null,​      "Capabilities": null,​      "Dns": [],​      "DnsOptions": [],​      "DnsSearch": [],​      "ExtraHosts": null,​      "GroupAdd": null,​      "IpcMode": "private",​      "Cgroup": "",​      "Links": null,​      "OomScoreAdj": 0,​      "PidMode": "",​      "Privileged": false,​      "PublishAllPorts": false,​      "ReadonlyRootfs": false,​      "SecurityOpt": null,​      "UTSMode": "",​      "UsernsMode": "",​      "ShmSize": 67108864,​      "Runtime": "runc",​      "ConsoleSize": [​        0,​        0​      ],​      "Isolation": "",​      "CpuShares": 0,​      "Memory": 0,​      "NanoCpus": 0,​      "CgroupParent": "",​      "BlkioWeight": 0,​      "BlkioWeightDevice": [],​      "BlkioDeviceReadBps": null,​      "BlkioDeviceWriteBps": null,​      "BlkioDeviceReadIOps": null,​      "BlkioDeviceWriteIOps": null,​      "CpuPeriod": 0,​      "CpuQuota": 0,​      "CpuRealtimePeriod": 0,​      "CpuRealtimeRuntime": 0,​      "CpusetCpus": "",​      "CpusetMems": "",​      "Devices": [],​      "DeviceCgroupRules": null,​      "DeviceRequests": null,​      "KernelMemory": 0,​      "KernelMemoryTCP": 0,​      "MemoryReservation": 0,​      "MemorySwap": 0,​      "MemorySwappiness": null,​      "OomKillDisable": false,​      "PidsLimit": null,​      "Ulimits": null,​      "CpuCount": 0,​      "CpuPercent": 0,​      "IOMaximumIOps": 0,​      "IOMaximumBandwidth": 0,​      "MaskedPaths": ["/proc/asound",​        "/proc/acpi",​        "/proc/kcore",​        "/proc/keys",​        "/proc/latency_stats",​        "/proc/timer_list",​        "/proc/timer_stats",​        "/proc/sched_debug",​        "/proc/scsi",​        "/sys/firmware"],​      "ReadonlyPaths": ["/proc/bus",​        "/proc/fs",​        "/proc/irq",​        "/proc/sys",​        "/proc/sysrq-trigger"]},​    "GraphDriver": {"Data": {"LowerDir": "/var/lib/docker/overlay2/e4e3e63ccccc35fdca2128c7744aec95e5d9781177edcc86d47b43f543f67ef2-init/diff:/var/lib/docker/overlay2/40b38560c9a02a744c2d0872ab2f4f93333ad65b400eb47b3fbb438b37aee7e1/diff",​        "MergedDir": "/var/lib/docker/overlay2/e4e3e63ccccc35fdca2128c7744aec95e5d9781177edcc86d47b43f543f67ef2/merged",​        "UpperDir": "/var/lib/docker/overlay2/e4e3e63ccccc35fdca2128c7744aec95e5d9781177edcc86d47b43f543f67ef2/diff",​        "WorkDir": "/var/lib/docker/overlay2/e4e3e63ccccc35fdca2128c7744aec95e5d9781177edcc86d47b43f543f67ef2/work"},​      "Name": "overlay2"},​    "Mounts": [],​    "Config": {"Hostname": "4bb285138de4",​      "Domainname": "",​      "User": "",​      "AttachStdin": true,​      "AttachStdout": true,​      "AttachStderr": true,​      "Tty": true,​      "OpenStdin": true,​      "StdinOnce": true,​      "Env": ["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"],​      "Cmd": ["/bin/bash"],​      "Image": "831691599b88",​      "Volumes": null,​      "WorkingDir": "",​      "Entrypoint": null,​      "OnBuild": null,​      "Labels": {"org.label-schema.build-date": "20200611",​        "org.label-schema.license": "GPLv2",​        "org.label-schema.name": "CentOS Base Image",​        "org.label-schema.schema-version": "1.0",​        "org.label-schema.vendor": "CentOS"}},​    "NetworkSettings": {"Bridge": "",​      "SandboxID": "6f0dae1a8a16719e2bda8f89811f3b71b43427286cd8b19cc7b65d5be420db15",​      "HairpinMode": false,​      "LinkLocalIPv6Address": "",​      "LinkLocalIPv6PrefixLen": 0,​      "Ports": {},​      "SandboxKey": "/var/run/docker/netns/6f0dae1a8a16",​      "SecondaryIPAddresses": null,​      "SecondaryIPv6Addresses": null,​      "EndpointID": "437e8b8ebf9b331a8ae0135dba22bb9d477bebff6ef8c52a2b6d7dcdd42bcd6e",​      "Gateway": "172.17.0.1",​      "GlobalIPv6Address": "",​      "GlobalIPv6PrefixLen": 0,​      "IPAddress": "172.17.0.2",​      "IPPrefixLen": 16,​      "IPv6Gateway": "",​      "MacAddress": "02:42:ac:11:00:02",​      "Networks": {"bridge": {"IPAMConfig": null,​          "Links": null,​          "Aliases": null,​          "NetworkID": "2dc48a480bde9e7b163036eb12d8553dc6ed036754db8b16c9d9641631a51951",​          "EndpointID": "437e8b8ebf9b331a8ae0135dba22bb9d477bebff6ef8c52a2b6d7dcdd42bcd6e",​          "Gateway": "172.17.0.1",​          "IPAddress": "172.17.0.2",​          "IPPrefixLen": 16,​          "IPv6Gateway": "",​          "GlobalIPv6Address": "",​          "GlobalIPv6PrefixLen": 0,​          "MacAddress": "02:42:ac:11:00:02",​          "DriverOpts": null​        }}}}]

进入当前正在运行的容器

# 我们通常容器都是使用后台方式运行的,需要进入容器,修改一些配置

#方法一:

#命令

docker exec -it 容器id /bin/bash

#测试

[root@docker ~]# docker psCONTAINER ID	 IMAGE			COMMAND	CREATED	STATUS	PORTS        NAMES4bb285138de4	831691599b88 	/bin/bash" 	17 hours ago 	Up15minutes	musing_ganguly[root@docker ~]# docker exec -it 4bb285138de4 /bin/bash[root@4bb285138de4 /]# ps -efUID     PID  PPID  C STIME TTY      TIME CMDroot      1    0  0 02:36 pts/0   00:00:00 /bin/bashroot     14    0  0 02:51 pts/1   00:00:00 /bin/bashroot     28   14  0 02:52 pts/1   00:00:00 ps -ef

#方法二:

docker attach 容器id

#测试

[root@docker ~]# docker attach 4bb285138de4

[root@4bb285138de4 /]# ls

bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var

docker exec		#进入容器后开启一个新的终端,可以在里面操作(常用)dockers attach	#进入容器正在执行的终端,不会启动新的进程!

从容器内拷贝文件到主机上

docker cp 容器id:容器内路径	目的主机路径
### #进入文件内部
[root@docker ~]# docker attach 4bb285138de4
\#在容器内新建一个文件
[root@4bb285138de4 home]# touch php
[root@4bb285138de4 home]# ls
php
[root@4bb285138de4 home]# exit  
exit
[root@docker ~]# docker ps
CONTAINER ID     IMAGE        COMMAND       CREATED       STATUS        PORTS        NAMES\#将文件拷贝出来到主机上
[root@docker ~]# docker cp 4bb285138de4:/home/php /home/
[root@docker ~]# cd /home/
[root@docker home]# ll
total 0
-rw-r--r--. 1 root root 0 Jun 29 23:02 java
-rw-r--r--. 1 root root 0 Jun 29 23:03 php

在这里插入图片描述

小结命令:


实战练习(命令)

1. Docker安装nginx

#1.搜索镜像	search	可以去官网看帮助文档
#2.下载镜像	pull
#3.运行测试
[root@docker ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
684d9e6fe265        nginx               "/docker-entrypoint.…"   12 seconds ago      Up 11 seconds       80/tcp              nginx_02
ea6c5880e382        centos              "/bin/bash"              4 hours ago         Up 4 hours                              festive_curie
[root@docker ~]# docker stop 684d9e6fe265
684d9e6fe265
#	-d	后台运行
#	--name	给容器取名字
#	-p	宿主机端口:容器内部端口
[root@docker ~]# docker run -d --name nginx_03 -p 3333:80 nginx
ee42a7ca71c3abdac85d57c0dfb8628ad05ff04c97fef13ab3e0a1b03797d225
[root@docker ~]# curl localhost:3333<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>body {width: 35em;margin: 0 auto;font-family: Tahoma, Verdana, Arial, sans-serif;}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p><p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p></body>
</html>
# 进入容器
[root@docker ~]# docker exec -it nginx_03 /bin/bash
root@ee42a7ca71c3:/# whereis nginx
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
root@ee42a7ca71c3:/# cd /etc/nginx/
root@ee42a7ca71c3:/etc/nginx# ls
conf.d	fastcgi_params	koi-utf  koi-win  mime.types  modules  nginx.conf  scgi_params	uwsgi_params  win-utf

2. 安装tomcat

# 官方的使用
docker run -it --rm tomcat:9.0
#我们之前的启动都是后台,停止了之后,容器还是可以查到	docker run -it --rm,一般用来测试,用完就删除,有点像闪照,看了就删除照片那种# 下载启动
docker run -d -p 3355:8080 --name tomcat01 tomcat# 测试访问没有问题
[root@docker ~]# docker run -d -p 3355:8080 --name tomcat2 tomcat
027d4e9990ef8d5121de2830acd8a86a82827987aa32ad5b9a3868644c6d823e
[root@docker ~]# docker exec -it tomcat2 /bin/bash404
# 发现问题:1.Linux命令少了	2.没有webapps,阿里云镜像的原因,默认是最小的镜像,所以不必要的都剔除掉了
# 保证最小可运行环境!解决:将webapps.dist目录下的文件copy到webapps或者将webapps.dist改名为webapps

问题

[root@docker ~]# docker run -d -p 3355:8080 --name tomcat1 tomcat
f667afe1fd92ccc511a718c4b785ea0759aeb95320379d2eca94c2d78460d156
docker: Error response from daemon: driver failed programming external connectivity on endpoint tomcat1 (d1bf00f22f86648a1a301376da8b802eece1d8727c981d2a267a33febf357215):  (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 3355 -j DNAT --to-destination 172.17.0.3:8080 ! -i docker0: iptables: No chain/target/match

解决办法:自定义docker连接断掉了,重启一下docker服务

3. 部署ES+kibana

# es	暴露的端口很多!
# es	十分的耗内存
# es	数据一般需要放置到安全目录!挂载
--net somenetwork	?	是一个网络配置#下载启动es
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2# 启动了 linux就卡住了 es是非常消耗内存的#查看cpu负载 docker stats	(图在下面)#	测试一下es是否成功[root@docker ~]# curl localhost:9200
{"name" : "d0334d25bbef","cluster_name" : "docker-cluster","cluster_uuid" : "ag11yTCjQQGzAlWFhEbpHQ","version" : {"number" : "7.6.2","build_flavor" : "default","build_type" : "docker","build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f","build_date" : "2020-03-26T06:34:37.794943Z","build_snapshot" : false,"lucene_version" : "8.4.0","minimum_wire_compatibility_version" : "6.8.0","minimum_index_compatibility_version" : "6.0.0-beta1"},"tagline" : "You Know, for Search"
}

# LIMIT:总共内存# MEN USAGE:容器占用内存,可以看到es是占用的非常高了# 增加内存的限制,修改配置文件 -e 环境配置修改
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPS="-Xms64m -Xmx512m" elasticsearch:7.6.2

作业:使用kibana连接es?思考网络是如何连接的?

image-20200701105051699.png

可视化

portainer(先用这个)

 docker run -d -p 8080:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer

Rancher(CI/CD再用)

什么是Portainer?

Docker图形化界面管理工具!提供一个后台面板供我们操作!

 docker run -d -p 8080:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer# 访问测试# 浏览器访问 192.168.0.104:8080

选择本地

在这里插入图片描述

Docker镜像

镜像是什么?

镜像是一种轻量级,可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码,运行时,库,环境变量和配置文件

如何得到镜像

​ ·从远程仓库下载

​ ·朋友拷贝给你

​ ·自己制作一个镜像DockerFile

Docker镜像加载原理

UnioFS(联合文件系统)

我们下载的时候看到的一层层就是这个东西(layer层)!
image-20200701114413217.png

Docker镜像加载原理

docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统UnionFS

bootfs主要包含bootloader(系统开机引导文件)kernel(内核)bootloader主要是引导加载kernel,Linux刚启动会加载bootfs文件系统,在Docker镜像的最底层是bootfs。这一层与我们典型的Linux/Unix系统是一样的,包含boot加载器的内核。当bootfs加载完成之后整个内核就都在内存中了,此时内存的使用权已经由bootfs转交给内核,此时系统也会卸载bootfs。

rootfs,在bootfs之上,包含的就是典型Linux系统中的/dev,/proc,/bin,/etc等标准目录和文件,rootfs就是各种不同的操作系统发行版,比如Ubuntu,Centos等等

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u0aC7Grn-1594117347588)(D:\Ty image\image-20200701115335574.png)]

对于精简的OS,rootfs可以很小,只需要报刊最基本的命令,工具和库就可以了,因为底层直接用Host的Kernel,自己只需要提供rootfs就可以了,由此课件对于不同的linux发行版,bootfs基本是一致的,rootfs会有差别,因此不同的发行版可以共用bootfs!!!

虚拟机是分钟级,容器是秒级启动!!!

在这里插入图片描述

层级:最底层是bootfs引导加载操作系统->rootfs加载操作系统发行版基础镜像(base image)->应用镜像(只读,多层)->容器层(可写)

分层理解

[root@docker ~]# docker pull redis
Using default tag: latest
latest: Pulling from library/redis
8559a31e96f4: Already exists 
85a6a5c53ff0: Pull complete 
b69876b7abed: Pull complete 
a72d84b9df6a: Pull complete 
5ce7b314b19c: Pull complete 
04c4bfb0b023: Pull complete 
Digest: sha256:800f2587bf3376cb01e6307afe599ddce9439deafbd4fb8562829da96085c9c5
Status: Downloaded newer image for redis:latest
docker.io/library/redis:latest

思考:为什么Docker要采用这种分层结构呢?

最大的好处,莫过于是资源共享了!比如有多个镜像都从相同的Base镜像构建出来,那么宿主机只需要在磁盘上保留一份base镜像,同时内存中也只需要加载一份base镜像,这样久可以为所有的容器服务了,而且镜像的每一次都可以被共享,

查询镜像分层的方式可以通过docker image inspect 命令来查看!

[root@docker ~]# docker inspect redis:latest//..."RootFS": {"Type": "layers","Layers": ["sha256:13cb14c2acd34e45446a50af25cb05095a17624678dbafbcc9e26086547c1d74","sha256:e6b49c7dcaac7a2ec2acc379da5f5b1bcc6a5d3badd72814fe945296216557bd","sha256:cdaf0fb0082b74223a224c39c2d2ea886c32f53b7e1d5b872d5354aae0df56b8","sha256:72d3a7e6fe022824ee2f852ca132030e22c644fbaf8287f4ea8044268abe40b7","sha256:67c707dbd847d8310d3b988c3e3d9d9eb53387ede0de472e36a15abbcb6c719c","sha256:7b9c5be81844318508f57a5b0574822dabaaed3dc25ee35d960feec3a9e941c4"]},

分层特点:

​ Docker镜像都是只读的,当容器启动时,一个新的可写层被加载到镜像的顶部!

这一层就是我们通常说的容器层,容器之下都叫镜像层!

在这里插入图片描述

如何提交一个自己的镜像

commit镜像

docker commit 提交容器成为一个新的副本# 命令和git原理类似
docker commit -m="提交的描述信息" -a="作者" 容器id	目标镜像名:[TAG]

实战测试:

# 1.启动一个默认的tomcat# 2.发现这个默认的tomcat是没用webapps应用,镜像的原因,官方的镜像默认webapps下面是没有文件的!# 3.我自己拷贝进去了基本的文件# 4.将我们操作过的容器通过commit提交为一个镜像!我们以后就是同我们修改过的镜像即可,这就是我们自己的镜像

在这里插入图片描述

在这里插入图片描述

如果你想要保存当前容器的状态,就可以通过commit来提交,获得一个镜像,就好比我们学习VM的时候,快照!

Docker进阶


容器数据卷

docker的理念回顾

将应用和环境打包成一个镜像!

**问题:**数据?如果数据都在容器中,那么我们容器删除,数据就会丢失!

需求:数据可以持久化

Mysql,容器删了,删库跑路!需求:Mysql数据可以存储在本地!

容器之间可以有一个数据共享的技术!Docker容器中产生的数据,同步到本地!

这就是卷技术!目录的挂载,将我们容器内的目录,挂载到Linux上面!

在这里插入图片描述

总结一句话:容器的持久化和同步操作!容器间也是可以数据共享的!

使用数据卷

方式一:直接使用命令来挂载 -v

docker run -it -v 主机目录:容器内目录# 测试 绑定宿主机的/home/test与容器的/home目录
[root@docker home]# docker run -it -v /home/test:/home centos /bin/bash
# 容器中新建文件
[root@00cefe7f7e9d home]# touch test.java   
[root@00cefe7f7e9d home]# ls
test.java
# 进入本地目录查看文件内容是否同步过来
[root@docker home]# cd test/
[root@docker ceshi]# ls
test.java

启动起来的时候我们可以通过命令:docker inspect 容器id 查看挂载情况

在这里插入图片描述

再来测试(本地修改文件,数据同步到容器中)!

1.停止容器

2.宿主机上修改文件内容

3.启动容器

4.容器内的数据依旧是同步的!!!

好处:我们以后修改只需要在本地修改即可,容器内会自动同步!

实战:安装MySql

#	获取镜像
[root@docker ~]# docker pull mysql:5.7#运行容器,需要做数据挂载!	#	安装启动mysql,需要配置密码,这是注意要点!!!# 官方测试:	docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag#	启动我们的mysql容器
-d 后台运行
-p	宿主机端口:容器端口	设置访问宿主机的段端口就能能访问到容器内的端口
-v	卷挂载
-e	环境配置	这里配置了mysql的密码
--name	容器的名字
[root@docker ~]# docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name=mysql01 mysql:5.7# 启动成功之后,我们在本地使用sqlyog来测试一下
#sqlyog-连接到服务器的3310 --- 3310和容器内的3306映射,这个时候我们就可以连接上了!# 在本地测试创建一个数据库,查看一下我们映射的路径是否ok!

image-20200701191909632.png

假设我们将容器删除

在这里插入图片描述

发现,我们挂载到本地的数据卷依旧没有丢失,这就实现了容器数据持久化功能!

具名和匿名挂载

# 匿名挂载
-v 容器内路径!   #这里不写主机的目录
docker run -it -d -P --name nginx_05 -v /etc/nginx nginx
-P 随机指定端口#查看所有volume的情况
[root@docker ~]# docker volume ls
DRIVER              VOLUME NAME
local               0bed872eb81e37b10092f6164471a50fdf84cc038bbc89801e7cb05b0a89535e
local               07de8b0bb6aaa72ff8b9c1cbe5552e6ecd4f54b0c9f5f2728c65d2463c1392bf# 这里发现,这种就是匿名挂载,我们在 -v 只写了容器内的路径,没有写容器外(宿主机)的路径!# 具名挂载 (通过	-v 卷名:容器内路径)
[root@docker ~]# docker run -d -it --name nginx_06 -P -v jvming-nginx:/etc/nginx nginx
# 列出所有的卷
[root@docker ~]# docker volume ls
DRIVER              VOLUME NAME
local               jvming-nginx# 查看一下这个卷详细信息

在这里插入图片描述

所有docker容器内的卷,没有指定目录情况下都是在 /var/lib/docker/volume/[卷名]/_data

我们通过具名挂载可以方便的找到我们的一个卷,大多数情况在使用具名挂载

# 如何却是具名挂载还是匿名挂载,还是指定路径挂载
-v	容器路径			#匿名挂载
-v	卷名:容器路径		   #具名挂载 (数据存储在默认路径/var/lib/docker/volume/)
-v	/宿主机路径:容器内路径	#指定路径挂载

拓展:

# 通过 -v 容器内路径:ro	rw 改变读写权限
ro	readonly	#	只读
rw	readwrite	#	可读可写#	一旦这个设置了容器权限,容器对我们挂载出来的内容就又限定了!
#	ro 只要看到ro就说明这个路径只能通过宿主机来操作,容器内部是无法操作的[root@docker ~]# docker run -d -it --name nginx_06 -P -v jvming-nginx:/etc/nginx:ro nginx
[root@docker ~]# docker run -d -it --name nginx_06 -P -v jvming-nginx:/etc/nginx:rw nginx

初始DockerFile

DockerFile是用来构建docker镜像的构建文件!命令脚本!

通过这个脚本可以生成镜像,镜像一层一层的,脚本一个个的命令,每个命令都是一层!

# 创建一个dockerfile文件,名字可以随机	建议Dockerfile
#	文件中的内容	指令(大写)	参数
FROM centosVOLUME ["volume01","volume02"]CMD echo "-----end-----"
CMD /bin/bash# 这里的每个命令,就是镜像的一层!
docker build -f [Dockerfile文件路径] -t [镜像名称:tag] .

在这里插入图片描述

[root@docker docker-test-volume]# docker run -d -it bridge/centos:1.0 /bin/bash

在这里插入图片描述

查看一下卷挂载的路径 docker inspect 容器id
C:\Users\dapen\AppData\Roaming\Typora\typora-user-images

测试一下刚才的文件是否同步出去了

在容器挂载的目录volume01中添加文件test.txt

在这里插入图片描述

在本地的卷目录下查看文件是否同步
在这里插入图片描述

这种方法我们未来用的十分多,因为我们通常会构建自己的镜像!

假设构建镜像的时候没有挂载卷,要手动镜像挂载 -v 卷名:容器内路径!

数据卷容器

是容器之间的挂载!!

思考:多个mysql同步数据实现共享

[root@docker ~]# docker run -d -p 3310:3306 -v /etc/mysql/conf.d -v /var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name=mysql01 mysql:5.7[root@docker ~]# docker run -d -p 3310:3306 -e MYSQL_ROOT_PASSWORD=123456 --name=mysql02 --volumes-from mysql01 mysql:5.7#这个时候,可以实现两个容器数据同步!

在这里插入图片描述

# 启动三个容器,通过我们自己写的镜像

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

# 测试:可以删除docker01,查看一下docker02和docker03是否还可以继续访问
# 测试依旧可以访问

结论:

容器之间配置信息的传递,数据卷容器的生命周期一直持续到没有容器使用为止。

但是一旦你持久化到了本地,这个时候,本地的数据是不会删除的

DockerFile介绍

dockerfile是用来构建docker镜像的文件!命令参数脚本!构建步骤:

1.编写一个dockerfile文件

2.docker build构建成为一个镜像

3.docker run运行镜像

4.docker push发布镜像(DockerHub.阿里云镜像仓库!)

在这里插入图片描述

很多官方镜像都是基础包,很多功能没有,我们通常会用自己搭建自己的镜像
官方既然可以制作镜像,那我们也可以!

DockerFile构建步骤

基础知识:

1.每个保留关键字(指令)都是必须是大写字母
2.执行从上到下顺序执行
3.# 表示注释
4.每一个指令都会创建提交一个新的镜像层,并提交!
在这里插入图片描述

DockerFile是面向开发的,我们以后要发布项目,做镜像,就需要编写dockerfile文件,这个文件十分简单!

Docker镜像逐渐成为了企业交付的标准

DockerFile:构建文件,定义了一切的步骤,源代码

DockerImages:通过DockerFile构建生成的镜像,最终发布和运行的产品,原来是jar war包

Docker容器:容器就是镜像运行起来提供服务的

DockerFile的指令

FROM			# 	基础镜像,一切从这里开始
MAINTAINER		# 	镜像是谁写的,姓名+邮箱
RUN				# 	镜像构建的时候运行的命令
ADD 			# 	步骤:tomcat镜像,这个tomcat压缩包!添加内容
WORKDIR			# 	镜像的工作目录,进入容器后的默认目录
VOLUME			#	挂载的目录
EXPOSE			#	暴露端口的位置
CMD				# 	指定这个容器启动的时候要运行的命令,只有最后一个命令会生效,可被替代
ENTYRPOINT		#	指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD			# 	当构建一个被继承Dockerfile这个时候就会运行ONBUILD的指令,出发指令
COPY			# 	类似ADD,将我们文件拷贝到镜像中
ENV				#	构建的时候设置环境变量#下图EXPOESE 应为	EXPOSE

在这里插入图片描述

实战测试

Docker Hub中99%镜像都是从这个基础镜像过来的FROM scratch

在这里插入图片描述

创建一个自己的centos

# 构建一个适合自己的镜像
[root@docker dockerfile]# cat mydockerfile 
FROM centos
MAINTAINER Bridge<master_cy@126.com>ENV MYPATH /usr/loacl
WORKDIR $MYPATHRUN yum -y install vim
RUN yum -y install net-toolsEXPOSE 80CMD echo $MYPATH
CMD echo "----end-----"
CMD /bin/bash# 使用构建的镜像来运行容器,千万别忘记最后的点
# 命令 docker build -f dockerfile文件路径 -t 镜像名:[tag] .
Successfully built 5cce4b4a2953
Successfully tagged mycentos:1.0# 测试运行 发现vim和ifconfig都可以使用了,工作目录更改为/usr/local
[root@docker dockerfile]# docker run -it mycentos:1.0 
[root@3b0e4a7d2aeb loacl]# ls
[root@3b0e4a7d2aeb loacl]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 172.17.0.3  netmask 255.255.0.0  broadcast 172.17.255.255ether 02:42:ac:11:00:03  txqueuelen 0  (Ethernet)RX packets 7  bytes 586 (586.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.1  netmask 255.0.0.0loop  txqueuelen 1000  (Local Loopback)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

我们可以列出本地镜像的变更历史 docker history 镜像id/名称:tag --查看镜像构建的过程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-33La7xeT-1594117347601)(D:\Ty image\image-20200702225845341.png)]

我们平时拿到一个镜像,可以研究它是怎么做的?

CMD和ENTRYPOINT的区别

CMD					# 指定这个容器启动的适合要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT	# 指定这个容器启动的适合要运行的命令,可以追加命令

测试CMD

#编写dockerfile文件
[root@docker home]# cat dockerfile1 
FROM centos
CMD ["ls","-a"]# 构建镜像
[root@docker home]# docker build -f dockerfile1 -t mycentos:2.0 .
Sending build context to Docker daemon  207.1MB
Step 1/2 : FROM centos---> 831691599b88
Step 2/2 : CMD ["ls","-a"]---> Running in bcb31410ceed
Removing intermediate container bcb31410ceed---> 2522d09261a4
Successfully built 2522d09261a4
Successfully tagged mycentos:2.0
# 运行镜像,发现ls -a命令生效了
[root@docker home]# docker run -it mycentos:2.0 
.   .dockerenv	dev  home  lib64       media  opt   root  sbin	sys  usr
..  bin		etc  lib   lost+found  mnt    proc  run   srv	tmp  var# 想追加一个命令 -l	ls -al
[root@docker home]# docker run 2522d09261a4 -l
docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: \"-l\": executable file not found in $PATH": unknown.
ERRO[0000] error waiting for container: context canceled # cmd的情况下 -l参数 替换了CMD["ls","-a"]的命令,而-l 不算命令,所以报错!

测试ENTRYPOIN

# 我们追加命令,是直接拼接在外面的ENTRYPOINT命令的后面!
[root@docker home]# docker run mycentos:3.0 -l
total 0
drwxr-xr-x.   1 root root   6 Jul  2 15:32 .
drwxr-xr-x.   1 root root   6 Jul  2 15:32 ..
-rwxr-xr-x.   1 root root   0 Jul  2 15:32 .dockerenv
lrwxrwxrwx.   1 root root   7 May 11  2019 bin -> usr/bin
drwxr-xr-x.   5 root root 340 Jul  2 15:32 dev
drwxr-xr-x.   1 root root  66 Jul  2 15:32 etc
drwxr-xr-x.   2 root root   6 May 11  2019 home
lrwxrwxrwx.   1 root root   7 May 11  2019 lib -> usr/lib
lrwxrwxrwx.   1 root root   9 May 11  2019 lib64 -> usr/lib64
drwx------.   2 root root   6 Jun 11 02:35 lost+found
drwxr-xr-x.   2 root root   6 May 11  2019 media
drwxr-xr-x.   2 root root   6 May 11  2019 mnt
drwxr-xr-x.   2 root root   6 May 11  2019 opt
dr-xr-xr-x. 206 root root   0 Jul  2 15:32 proc
dr-xr-x---.   2 root root 162 Jun 11 02:35 root
drwxr-xr-x.  11 root root 163 Jun 11 02:35 run
lrwxrwxrwx.   1 root root   8 May 11  2019 sbin -> usr/sbin
drwxr-xr-x.   2 root root   6 May 11  2019 srv
dr-xr-xr-x.  13 root root   0 Jul  2 02:41 sys
drwxrwxrwt.   7 root root 145 Jun 11 02:35 tmp
drwxr-xr-x.  12 root root 144 Jun 11 02:35 usr
drwxr-xr-x.  20 root root 262 Jun 11 02:35 var

DockerFile中许多命令都十分的相似,我们需要了解他们的区别,我们最好的学习就是对比他们,然后测试效果!

实战测试2:Tomcat镜像

1.准备镜像文件tomcat压缩包,jdk压缩包!

2.编写Dockerfiel文件,官方命令Dockerfile,build会自动构建这个文件

[root@docker tomcat]# vim Dockerfile
FROM centos
MAINTAINER Bridge<master_cy@126.com>COPY readme.txt /usr/local/readme/txtADD jdk-8u181-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.22.tar.gz /usr/local/RUN yum -y install vimENV MYPATH /usr/local
WORKDIR $MYPATHENV JAVA_HOME /usr/local/jdk1.8.0_11
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.22
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.22
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/binEXPOSE 8080
CMD /usr/local/apache-tomcat-9.0.22/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.22/bin/logs/catalina.out

3.构建镜像

# docker build -t diytomcat .

4.启动镜像

# 项目挂载在本地/home/build/tomcat/test目录下,直接在test中做修改就可以直接发布。日志也挂载出来了,本地可以查看
# docker run -d -p 9090:8080 --name bridgetomcat -v /home/build/tomcat/test:/usr/local/apache-tomcat-9.0.22/webapps/test -v /home/build/tomcat/tomcatlogs/:/usr/local/apache-tomcat-9.0.22/logs diytomcat

5.测试访问

6.发布项目(由于做了卷挂载,我们直接在本地编写项目就可以发布了)

发布自己的镜像

发布到Docker.Hub

Docker.Hub

1.地址https://hub.docker.com/ 注册自己的账号

2.确定这个账号可以登录

3.在我们服务器上提交自己的镜像

[root@docker ~]# docker login --help
Usage:	docker login [OPTIONS] [SERVER]
Log in to a Docker registry.
If no server is specified, the default is defined by the daemon.
Options:-p, --password string   Password--password-stdin    Take the password from stdin-u, --username string   Username

4.录完毕后就可以提交镜像了,就是一步 docker push

# push 自己的镜像到服务器上
[root@docker ~]# docker push dirtomcat03
The push refers to repository [docker.io/library/dirtomcat03]
6eabbc12bc8b: Preparing 
efcfd5ec54aa: Preparing 
f73de6d323b0: Preparing 
bc4da657b4da: Preparing 
eb29745b8228: Preparing 
denied: requested access to the resource is denied	#拒绝# push镜像的问题?
[root@docker ~]# docker push dirtomcat03
The push refers to repository [docker.io/bridge/dirtomcat03]
An image does not exist locally with the tag: bridge/dirtomcat03#解决办法:增加一个tag,tag的意思是重新给镜像取个名字
# 想要上传的容器id(这里的容器id为dirtomcat03的,) chao123456e 为DockerHub账号,这里一定要和DockerHub上账号对应,不然不能上传 chao123456e/tomcat:2.0 为新镜像名称
[root@docker ~]# docker tag 2c30f06d63c3 chao123456e/tomcat:2.0# 表示正在上传,已经配置成功
[root@docker ~]# docker push chao123456e/tomcat:2.0 
The push refers to repository [docker.io/chao123456e/tomcat]
6eabbc12bc8b: Pushing [===========================>                       ]  31.89MB/57.22MB
efcfd5ec54aa: Pushed 
f73de6d323b0: Pushing [================>                                  ]  128.7MB/381.7MB
bc4da657b4da: Pushed 
eb29745b8228: Pushing [==============================>                    ]  132.7MB/215.3MB
# 提交的时候可以看出也是按层级提交的

在这里插入图片描述

发布到阿里云镜像服务上

1.登录阿里云

2.找到容器镜像服务

3.创建命名空间
在这里插入图片描述

4.创建容器镜像
在这里插入图片描述

5.浏览阿里云
在这里插入图片描述

# push上去阿里云镜像
docker push chao123456e/tomcat:2.0

小结:

在这里插入图片描述

Docker 网络

理解Docker0

测试

在这里插入图片描述

三个网络

# 问题:	docker是如何处理容器网络访问的

在这里插入图片描述

# [root@docker ~]# docker run -d -P --name tomcat01 tomcat# 查看容器的内部网络地址 ip addr
[root@docker ~]# docker exec -it tomcat01 ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft forever
4: eth0@if5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0valid_lft forever preferred_lft forever#Linux 可以ping通docker容器内部

原理:

1.我们每启动一个docker容器mdocker就会给docker容器分配一个ip,只要安装了docker,就会有一个网卡docker0,桥接模式,使用的技术是veth-pair技术!

再次测试:ip addr

在这里插入图片描述

在这里插入图片描述

2.再启动一个容器测试,发现又多了以一对网卡!

在这里插入图片描述

# 我们发现这个容器带来网卡,都是一堆堆的
# veth-pair 就是以低于的虚拟设备接口,他们都是成对出现的,一段连着协议,一段彼此相连# 比如上图的本地机的 5:veth if    对应的就是tomcat01的 4:veth if5   所以说他们是成对出现,# 正因为有这个特性,veth-pair充当一个桥梁,连接各种虚拟网络设备的
# oPenStac ,Docker容器之间的连接,OVS的连接,都是使用veth-pair技术

3.测试tomcat01和tomcat02是否可以ping通!

[root@docker ~]# docker exec -it tomcat01 ping 172.17.0.2# 结论:容器和容器之间是可以互相ping通的

在这里插入图片描述

结论:tomcat01和tomcat02是公用的一个路由器,docker0

所有的容器不指定网络的情况下,都是docker0路由的,docker会给我们的容器分配一个默认的可用IP

小结

Docker使用的是Linux的桥接,宿主机中是一个Docker容器的网桥docker0
在这里插入图片描述

Docker中所有的网络接口都是虚拟的,虚拟的转发效率高(内网传递文件!)

只要容器删除,对应网桥一对就没了!

思考

我们编写了一个微服务,database url=ip;项目不重启,数据库IP换掉了,我们希望可以处理这个问题,可以通过名字来进行访问服务

–Link

[root@docker ~]# docker exec -it tomcat02 ping tomcat01
ping: tomcat01: Name or service not known#如何解决上面的问题呢?
# 通过 --link 即可以解决了网络连通问题
[root@docker ~]# docker run -d -P --name tomcat03 --link tomcat02 tomcat
[root@docker ~]# docker exec -it tomcat03 ping tomcat02
PING tomcat02 (172.17.0.3) 56(84) bytes of data.
64 bytes from tomcat02 (172.17.0.3): icmp_seq=1 ttl=64 time=0.168 ms
64 bytes from tomcat02 (172.17.0.3): icmp_seq=2 ttl=64 time=0.070 ms# 反向可以ping通吗?
[root@docker ~]# docker exec -it tomcat02 ping tomcat03
ping: tomcat03: No address associated with hostname

其实这个tomcat03就是在本地配置了tomcat02的配置?

[root@docker ~]# docker exec -it tomcat03 cat /etc/hosts
127.0.0.1	localhost
::1	localhost ip6-localhost ip6-loopback
fe00::0	ip6-localnet
ff00::0	ip6-mcastprefix
ff02::1	ip6-allnodes
ff02::2	ip6-allrouters
172.17.0.3	tomcat02 60b035aed160
172.17.0.4	bb26ed7d467d

本质探究:–link就是在我们hosts文件中配置了172.17.0.3 tomcat02 60b035aed160

wm 现在玩Docker已经不建议使用–link了!

自定义网络!不适用docker0!

docker0问题:它不支持容器名连接访问!

自定义网络

容器互联:

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. Vue之cli脚手架

    一、介绍Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统,提供:通过 @vue/cli 实现的交互式的项目脚手架。通过 @vue/cli + @vue/cli-service-global 实现的零配置原型开发。一个运行时依赖 (@vue/cli-service),该依赖:可升级;基于 webpack 构建,并带有合理的默认配置…...

    2024/4/16 7:19:52
  2. 如何使用搜索

    1.搜索谷歌上网助手下载2.先将下载下来的crx文件的后缀名改为.zip3.然后将这个zip文件解压出来4.打开Chrome浏览器的扩展程序,更多工具 -> 扩展程序,打开开发者模式,然后点击“加载已解压的扩展程序”5.登录或者注册之后就可以用谷歌游览器游览谷歌...

    2024/4/19 12:42:18
  3. Mysql数据库操作的基本语法

    一、数据库定义 1.数据库 database 2.自定义:库>表>(表结构+表数据+索引(数据结构:查)+自定义函数+存储过程) 二、数据的完整性和条件约束 1、实体完整性:(行的唯一性)唯一性约束(1列) unique key 主键约束(1~N列) primary key 自增列(1个数值类型列) …...

    2024/4/16 7:19:22
  4. 单词接龙

    给定两个单词(beginWord 和 endWord)和一个字典,找到从 beginWord 到 endWord 的最短转换序列的长度。转换需遵循如下规则: 每次转换只能改变一个字母。 转换过程中的中间单词必须是字典中的单词。 说明: 如果不存在这样的转换序列,返回 0。 所有单词具有相同的长度。 所有…...

    2024/4/16 7:19:22
  5. MySQL数据库的常见函数(二)

    一.字符函数1.instr 用户返回子串在大串中的起始索引,如果找不到返回0.select instr(小谷喜欢吴倩,吴倩);当我输入吴倩的时候,这个时候大串中包含这个字符,所以返回的是起始索引(上篇文章讲过,mysql中起始索引从1开始)select instr(小谷喜欢吴倩,小米);当我输入一个大串中…...

    2024/4/30 2:44:26
  6. 配置git ssh key出现的问题

    配置ssh key 过程中一个重要环节是生成公用和私有密钥对,在这个过程中需要选择生成文件的路径位置,这里选择默认就可以了,因为在链接远程仓库时会默认到C盘的那个文件夹去搜索,千万不要手贱改到其他位置,否则后续会链接不到远程仓库,除非将某个配置文件的路径改到你要更改…...

    2024/4/29 9:49:46
  7. Selenium +Python入门(PageObject思想篇)

    PageObject介绍 1)2013 Martin Flower 提出 2)2015 Selenium 官方加入PO思想 PageObject模式 Selenium PO 官方总结:总结: 1)⽤公共⽅法代表UI所提供的功能 2)尽量不要公开页面的内部细节:控件定位逻辑等,只把业务api暴露给用户 3)PO⽅法内一般不要加断⾔ 4)方法返回…...

    2024/4/26 20:56:12
  8. gitlab容器:could not read block 0 in file “base/16385/2702“

    gitlab容器:could not read block 0 in file "base/16385/2702"一:报错场景说明二:解决步骤三:后续问题 一:报错场景说明 使用docker在局域网搭建gitlab服务,一直运行正常。有天突然断电,gitlab容器再启动时一直显示unhealthy状态,查看日志报如下错,结果是g…...

    2024/4/19 23:01:03
  9. Youtube2008年数据分析-分析图2

    一代码import numpy as np import matplotlib.pyplot as pltfrom matplotlib.font_manager import FontProperties #字体设置 font_set= FontProperties(fname=r"F:\simsun\simsun.ttc")data=[342076,351328,357865,363946,367970,371646,375838,381047,386071,38957…...

    2024/4/16 7:19:57
  10. 用win10自带的hyper-v安装CentOS7

    用win10自带的hyper-v安装CentOS7一、 CentOS7的下载地址二、win10安装hyper-v注:hyper-v平台灰色不能添加安装的解决三、hyper-v安装CentOS7四、启动时centos7启动不了解决 一、 CentOS7的下载地址 centos的官网下载地址:https://www.centos.org/download/ 二、win10安装hyp…...

    2024/4/27 19:04:07
  11. js在for循环中按照顺序响应请求

    在某些坑爹的小程序中,原型链并没有formData,只能使用他的uploadfile方式对图片进行上传,而且单次只能上传一张图片,要是我们想让这个上传的动作同步执行怎么办呢。 我们选中图片的时候会得到一个图片的列表比如filePath:[https://assasass/123123.png,https://assasass/12…...

    2024/5/1 5:50:42
  12. HashMap常见面试题

    HashMap常见面试题 感谢:https://blog.csdn.net/xiewenfeng520/article/details/107119970 1. HashMap是如何解决Hash冲突的? 使用链表存放hash值相等且内容不同,存放同一链表 2.HashMap的put方法的底层实现? a. 判断key如果为空的情况下,存放数组0的位置 b. 默认HashMap初…...

    2024/5/1 5:51:05
  13. interFoam下的createFields.H

    本文分析了interFoam求解器根目录下的createFields.H文件,未注释的代码可参考本人的博文 //显示输出动压 Info<< "Reading field p_rgh\n" << endl; volScalarField p_rgh (IOobject("p_rgh",runTime.timeName(),mesh,IOobject::MUST_READ,IO…...

    2024/4/16 7:19:47
  14. WIFI密码破解

    WIFI密码破解0x0 写在前面环境0x1 Aircrack-ng简介0x2 WIFI配置要求0x3 WIFI破解流程1. 查看网卡设备2. 查看设备是否支持监听模式3. 开启无线网卡监听模式4. 查看周围WIFI网络5. 监听目标网络的握手包(1) 等待新的设备连接WIFI(2) 主动攻击6. 破解握手包密码7.关闭监听模式8. …...

    2024/4/30 1:54:26
  15. 基于像元二分模型的植被覆盖度反演

    理论介绍: 植被覆盖度是指植被(包括叶、茎、枝)在地面的垂直投影面积占统计区总面积的百分比植被覆盖度常用于植被变化、生态环境研究、水土保持、气候等方面。 像元二分模型是一种简单实用的遥感估算模型,它假设一个像元的地表由有植被覆盖部分地表与无植被覆盖部分地表组…...

    2024/4/24 6:39:34
  16. CH340芯片选型

    CH340是一个USB总线的转接芯片,其中转串口的应用场合居多,且市场占有率很高。CH340芯片根据不同的功能可以实现为USB转串口、打印口和IrDA红外接口,因此选型的时候就首先需要根据功能加以区分了。如下表所示:(以下数据更新至2019年5月)功能划分 功能列表 芯片型号 USB转串…...

    2024/4/20 10:59:46
  17. S460G2+QT钢板执行标准S460G2+QT海洋结构钢板制造工艺

    1、S460G2+QT钢板简介S460G2+QT为欧标钢板的一种,属于固定式海岸结构用可焊接结构钢,其交货状态为调质(淬火+回火),冲击为-40度冲击实验,G后的2表示钢种特性的相关数字,至于后面的+QT的意思是调质(淬火+回火),只是标准里面命名钢号的一种方法。2、S460G2+QT钢板执行标…...

    2024/4/16 7:19:37
  18. STM32芯片命名规则

    stm32的芯片命名规则如上,所以拿到一个芯片型号后咱们便可以知道这个芯片的很多信息,如flash的大小、引脚的数量以及内核是cortexM几的等等。有了这些信息咱们就可以把所有的引脚都归纳分类,根据实际的需求把需要使用的引脚找出来,并连接上相应的外设,这就是分配原理图IO,…...

    2024/4/28 1:58:55
  19. Python_第四篇 可视化(8)_Pyecharts图表堆叠

    8、利用Overlap进行图表叠加将多张图表聚合到一个画板上,横坐标一样8.1 利用Overlap叠加Line+Barfrom pyecharts import Bar,Line,Overlapbar=Bar()line=Line()overlap=Overlap()overlap.add(bar)overlap.add(line)overlap8.2 利用Overlap叠加Line+EffectScatteroverlap=Overl…...

    2024/4/24 18:02:35
  20. docker的tomcat打包 和cpu脚本

    一、准备工作 1.准备JDK环境包(1.7以上即可) 百度网盘: ——链接:https://pan.baidu.com/s/1O-Z3LPs58Eqoc22hva2Kyg ——提取码:sn1w 2.准备Tomcat安装包(7或者8) 百度网盘: —— 链接:https://pan.baidu.com/s/1g7D-ph8_7dAL91_-QfSrFA –——提取码:94b0 3.基础镜…...

    2024/4/23 6:19:43

最新文章

  1. 【消息队列】RabbitMQ五种消息模式

    RabbitMQ RabbitMQRabbitMQ安装 常见的消息模型基本消息队列SpringAMQPWorkQueue消息预取发布订阅模式Fanout ExchangeDirectExchangeTopicExchange 消息转换器 RabbitMQ RabbitMQ是基于Erlang语言开发的开源消息通信中间件 官网地址&#xff1a;https://www.rabbitmq.com/ R…...

    2024/5/1 7:05:33
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 磁盘管理与文件管理

    文章目录 一、磁盘结构二、MBR与磁盘分区分区的优势与缺点分区的方式文件系统分区工具挂载与解挂载 一、磁盘结构 1.硬盘结构 硬盘分类&#xff1a; 1.机械硬盘&#xff1a;靠磁头转动找数据 慢 便宜 2.固态硬盘&#xff1a;靠芯片去找数据 快 贵 硬盘的数据结构&#xff1a;…...

    2024/4/29 19:39:50
  4. k8s_入门_kubelet安装

    安装 在大致了解了一些k8s的基本概念之后&#xff0c;我们实际部署一个k8s集群&#xff0c;做进一步的了解 1. 裸机安装 采用三台机器&#xff0c;一台机器为Master&#xff08;控制面板组件&#xff09;两台机器为Node&#xff08;工作节点&#xff09; 机器的准备有两种方式…...

    2024/4/30 17:11:04
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/29 23:16:47
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/30 18:14:14
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/29 2:29:43
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/30 18:21:48
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/30 9:43:09
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/25 18:39:16
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/29 20:46:55
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/30 22:21:04
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/1 4:32:01
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/27 23:24:42
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/28 5:48:52
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/30 9:42:22
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/30 9:43:22
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/30 9:42:49
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57