【Docker】Docker学习02 | docker-cli的基本命令

news/2024/9/18 12:38:02/ 标签: docker, 学习, eureka

本文首发于 ❄️慕雪的寒舍

简单了解一下docker client的常用命令,更多命令可以查看完整命令列表。不同命令之间的关系,可以查看下图。

image.png

如果你看不到图片,不用担心,后面对每个命令进行介绍的时候,会提到它们的作用的。

本文所述的所有命令都是docker-cli的命令(cli是client的缩写),它们本质上都是在和主机上的 docker engine 通信,获取结果。最终容器的运行管理,实际上都是由作为服务端的 docker engine 来处理的。所以在运行 docker-cli 命令之前,需要保证 docker engine 已经启动。一般的Linux系统上,都可以使用 systemctl 命令管理 docker engine 的服务。

systemctl start docker

基础命令

docker的帮助命令和基本信息

docker --help  # 查看帮助命令
docker version # 查看docker信息,会显示client和server的版本
docker info # 显示当前docker的详细信息,包括有几个容器等

镜像相关命令

docker_pull_26">docker pull

用于下载镜像,当不指定tag的时候,会默认拉取latest版本(大部分镜像都会维护一个tag为latest的镜像)

docker pull 镜像名:tag

如果你不知道某个镜像是否存在,可以用docker search命令来查询它。

docker_images_36">docker images

查看当前本地已有的镜像的相关信息

docker images

image.png

docker images
REPOSITORY                TAG           IMAGE ID       CREATED         SIZE
musnows/kook-ticket-bot   0.3.0         3033f09a7bb3   5 days ago      163MB
musnows/kook-ticket-bot   latest        75f153e944da   5 days ago      163MB
b3log/siyuan              v3.1.0        6498791aa636   2 weeks ago     225MB
bitnami/minio             latest        02f75f2c3432   2 weeks ago     271MB
neosmemo/memos            latest        5ddfb6978c7f   6 weeks ago     62.7MB

另外,可以使用docker images prune快速删除所有未被容器使用且没有被tag的镜像层,如果想删除所有未被使用的镜像层,可以在这个命令后加上-a选项。

为什么需要清理呢?如果本地存在镜像层损坏,可能会影响新容器的构建和创建操作。可以尝试使用这个命令清理一下本地的镜像层。镜像层文件一般存放在/var/lib/docker/overlay2中。

注意,prune选项只是删除没有被使用的镜像层,但有些镜像的tag为none,但本身会和其他镜像共用镜像层,此时使用prune是不会清理掉这些镜像的。如果你想清理掉tag为none的镜像,可以使用如下命令快速清除。

docker images -f "dangling=true" -q | xargs docker rmi

docker_tag_67">docker tag

该命令用于给一个已有的镜像设置一个tag(设置镜像的名字)

docker tag 镜像id 命名镜像

每个docker镜像都有个标识(镜像的完整名字),通常由仓库名、镜像名和标签组成。

仓库名/镜像上传者名/镜像本身名字:tag

且为了区分镜像的上传者,镜像名中通常以斜杠来分割镜像上传者和镜像本身的名字。默认情况下,使用的仓库都是官方的docker hub,所以镜像的仓库名会被省略

musnows/ImagesName:tag 

如果你使用了docker的镜像源(比如南京大学的镜像源),那么拉取下来的镜像中就会有仓库的名字。

docker.nju.edu.cn/jellyfin/jellyfin:latest

docker_rmi_93">docker rmi

可以使用docker rmi命令来删除某个镜像,需要提供镜像的名字:tag或者镜像的ID。

docker rmi 镜像ID
docker rmi 镜像名:tag

如果要删除某个镜像,这个镜像必须没有关联的容器(需要先把关联的容器删除),才能被删除。否则删除请求会被拒绝。当然,可以使用-f选项来强制删除某个镜像。

另外,如果使用镜像名:tag的方式删除某个镜像时,并不一定会触发删除操作。因为同一个镜像可能会被打上多个tag,这时候只删除其中一个tag,相当于取消tag的操作。如果确定需要删除这个镜像,直接使用镜像的ID来删除是更好的办法。

如下所示,可以看到同一个镜像有两个不同的tag

REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
t            1         fa725ab19121   4 hours ago    432MB
t            2         fa725ab19121   4 hours ago    432MB

此时我们删除其中一个tag,可以看到返回的说明是Untagged,相当于是取消了对这个镜像的t:1这个tag。

$ docker rmi t:1
Untagged: t:1

t:2这个tag也给删除,才会真正删除镜像

$ docker rmi t:2 -f
Untagged: t:2
Deleted: sha256:fa725ab19121bd9c5628757049f5da5d4002f1ee10e41c4a87c33ab343d4ff28

docker_inspect_129">docker inspect

这个命令用于查询某个容器/镜像的元数据,会以json格式返回元数据

docker inspect [OPTIONS] NAME|ID [NAME|ID...]

docker_saveload_137">docker save/load

docker save和docker load命令相对应,用于将一个镜像打包成tar格式的文件,方便在不同主机上进行传输。其他主机可以用load命令加载一个导出的镜像

# 打包本地镜像
docker save linux:monitor -o linux-monitor.tar
# 在其他主机上加载镜像
docker load -i linux-monitor.tar

为了减少导出镜像的文件大小,还可以用gzip命令来压缩导出的镜像包的体积

# 通过管道,将docker save的结果传输给gzip工具,进行压缩
docker save <myimage>:<tag> | gzip > <myimage>_<tag>.tar.gz
# gzip解压之后,通过管道传输给docker load命令
gunzip -c <myimage>_<tag>.tar.gz | docker load

docker_build_157">【重点】docker build

docker build命令用于从docker file中构建一个docker的镜像,参考菜鸟教程

docker build [OPTIONS] PATH | URL | -

OPTIONS说明:

  • –build-arg=[] :设置镜像创建时的变量;
  • –cpu-shares :设置 cpu 使用权重;
  • –cpu-period :限制 CPU CFS周期;
  • –cpu-quota :限制 CPU CFS配额;
  • –cpuset-cpus :指定使用的CPU id;
  • –cpuset-mems :指定使用的内存 id;
  • –disable-content-trust :忽略校验,默认开启;
  • -f :指定要使用的Dockerfile路径;
  • –force-rm :设置镜像过程中删除中间容器;
  • –isolation :使用容器隔离技术;
  • –label=[] :设置镜像使用的元数据;
  • -m :设置内存最大值;
  • –memory-swap :设置Swap的最大值为内存+swap,"-1"表示不限swap;
  • –no-cache :创建镜像的过程不使用缓存
  • –pull :尝试去更新镜像的新版本;
  • –quiet, -q :安静模式,成功后只输出镜像 ID;
  • –rm :设置镜像成功后删除中间容器;
  • –shm-size :设置/dev/shm的大小,默认值是64M;
  • –ulimit :Ulimit配置。
  • –squash :将 Dockerfile 中所有的操作压缩为一层。
  • –tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
  • –network: 默认 default。在构建期间设置RUN指令的默认网络模式;

示例1:使用.当前路径下的dockerfile构建镜像,tag为runoob/ubuntu:v1

docker build -t runoob/ubuntu:v1 .

示例2:使用指定路径/path/to/a/Dockerfile中的dockerfile,从.当前目录中指定上下文,【重点】Docker需要拷贝的内容是以命令中指定的.当前目录为PWD进行dockerfile内相对路径计算的,构建镜像。

docker build -f /path/to/a/Dockerfile .

示例3:使用-f手动指定dockerfile的名字为base.dockerfile,并设置了docker镜像的默认网络模式是host,这个网络模式下docker容器会直接使用宿主机的端口。

如果没有指定dockerfile文件,默认会忽略大小写在当前目录下搜索名为dockerfile的文件。

docker build --network host -f base.dockerfile .

构建过程中可能遇到一些问题,比较常见的是和构建缓存还有上下文相关的,示例如下,报错中提到了/install/grpc文件不存在,这是因为当前指定的docker build上下文中没有办法被COPY到这个文件,需要检查你指定的docker构建上下文以及dockerfile中的相对路径是否正确。

ERROR: failed to solve: failed to compute cache key: failed to calculate checksum of ref 15c2f5bc-d5d7-4c81-9b8d-35af99494b3e::iuik026yg20qwxl8dajjkigru: "/install/grpc": not found

还有另外一个问题是我在构建一个新镜像时遇到的,出现的场景在于上一次构建被我手动CTRL+C终止了,再次构建就会出现错误(即便build命令加上--no-cache选项也会失败)。这种大概率就是缓存损坏了,可以用如下方式清理一下本地的构建缓存。

# 删除损害的构建缓存
docker builder prune
# 删除所有未被使用的中间容器
docker container prune
# 删除所有未被使用的镜像层
docker image prune
# 删除所有tag为none的镜像
docker images -f "dangling=true" -q | xargs docker rmi

容器相关命令

docker_ps_231">docker ps

查看当前正在运行的容器。

docker ps

image.png

docker ps    
CONTAINER ID   IMAGE                   COMMAND                  CREATED        STATUS          PORTS                                                                                      NAMES
04fec1b6c345   b3log/siyuan:v3.1.0     "/opt/siyuan/kernel …"   2 weeks ago    Up 16 minutes   0.0.0.0:10060->6806/tcp, :::10060->6806/tcp, 0.0.0.0:10061->6808/tcp, :::10061->6808/tcp   siyuan
69328f37ac26   bitnami/minio:latest    "/opt/bitnami/script…"   2 weeks ago    Up 16 minutes   0.0.0.0:9000-9001->9000-9001/tcp, :::9000-9001->9000-9001/tcp                              minio
612786ac157c   neosmemo/memos:latest   "./memos"                5 weeks ago    Up 16 minutes   0.0.0.0:14710->5230/tcp, :::14710->5230/tcp                                                memos
ffbdfb02af22   gitea/gitea:1.21.4      "/usr/bin/entrypoint…"   5 months ago   Up 16 minutes   127.0.0.1:2222->22/tcp, 0.0.0.0:30000->3000/tcp, :::30000->3000/tcp                        gitea                 

使用-a选项可以看到所有容器,包括创建了但没有运行的容器(停止状态的容器)。

image.png

docker ps -a
CONTAINER ID   IMAGE                          COMMAND                  CREATED        STATUS                      PORTS                                                                                      NAMES
940156496e93   musnows/linux-monitor:latest   "/bin/bash"              24 hours ago   Exited (255) 13 hours ago                                                                                              linux_monitor
04fec1b6c345   b3log/siyuan:v3.1.0            "/opt/siyuan/kernel …"   2 weeks ago    Up 16 minutes               0.0.0.0:10060->6806/tcp, :::10060->6806/tcp, 0.0.0.0:10061->6808/tcp, :::10061->6808/tcp   siyuan
69328f37ac26   bitnami/minio:latest           "/opt/bitnami/script…"   2 weeks ago    Up 16 minutes               0.0.0.0:9000-9001->9000-9001/tcp, :::9000-9001->9000-9001/tcp                              minio
612786ac157c   neosmemo/memos:latest          "./memos"                5 weeks ago    Up 16 minutes               0.0.0.0:14710->5230/tcp, :::14710->5230/tcp                                                memos
e4c3decfa29d   halohub/halo:2.11.3            "sh -c 'java ${JVM_O…"   5 months ago   Exited (255) 5 months ago   0.0.0.0:18000->8090/tcp, :::18000->8090/tcp                                                halo
ffbdfb02af22   gitea/gitea:1.21.4             "/usr/bin/entrypoint…"   5 months ago   Up 16 minutes               127.0.0.1:2222->22/tcp, 0.0.0.0:30000->3000/tcp, :::30000->3000/tcp                        gitea
642c1a6c90d2   mysql:5.7                      "docker-entrypoint.s…"   5 months ago   Exited (255) 5 months ago   33060/tcp, 0.0.0.0:13306->3306/tcp, :::13306->3306/tcp                                     mysql57

所有使用容器名操作的命令,都可以使用容器的CONTAINER ID进行操作,使用容器的container id是更好的选择,因为它是每个容器唯一的,不会重复。

docker_startstoprestart_268">docker start/stop/restart

用于对某个容器进行操作,启动、停止、容器容器。

docker start 容器名   # 运行
docker stop 容器名    # 停止
docker restart 容器名 # 重启

docker_rm_278">docker rm

这个命令用于删除某个容器。容器必须是停止状态才能被删除。同样可以使用-f选项强制删除某个正在运行的容器。

docker rm 容器名
docker rm 容器ID

docker_stats_287">docker stats

这个命令可以查看当前正在运行的容器状态,包括容器占用的内存/CPU百分比等性能信息

docker stats       # 查看所有容器的运行状态
docker stats 容器名 # 查看某个容器的运行状态

docker_exec_296">docker exec

这个命令用于进入某个正在运行的容器的终端,或者说是在某个容器中执行命令,-it选项代表以命令行交互与容器通信。

docker exec -it 容器名 需要执行的命令

比如我们想进入linux_monitor容器的终端,使用的是如下命令。这个命令本质上是在容器内执行/bin/bash命令,相当于启动了一个容器内的bash终端。

docker exec -it linux_monitor /bin/bash

如果我们想进入mysql容器内的mysql命令行,可以使用如下命令,相当于在名为mysql57的容器的终端中执行了mysql -uroot -p123456命令,这样能直接进入容器内的mysql终端。

docker exec -it mysql57 mysql -uroot -p123456

如下所示,我们使用这个命令直接进入了mysql容器内的终端

docker exec -it mysql57 mysql -uroot -p123456
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.44 MySQL Community Server (GPL)Copyright (c) 2000, 2023, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> 

进入容器后,执行exit命令即会退出容器内的终端,回到宿主机的终端中。

注意,只有一个容器处于运行状态,才能使用 docker exec 进入到容器内终端中。

docker_attach_340">docker attach

想直接进入容器终端,还有另外一个命令。这个命令会直接进入容器内的终端。

docker attach 容器名

对比一下attach和exec命令

  • attach 不会在容器中创建进程执行额外的命令,只是附着到容器上。
  • exec 会在运行的容器上创建进程执行新的命令

如果docker容器是使用/bin/bash作为shell启动的,则可以使用attach来直接访问它。如果不是,则需要在容器内创建一个bash的进程。

docker_cp_355">docker cp

从容器内拷贝文件到宿主机上,也可以从宿主机拷贝文件到容器内。

docker cp 容器id:容器内路径 宿主机上的目的路径
docker cp 宿主机上的目的路径 容器id:容器内路径

docker_run_365">【重点】docker run

docker run 命令用于从镜像中创建一个容器,命令行参数参考菜鸟教程。

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

OPTIONS说明:

  • -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
  • -d: 后台运行容器,并返回容器ID;
  • -i: 以交互模式运行容器,通常与 -t 同时使用;
  • -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
  • -P: 随机端口映射,容器内部端口随机映射到主机的端口
  • -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
  • –name=“nginx-lb”: 为容器指定一个名称;
  • –dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
  • –dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
  • -h “mars”: 指定容器的hostname;
  • -e username=“ritchie”: 设置环境变量;
  • –env-file=[]: 从指定文件读入环境变量;
  • –cpuset=“0-2” or --cpuset=“0,1,2”: 绑定容器到指定CPU运行;
  • -m:设置容器使用内存最大值;
  • –net=“bridge”: 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型
  • –link=[]: 添加链接到另一个容器;
  • –expose=[]: 开放一个端口或一组端口;
  • –volume , -v: 绑定一个卷
  • –rm:当容器内程序退出的时候,自动删除容器,用于测试运行。不能和-d一起使用。

示例:使用nginx镜像创建一个容器,并在后台运行。

docker run -d \--name mynginx nginx:latest

当默认创建一个容器的时候,docker会给这个容器创建一个卷(volumes),就好比虚拟机的虚拟磁盘。当某个容器被删除,和它关联的卷也就失效了。所以,如果你在容器内部对容器运行的程序做了配置上的修改,删除这个容器后就会失效。

为了避免这种情况,我们一般都会将容器中的某个存放配置文件和数据的路径给映射到宿主机,这样容器对这个路径的修改就会直接写入到宿主机的文件系统中(持久化),即便容器删除也不会影响。

比如nginx的配置文件都在/etc/nginx中,我们可以把这个目录映射到宿主机的/root/docker/nginx路径中(冒号左侧是宿主机的路径,冒号右侧是容器内的路径),这样就可以直接通过修改宿主机中的路径来修改容器中nginx的配置,同时nginx容器的配置也实现了持久化,即便容器删除也不会丢失。

docker run -d \--name mynginx \-v /root/docker/nginx:/etc/nginxnginx:latest

当前状态下我们没有设置这个容器的网络环境,一般情况下,容器都会以默认的bridge桥接网络链接到宿主机中,即容器是通过宿主机的网卡做桥接(类似于虚拟机的NAT模式)上网的。

比如上方配置的nginx容器,它并不会对宿主机的80/443端口收到的请求做任何操作,因为它监听的是容器内的80和443端口,而这两个端口并没有映射到宿主机上。如果我们想让容器能处理宿主机收到的数据,则需要进行容器的端口映射

如下所示,我们使用了两个-p选项,分别映射了80端口和443端口到宿主机的80和443端口(冒号左侧是宿主机的端口,右侧是容器内的端口),此时使用的是默认的bridge桥接方式接通了容器和宿主机的网络端口。

docker run -d \--name mynginx \-v /root/docker/nginx:/etc/nginx \-p 80:80 \-p 443:443 \nginx:latest

当然,也可以直接用host网络模式运行nginx容器,这样nginx默认绑定的80和443就是直接绑定的宿主机的端口了。

docker run -d \--name mynginx \-v /root/docker/nginx:/etc/nginx \--net="host" \nginx:latest

关于docker run中-v命令和--mount命令以及绑定数据卷的说明,请参考docker volume中的介绍。

docker_volume_443">docker volume

volume是docker中的数据卷,可以用下方的命令来操作这些数据卷。

docker volume ls               # 查看所有数据卷
docker volume rm 数据卷ID       # 删除某个卷
docker volume inspect 数据卷ID  # 查看某个数据卷的详细信息
docker volume prune            # 删除没有使用的数据卷
docker volume create 数据卷名字  # 创建卷

关于数据卷的知识,可以看docker volume的介绍。

docker_logs_457">docker logs

docker logs可以查看某个容器的日志输出,用于定位容器运行产生的问题。

docker logs 容器ID
docker logs 容器名

比较常用的选项就是--tail,用于显示最新的几行命令,避免容器内的日志过长,打印耗时太久。

# 只显示最新20行的日志
docker logs 容器ID --tail=20

http://www.ppmy.cn/news/1515857.html

相关文章

静态内部类来实现单例

现单例模式的方式有很多种&#xff0c;除了以上所提到的&#xff0c;我们还可以使用静态内部类来实现单例&#xff0c;这样更简单&#xff0c;不需要判空也不需要加 volatile 关键字去防止指令重排的问题。示例代码如下&#xff1a; package com.huawei.l00379880.mythread.Ch…

网络安全教程初级指南

网络安全是当今最抢手的技能之一。如今&#xff0c;信息库如此庞大&#xff0c;节点网络也越来越庞大&#xff0c;网络安全的重要性也越来越高。 本网络安全教程适合初学者和专业人士。 在本教程中&#xff0c;您将学习有关网络安全的所有基本技能、工具和策略。 本网络安全…

Git 多人协作

1. 准备工作 ⽬前&#xff0c;我们所完成的⼯作如下 • 基本完成 Git 的所有本地库的相关操作&#xff0c;git基本操作&#xff0c;分⽀理解&#xff0c;版本回退&#xff0c;冲突解决等等。 • 申请码云账号&#xff0c;将远端信息clone到本地&#xff0c;以及推送和拉取。 …

Ubuntu下通过Docker部署Synapse服务器技术博客

今天&#xff0c;我在阿贝云这个不错的免费云服务器上进行Synapse部署测试。这家免费云服务商太棒了,1核CPU、1G内存、10G硬盘、5M带宽,阿贝云的免费服务器性能超乎想象。 作为一个资深的IT技术爱好者,我简直爱不释手Docker这个神器。它可以轻松地帮我部署各种应用程序,包括今…

【RabbitMQ】高级特性

本文将介绍一些RabbitMQ的重要特性。 官方文档&#xff1a;Protocol Extensions | RabbitMQ 本文是使用的Spring整合RabbitMQ环境。 生产者发送确认(publish confirm) 当消息发送给消息队列&#xff0c;如何确保消息队列一定收到消息呢&#xff0c;RabbitMQ通过 事务机制 和 …

Linux下使用cat、grep、sed查看文件任意几行的数据

使用grep命令 grep -C 5 foo file 显示file文件里匹配foo字串那行以及上下5行 grep -B 5 foo file 显示foo及前5行 grep -A 5 foo file 显示foo及后5行grep -C 行数 要查的关键字 文件名 使用cat与tail、head的组合命令 1、查看最后1000行的数据 cat filename | tail -n 1…

如何备份电脑所有数据?四个方法实现一键备份所有数据

备份电脑所有数据是一个重要的步骤&#xff0c;可以确保在数据丢失或损坏时能够迅速恢复。以下是一些备份电脑所有数据的方法&#xff0c;对于有重要数据的企业来说非常实用。 一、使用外置存储设备 选择设备&#xff1a;首先&#xff0c;选择一个容量足够大的外置存储设备&am…

flume--数据从kafka到hdfs发生错误

解决&#xff1a; #1.将flume自带的依赖删除 mv /opt/installs/flume1.9/lib/guava-11.0.2.jar /opt/installs/flume1.9/lib/guava-11.0.2.jar.bak #2.将hadoop的依赖发送到flume下 cp /opt/installs/hadoop3.1.4/share/hadoop/common/lib/guava-27.0-jre.jar /opt/installs/f…

wpf datagrid 实现双向绑定

前台 <DataGridAutoGenerateColumns"False"Background"White"CanUserAddRows"True"Grid.Row"1"RowEditEnding"DataGrid_OnRowEditEnding"RowHeight"60"SelectionUnit"CellOrRowHeader"x:Name"…

C# 数组,List,Stack,Dictionary,Queue,LinkedList 如何选择

回顾数据容器 变量 无符号 byte ushort uint ulong 有符号 sbyte short int long 浮点数 float double decimal 特殊 char bool string 复杂数据容器 枚举 enum 结构体 struct 数组&…

代驾系统源码开发中的用户体验优化:从设计到实现的全方位解析

在当今数字化时代&#xff0c;代驾服务已经成为城市生活中不可或缺的一部分。为了帮助开发者和企业快速搭建代驾服务平台&#xff0c;许多开源的代驾系统源码应运而生。这些源码不仅节省了开发时间&#xff0c;还为进一步的定制化开发提供了坚实的基础。本文将以“开源代驾系统…

nodejs小工具--pdf拆分

提示&#xff1a;pdf拆分 文章目录 [TOC](文章目录) 前言一、pdf-lib二、pdf拆分功能三、双击运行bat文件四、项目结构五、使用方法六、效果总结 前言 一、pdf-lib pdf-lib npm install pdf-lib --save-dev二、pdf拆分功能 index.js // 启动express服务 const express re…

【网络编程】select实现服务器与客户端进行通信

1、运行1个服务器和2个客户端 实现效果: 1、服务器和2个客户端互相聊天&#xff0c;服务器和客户端都需要使用select模型去实现 2、服务器要监视2个客户端是否连接&#xff0c;2个客户端是否发来消息&#xff0c;以及服务器自己的标准输入流 3、客户端…

智能停车计费系统设计与实现_urqs9

TOC springboot552智能停车计费系统设计与实现_urqs9--论文 绪 论 1.1 研究背景 在新世纪的今天&#xff0c;计算机已经发展到一定的规模&#xff0c;带动了国内经济和科学技术的快速发展&#xff0c;科学技术的发展大大提高了生产效率&#xff0c;使人们的物质生活需求得到…

DOM的重要核心

目录 DOM的创建 1.document.write 2.innerHTML 3.createElement 2.增加 3.删除 4.改 5.查 6.属性操作 7.事件操作 8.注册事件 8.1传统注册方式 8.2addEventListener事件监听方式 基本语法 监听点击事件 监听多个事件 移除事件监听器 DOM的创建 1.document.wri…

深度学习入门:循环神经网络------RNN概述,词嵌入层,循环网络层及案例实践!(万字详解!)

目录 &#x1f354; RNN 概述 1.1 循环神经网络 1.2 自然语言处理 &#x1f354; 词嵌入层 2.1 词嵌入层的使用 2.2 关于词嵌入层的思考 2.3 小节 &#x1f354; 循环网络层 3.1 RNN 网络原理 3.1.1 RNN计算过程 3.1.2 如何计算神经元内部 3.2 PyTorch RNN 层的使用…

虚拟机安装centos7-桥接模式

1、打开虚拟机&#xff0c;点击文件&#xff0c;选择新建虚拟机 2、选择典型&#xff0c;点击下一步 3、选择稍后安装操作系统&#xff0c;点击下一步 4、选择系统类型及版本&#xff0c;点击下一步&#xff0c;因centos7是Linux操作系统&#xff0c;且是64位的&#xff0c;所以…

唯大数据(大模型)论阻碍智能领域的创新吗?

唯大数据&#xff0c;即将大数据视为智能领域创新的唯一或主要驱动力&#xff0c;可能会带来一些挑战和限制。尽管大数据在智能系统中提供了丰富的信息和洞察&#xff0c;但过度依赖大数据也可能导致以下几个问题&#xff1a; 1、数据质量和偏差&#xff1a;大数据往往包含大量…

SpringMVC核心机制环境搭建

文章目录 1.SpringMVC执行流程1.基础流程图2.详细流程图 2.安装Tomcat1.下载2.解压到任意目录即可3.IDEA配置Tomcat1.配置Deloyment2.配置Server 3.创建maven项目1.创建sun-springmvc模块&#xff08;webapp&#xff09;2.查看是否被父模块管理3.pom.xml引入依赖4.目录5.SunDis…

Xshell链接本地20.04Ubuntu虚拟机

一、打开虚拟机设置选择自定义-net8 二、打开虚拟网络编辑器&#xff0c;点击更改设置 三、打开网络设置&#xff0c;如图操作 四。打开虚拟机&#xff0c;进入终端&#xff0c;输入ifconfig 五、su root进入root模式&#xff0c;配置静态网卡 # 备份配置文件 cd /etc/netpla…