开悟篇Docker从零到实战一篇文章搞定

目录

一:概述

1:why docker

2:Docker是什么?

3:Docker核心概念

二:初步体验

1:Docker核心架构图

2:准备工作

1:服务器

2:Docker安装

3:阿里云docker安装

4:镜像加速

 三:Docker命令和帮助文档的使用       

  1:帮助文档

2:镜像的基本操作

1:查看本地下载的所有镜像

2:搜索镜像

3:下载镜像

4:删除镜像

5:查看镜像信息

6:组合使用删除镜像

3:容器基本操作

1:运行容器

1:直接运行

2:映射宿主机和容器端口

3:不以前台shell终端的方式运行

4:启动容器指定名称

2:导入一个镜像

3:查看容器信息

        1:展示运行的docker容器

 2:列出所有容器

3:列出所有退出状态的容器

4:停止|关闭|重启|立即关闭容器

5:删除容器

  6:查看容器运行日志

7:查看容器内的进程

8:通过宿主机与容器内部进行交互

9:退出容器

10:文件交互

11:查看容器内进程

12:查看容器内细节命令

13:数据卷指令

14:将容器打成一个新的镜像

四:镜像原理

五:运行MySQL容器

1:下载MySQL镜像

2:启动镜像

 3:进入MYSQL容器的Bash

4:创建表

5:验证数据卷 完成了数据同步

6:docker运行MySQL的容器数据备份

六:运行Redis

七:运行ES

八:高级网络

        1:Docker容器之间通讯的必要性。

2:同一物理机上基于Docker引擎进行通讯的基本原理

3:总结

4:自定义网桥实现一组容器的通讯

1:创建自定义网桥

2:运行多个容器在指定网络中

九:高级数据卷

        1:数据卷是怎么回事

        2:数据卷基本原理

        1:查看docker维护的数据卷

        2:查看数据卷详细内容

        3:删除一个数据卷

        4:直接创建一个数据卷

十:Dockerfile

1:Dockerfile

2:Dockerfile构建流程

3:Dockerfile指令

1:FROM

2:RUN

3:EXPOSE       

4:WORKDIR

5:ADD

6:COPY

7:ENV

8:VOLUMN

9:CMD

10:ENTRYPOINT

十一:Dockerfile自定义项目镜像

1:创建SpringBoot系项目

2:开发简单功能,链接数据库

3:测试项目代码

4:打包项目代码jar

5:编写Dockerfile生成镜像

        6:运行Docker镜像

7:运行一个MySQL容器

8:搭建共享网络

9:最终结果展示

十二:Docker  Compose

1:docker compose引入

2:简介

3:如何使用

4:Docker Compose安装

5:docker-compose第一个案例

1:创建一个空项目

2:在ems下创建一个模板文件

3:如何启动docker-compose

6:docker-compose模板指令

1:build指令

2:覆盖命令command

3:container_name

4:depends_on

5:environment

6:evn-file指定文件

7:healthcheck

8:image

9:networks

10:volumes

11:restart

7:docker-compose常用命令

1:up

2:down

3:docker exec

4:ps

5:restart

6:rm

7:top

8:unpause/pause

9:logs

十三:Docker可视化工具

1:简介

2:安装并启用

3:安装结果


一:概述

1:why docker

        屏蔽环境差异。解决应用部署的不方便等。降低微服务部署时间。聚焦核心问题。

        实际公司中打包基本上都不是直接用docker,而是使用k8s。不了解docker更不容易了解k8s。

2:Docker是什么?

        VM虚拟机虚拟出来一套计算机,有虚拟的硬件设备和操作系统。Docker是一个应用容器引擎。一个容器可以理解为一个轻量级的虚拟机(只保留了操作系统必要的部分)

3:Docker核心概念

       docker引擎就像是Java的虚拟机,必须有这个东西,才能运行docker。

镜像 image

一个镜像代表一个软件。相当于一个容器的模板   

可以类比:我们安装盗版操作系统镜像   镜像可以创建容器。MySQL镜像,Redis镜像。MQ镜像。

特点:只读,不能修改

容器:一个轻量级的虚拟机。一个镜像运行一次就是一个容器。

镜像仓库:存放镜像的仓库:官方的镜像仓库:https://hub.docker.com/

本地仓库:用于存储在使用docker过程中相关镜像。都是从互联网仓库下载的。

二:初步体验

        gitlab是一个远程代码仓库。公司一般有自己的私有的gitlab。

1:Docker核心架构图

        阿里云镜像仓库:直接把国外的远程仓库,同步了一份。

2:准备工作

1:服务器

        首先需要准备一个linux环境,我们搞一个vm的虚拟机。或者购买云服务器。当前使用centos7并且要求4GB以上内存。

2:Docker安装

        官网的安装步骤

        卸载旧的docker

sudo dnf remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine

         安装yum工具

sudo yum install -y yum-utils

        设置仓库连接

sudo dnf -y install dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

         安装docker引擎

sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

        启动docker引擎

将docker加入开机自启动的服务
sudo systemctl enable --now docker启动dockersudo systemctl start docker

         验证是否安装成功

sudo docker run hello-world

        docker容器引擎,管理容器的,容器是镜像创建的。他会去镜像仓库拉去helloworld的镜像。容器会打印helloworld。

        停止docker

sudo systemctl stop docker

        查看docker状态

systemctl status docker 

        推荐将当前用户加入docker组。

        Linux当中有一个用户组的概念。root用户默认在root组,当前用户最好属于docker组,所以,我们先创建一个组,在将当前用户加入docker组。

        

sudo groupadd docker
usermod -aG docker $User
docker run hello-world

3:阿里云docker安装

阿里云提供了一个安装脚本,可以适配多种环境的安装。

通用方式安装:根据Linux发行版本无关。

获取该脚本:crul -fsSl get.docker.com -o get-docker.sh

执行脚本通过脚本下载,设置阿里云镜像下载:sudo sh get-docker.sh --mirror Aliyun

4:镜像加速

        阿里为每一个开发者都提供了唯一的镜像加速:

        登录阿里云--控制台--检索镜像加速服务--阿里云提供的镜像加速。

        默认镜像仓库是在国外,我们需要配置镜像加速。现在配置阿里云的镜像加速

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://docker.m.daocloud.io","https://docker.xuanyuan.me"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

        检测配置是否成功

[cuillei@bogon ~]$ docker info
Client: Docker Engine - CommunityVersion:    28.3.3Context:    defaultDebug Mode: falsePlugins:buildx: Docker Buildx (Docker Inc.)Version:  v0.26.1Path:     /usr/libexec/docker/cli-plugins/docker-buildxcompose: Docker Compose (Docker Inc.)Version:  v2.39.1Path:     /usr/libexec/docker/cli-plugins/docker-composeServer:Containers: 2Running: 0Paused: 0Stopped: 2Images: 3Server Version: 28.3.3Storage Driver: overlay2Backing Filesystem: xfsSupports d_type: trueUsing metacopy: falseNative Overlay Diff: trueuserxattr: falseLogging Driver: json-fileCgroup Driver: systemdCgroup Version: 2Plugins:Volume: localNetwork: bridge host ipvlan macvlan null overlayLog: awslogs fluentd gcplogs gelf journald json-file local splunk syslogCDI spec directories:/etc/cdi/var/run/cdiSwarm: inactiveRuntimes: io.containerd.runc.v2 runcDefault Runtime: runcInit Binary: docker-initcontainerd version: 05044ec0a9a75232cad458027ca83437aae3f4darunc version: v1.2.5-0-g59923efinit version: de40ad0Security Options:seccompProfile: builtincgroupnsKernel Version: 5.14.0-601.el9.x86_64Operating System: CentOS Stream 9OSType: linuxArchitecture: x86_64CPUs: 4Total Memory: 7.47GiBName: bogonID: 24d29ae4-9fbf-4edb-ac49-7126990a6c08Docker Root Dir: /var/lib/dockerDebug Mode: falseExperimental: falseInsecure Registries:::1/128127.0.0.0/8Registry Mirrors:https://lzsuuf9m.mirror.aliyuncs.com/Live Restore Enabled: false

        客户端引擎提供命令,服务端引擎运行服务。

        QQ也有自己的客户端和服务端。

        到这Docker已经安装成功并且成功启用了。

 三:Docker命令和帮助文档的使用       

  1:帮助文档

docker --help       这个是大致的命令(大而全)
docker ps --help    查看ps命令的详细用法

        或者访问官网地址查看文档

https://docs.docker.com/engine.reference/commandline/images/

2:镜像的基本操作

        镜像:image

docker version查看客户端引擎和server端的版本的信息。

docker info 查看docker详细信息。

docker --help 查看帮助信息

1:查看本地下载的所有镜像

docker iamge ls
或者
docker images

2:搜索镜像

        直接访问镜像地址,通过页面去看,一般都这么使用。

docker search mysql

3:下载镜像

        [非必写]如果不写就从官网下载,如果不写标签就拿最新的标签。

dcoker pull [镜像仓库地址/] 镜像名[:标签]
docker pull 镜像名    会自动拉去最新镜像
docker pull 镜像名:latest

        举例说明 

[root@bogon ~]# docker pull alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/mysql_optimized:20240221-8.0.32-2.3.0
20240221-8.0.32-2.3.0: Pulling from alinux3/mysql_optimized
Digest: sha256:47244750f28e6caf9fc91df2a945d75fa4b6f2be669ece643928591e833640b7
Status: Image is up to date for alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/mysql_optimized:20240221-8.0.32-2.3.0
alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/mysql_optimized:20240221-8.0.32-2.3.0

4:删除镜像

docker image rm 镜像名:tag
docker image rm 镜像IDrm的必须得是没有运行过的镜像。docker image rm -f 镜像名:tag
docker image rm -f 进项ID强制删除,会把镜像给删除掉。

5:查看镜像信息

        查看所有下载的镜像。

[root@bogon ~]# docker images
REPOSITORY                                                                           TAG                     IMAGE ID       CREATED         SIZE
anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/spark                      latest                  b774fd1e2551   17 months ago   617MB
anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/spark                      3                       0896f5fbc416   17 months ago   617MB
alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/mysql_optimized   20240221-8.0.32-2.3.0   07cddd322c54   18 months ago   899MB

repository:仓库地址

tag:标签

image Id:镜像唯一标

        查看镜像的id

[root@bogon ~]# docker images --help
Usage:  docker images [OPTIONS] [REPOSITORY[:TAG]]List imagesAliases:docker image ls, docker image list, docker imagesOptions:-a, --all             Show all images (default hides intermediate images)--digests         Show digests-f, --filter filter   Filter output based on conditions provided--format string   Format output using a custom template:'table':            Print output in table format with column headers (default)'table TEMPLATE':   Print output in table format using the given Go template'json':             Print in JSON format'TEMPLATE':         Print output using the given Go template.Refer to https://docs.docker.com/go/formatting/ for more information about formatting output with templates--no-trunc        Don't truncate output-q, --quiet           Only show image IDs--tree            List multi-platform images as a tree (EXPERIMENTAL)
[root@bogon ~]# docker images -q
b774fd1e2551
0896f5fbc416
07cddd322c54
[root@bogon ~]# 

        查看所有镜像的镜像id

[root@bogon ~]# docker images -a -q
b774fd1e2551
0896f5fbc416
07cddd322c54
[root@bogon ~]# docker images -aq
b774fd1e2551
0896f5fbc416
07cddd322c54
[root@bogon ~]# 

        列出所有镜像名字为mysql的镜像id

docker images  --filter=reference='busy*:*libc'
docker images  --filter=reference=mysql

6:组合使用删除镜像

[root@localhost /]# docker image rm -f $(docker image ls redis -q)
Untagged: redis:latest
Untagged: redis@sha256:b0efb06f6b4d8c1e2fd1b7c1e89e178d787b432b7b09286b4e7ea3dcdbac777a
Deleted: sha256:2f21f6e6fe03146ad470d4d98839e09d0fe91ed706320d970f9e749f5a3067bc
Deleted: sha256:75ef83067bb216d924be347737cdb1eb070e2260e98e8b5e3525eeb995b4c884
Deleted: sha256:180ef53c584c69b4dfb83b05d42c686c1ed86f108eb116f67ad8d7571a123f18
Deleted: sha256:b7610a1994c4493f5c5ac846b6d6a837467bcb733679c1e7214bcd30eee3752a
Deleted: sha256:f0603094ff40fa7b5317b275dd3e5504042976d5b603f10034370351729859c7
Deleted: sha256:fcd63cd28f76d69c90b16fc090ed4a9426593d83bba8952841d36a992f473a45
Deleted: sha256:15e9161d29cc235e8f8693ddeafc94d9b03ed88ca420e9e65b632c01bf2f8cef
[root@localhost /]# 

3:容器基本操作

        容器的相关操作。

1:运行容器

1:直接运行
docker run 镜像名:tag
docker run 镜像ID
docker run 仓库地址/镜像名:tag
[root@localhost /]# docker run --ulimit nofile=65536:65536 -m 4g tomcat:9.0-jre11
Unable to find image 'tomcat:9.0-jre11' locally
9.0-jre11: Pulling from library/tomcat
32f112e3802c: Pull complete 
ebe18f308a67: Pull complete 
37221a9ff962: Pull complete 
717c0d286ea2: Pull complete 
3284fba73e3e: Pull complete 
be4d776a2aa1: Pull complete 
4f4fb700ef54: Pull complete 
c178adfbd8af: Pull complete 
0a753fd26410: Pull complete 
Digest: sha256:9fd04e8a3a44492a0637dae2f437e6cfe532dd162e9f26a05411cf03cc1990bf
Status: Downloaded newer image for tomcat:9.0-jre11
NOTE: Picked up JDK_JAVA_OPTIONS:  --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
12-Aug-2025 13:31:45.447 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name:   Apache Tomcat/9.0.108
12-Aug-2025 13:31:45.450 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Jul 31 2025 18:19:48 UTC
12-Aug-2025 13:31:45.450 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 9.0.108.0
12-Aug-2025 13:31:45.450 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Linux
12-Aug-2025 13:31:45.450 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            5.14.0-601.el9.x86_64
12-Aug-2025 13:31:45.450 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture:          amd64
12-Aug-2025 13:31:45.451 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:             /opt/java/openjdk
12-Aug-2025 13:31:45.451 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version:           11.0.28+6
12-Aug-2025 13:31:45.451 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor:            Eclipse Adoptium
12-Aug-2025 13:31:45.451 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         /usr/local/tomcat
12-Aug-2025 13:31:45.451 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         /usr/local/tomcat
12-Aug-2025 13:31:45.459 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang=ALL-UNNAMED
12-Aug-2025 13:31:45.459 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang.invoke=ALL-UNNAMED
12-Aug-2025 13:31:45.459 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang.reflect=ALL-UNNAMED
12-Aug-2025 13:31:45.460 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.io=ALL-UNNAMED
12-Aug-2025 13:31:45.460 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.util=ALL-UNNAMED
12-Aug-2025 13:31:45.460 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
12-Aug-2025 13:31:45.460 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
12-Aug-2025 13:31:45.460 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties
12-Aug-2025 13:31:45.460 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
12-Aug-2025 13:31:45.460 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
12-Aug-2025 13:31:45.460 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
12-Aug-2025 13:31:45.460 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dsun.io.useCanonCaches=false
12-Aug-2025 13:31:45.460 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
12-Aug-2025 13:31:45.461 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs=
12-Aug-2025 13:31:45.461 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/usr/local/tomcat
12-Aug-2025 13:31:45.461 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/usr/local/tomcat
12-Aug-2025 13:31:45.461 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/usr/local/tomcat/temp
12-Aug-2025 13:31:45.469 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded Apache Tomcat Native library [1.3.1] using APR version [1.7.2].
12-Aug-2025 13:31:45.469 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true], UDS [true].
12-Aug-2025 13:31:45.469 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
12-Aug-2025 13:31:45.472 INFO [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL successfully initialized [OpenSSL 3.0.13 30 Jan 2024]
12-Aug-2025 13:31:45.653 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
12-Aug-2025 13:31:45.669 INFO [main] org.apache.catalina.startup.Catalina.load Server initialization in [366] milliseconds
12-Aug-2025 13:31:45.707 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
12-Aug-2025 13:31:45.707 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/9.0.108]
12-Aug-2025 13:31:45.718 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
12-Aug-2025 13:31:45.731 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [61] milliseconds

        容器ID,基于那个image创建,容器内执行程序的命令,容器创建时间,当前状态(up,dwon),容器内服务监听的端口,容器的名字。

        这样运行一个容器没有任何意义,因为容器与当前机器没有进行交互。容器与容器之间也是隔离的。

        我们想在希望8080可以直接访问容器的8080接口,这个时候就需要映射宿主机端口和容器端口,这样访问宿主机端口的时候,就会直接将宿主机端口内容转向容器端口。

docker run -p 8080:8080 tomcat:9.0jre11启动 将系统的8080端口:专项 容器内服务监听的8080端口再起一个窗口
docker run -p 8081:8080 tomcat:9.0jre11
2:映射宿主机和容器端口
[root@localhost ~]# docker run -p 8080:8080 tomcat:9.0-jre11
NOTE: Picked up JDK_JAVA_OPTIONS:  --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
12-Aug-2025 13:58:54.745 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name:   Apache Tomcat/9.0.108
12-Aug-2025 13:58:54.747 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Jul 31 2025 18:19:48 UTC
12-Aug-2025 13:58:54.747 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 9.0.108.0
12-Aug-2025 13:58:54.747 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Linux
12-Aug-2025 13:58:54.747 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            5.14.0-601.el9.x86_64
12-Aug-2025 13:58:54.747 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture:          amd64
12-Aug-2025 13:58:54.747 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:             /opt/java/openjdk
12-Aug-2025 13:58:54.747 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version:           11.0.28+6
12-Aug-2025 13:58:54.748 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor:            Eclipse Adoptium
12-Aug-2025 13:58:54.748 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         /usr/local/tomcat
12-Aug-2025 13:58:54.748 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         /usr/local/tomcat
12-Aug-2025 13:58:54.763 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang=ALL-UNNAMED
12-Aug-2025 13:58:54.763 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang.invoke=ALL-UNNAMED
12-Aug-2025 13:58:54.763 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang.reflect=ALL-UNNAMED
12-Aug-2025 13:58:54.763 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.io=ALL-UNNAMED
12-Aug-2025 13:58:54.764 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.util=ALL-UNNAMED
12-Aug-2025 13:58:54.764 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
12-Aug-2025 13:58:54.764 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
12-Aug-2025 13:58:54.764 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties
12-Aug-2025 13:58:54.764 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
12-Aug-2025 13:58:54.764 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
12-Aug-2025 13:58:54.764 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
12-Aug-2025 13:58:54.764 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dsun.io.useCanonCaches=false
12-Aug-2025 13:58:54.764 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
12-Aug-2025 13:58:54.764 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs=
12-Aug-2025 13:58:54.764 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/usr/local/tomcat
12-Aug-2025 13:58:54.764 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/usr/local/tomcat
12-Aug-2025 13:58:54.764 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/usr/local/tomcat/temp
12-Aug-2025 13:58:54.769 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded Apache Tomcat Native library [1.3.1] using APR version [1.7.2].
12-Aug-2025 13:58:54.769 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true], UDS [true].
12-Aug-2025 13:58:54.769 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
12-Aug-2025 13:58:54.773 INFO [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL successfully initialized [OpenSSL 3.0.13 30 Jan 2024]
12-Aug-2025 13:58:54.966 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
12-Aug-2025 13:58:54.983 INFO [main] org.apache.catalina.startup.Catalina.load Server initialization in [402] milliseconds
12-Aug-2025 13:58:55.035 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
12-Aug-2025 13:58:55.036 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/9.0.108]
12-Aug-2025 13:58:55.048 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
12-Aug-2025 13:58:55.073 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [89] milliseconds

        测试效果

3:不以前台shell终端的方式运行

        上边的例子是以前段shell终端的例子运行,现在我们不这样运行了。

[root@localhost /]# docker run -p 8080:8080 -d tomcat:9.0-jre11
644a2e27f2fad966e8659f7c0dcbd2c1d37ca573c7d5029571d429844baf0f36
[root@localhost /]# docker ps
CONTAINER ID   IMAGE              COMMAND             CREATED              STATUS              PORTS                                         NAMES
644a2e27f2fa   tomcat:9.0-jre11   "catalina.sh run"   About a minute ago   Up About a minute   0.0.0.0:8080->8080/tcp, [::]:8080->8080/tcp   sleepy_lichterman## -d就表示后台运行
## 返回一个容器ID
4:启动容器指定名称
docker run -p 8080:8080 -p 8081:8081 -d --name tomcat01 tomat:9.0-jre11## MQ往往有两个端口,需要映射两个外部端口。[root@localhost /]# docker run -p 8083:8080 -d --name tomcat01 tomcat:9.0-jre11
7508c78a5f6dbe46e06e70051eafd32f8d8e0a8c09239383039c437b42dff757
[root@localhost /]# 
[root@localhost /]# 
[root@localhost /]# 
[root@localhost /]# docker ps
CONTAINER ID   IMAGE              COMMAND             CREATED          STATUS          PORTS                                         NAMES
7508c78a5f6d   tomcat:9.0-jre11   "catalina.sh run"   23 seconds ago   Up 22 seconds   0.0.0.0:8083->8080/tcp, [::]:8083->8080/tcp   tomcat01
644a2e27f2fa   tomcat:9.0-jre11   "catalina.sh run"   6 minutes ago    Up 6 minutes    0.0.0.0:8080->8080/tcp, [::]:8080->8080/tcp   sleepy_lichterman
[root@localhost /]# 

2:导入一个镜像

docker load -i 镜像名

3:查看容器信息

        1:展示运行的docker容器
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE              COMMAND             CREATED          STATUS          PORTS                                         NAMES
cb325c0e80f1   tomcat:9.0-jre11   "catalina.sh run"   3 minutes ago    Up 3 minutes    0.0.0.0:8081->8080/tcp, [::]:8081->8080/tcp   focused_shaw
b54865dcfaf9   tomcat:9.0-jre11   "catalina.sh run"   7 minutes ago    Up 7 minutes    0.0.0.0:8080->8080/tcp, [::]:8080->8080/tcp   gracious_wiles
dd969070533f   tomcat:9.0-jre11   "catalina.sh run"   39 minutes ago   Up 39 minutes   8080/tcp                                      hopeful_curran
[root@localhost ~]# 

        重点关注下ports 0.0.0.0表示任意Ip可以访问(默认开启所有远程权限),第三个代表谁也访问不了。

        下图:说明说明没有容器在进行运行。

 2:列出所有容器

无论是否在运行

docker ps -a
[root@localhost /]# docker ps
CONTAINER ID   IMAGE              COMMAND             CREATED          STATUS          PORTS                                         NAMES
7508c78a5f6d   tomcat:9.0-jre11   "catalina.sh run"   23 seconds ago   Up 22 seconds   0.0.0.0:8083->8080/tcp, [::]:8083->8080/tcp   tomcat01
644a2e27f2fa   tomcat:9.0-jre11   "catalina.sh run"   6 minutes ago    Up 6 minutes    0.0.0.0:8080->8080/tcp, [::]:8080->8080/tcp   sleepy_lichterman
[root@localhost /]# 
[root@localhost /]# 
[root@localhost /]# 
[root@localhost /]# 
[root@localhost /]# 
[root@localhost /]# docker ps -a
CONTAINER ID   IMAGE              COMMAND             CREATED          STATUS                        PORTS                                         NAMES
7508c78a5f6d   tomcat:9.0-jre11   "catalina.sh run"   2 minutes ago    Up 2 minutes                  0.0.0.0:8083->8080/tcp, [::]:8083->8080/tcp   tomcat01
644a2e27f2fa   tomcat:9.0-jre11   "catalina.sh run"   8 minutes ago    Up 8 minutes                  0.0.0.0:8080->8080/tcp, [::]:8080->8080/tcp   sleepy_lichterman
cb325c0e80f1   tomcat:9.0-jre11   "catalina.sh run"   16 minutes ago   Exited (129) 8 minutes ago                                                  focused_shaw
b54865dcfaf9   tomcat:9.0-jre11   "catalina.sh run"   19 minutes ago   Exited (129) 8 minutes ago                                                  gracious_wiles
323bcddd3a0e   tomcat:9.0-jre11   "catalina.sh run"   24 minutes ago   Exited (130) 23 minutes ago                                                 nervous_rhodes
dd969070533f   tomcat:9.0-jre11   "catalina.sh run"   51 minutes ago   Exited (130) 8 minutes ago                                                  hopeful_curran
9e705b288eae   tomcat:8.0-jre8    "catalina.sh run"   52 minutes ago   Exited (139) 52 minutes ago                                                 wonderful_bohr
47779f64faf7   tomcat:8.0-jre8    "catalina.sh run"   53 minutes ago   Exited (139) 53 minutes ago                                                 laughing_babbage
dcb79690494e   tomcat:8.0-jre8    "catalina.sh run"   53 minutes ago   Exited (139) 53 minutes ago                                                 dazzling_saha
36e122433fa8   tomcat:8.0-jre8    "catalina.sh run"   54 minutes ago   Exited (139) 54 minutes ago                                                 intelligent_murdock
a22062e617ea   tomcat:8.0-jre8    "catalina.sh run"   58 minutes ago   Exited (139) 58 minutes ago                                                 suspicious_goldberg
9aac67eb0ee0   74cc54e27dc4       "/hello"            22 hours ago     Exited (0) 22 hours ago                                                     wonderful_lamarr
[root@localhost /]# 
3:列出所有退出状态的容器
docker ps -f status=exited

        列出所有退出状态的容器的ID

docker ps -f status=exited -q

        容器继续运行的条件:docker当中容器继续能运行的条件,docker必须得有一个前台进行,如果没有前台进程。容器被认为空闲, 就会退出。

        helloworld这个容器执行完毕之后,就完事了。这种的没有前台进程,后续就不在运行了。

4:停止|关闭|重启|立即关闭容器
docker start 容器名称|ID
docker stop 容器名称|ID
docker restart 容器名称|ID
docker kill 容器名称|ID[root@localhost /]# docker start dd969070533f
dd969070533f
[root@localhost /]# docker restart dd969070533f
dd969070533f
[root@localhost /]# docker stop  dd969070533f
dd969070533f
[root@localhost /]# docker start  dd969070533f
dd969070533f
[root@localhost /]# docker kill  dd969070533f
dd969070533f
[root@localhost /]# docker ps
CONTAINER ID   IMAGE              COMMAND             CREATED          STATUS          PORTS                                         NAMES
7508c78a5f6d   tomcat:9.0-jre11   "catalina.sh run"   9 minutes ago    Up 9 minutes    0.0.0.0:8083->8080/tcp, [::]:8083->8080/tcp   tomcat01
644a2e27f2fa   tomcat:9.0-jre11   "catalina.sh run"   14 minutes ago   Up 14 minutes   0.0.0.0:8080->8080/tcp, [::]:8080->8080/tcp   sleepy_lichterman
[root@localhost /]# docker      ps  -a
CONTAINER ID   IMAGE              COMMAND             CREATED             STATUS                           PORTS                                         NAMES
7508c78a5f6d   tomcat:9.0-jre11   "catalina.sh run"   9 minutes ago       Up 9 minutes                     0.0.0.0:8083->8080/tcp, [::]:8083->8080/tcp   tomcat01
644a2e27f2fa   tomcat:9.0-jre11   "catalina.sh run"   14 minutes ago      Up 14 minutes                    0.0.0.0:8080->8080/tcp, [::]:8080->8080/tcp   sleepy_lichterman
cb325c0e80f1   tomcat:9.0-jre11   "catalina.sh run"   23 minutes ago      Exited (129) 15 minutes ago                                                    focused_shaw
b54865dcfaf9   tomcat:9.0-jre11   "catalina.sh run"   26 minutes ago      Exited (129) 15 minutes ago                                                    gracious_wiles
323bcddd3a0e   tomcat:9.0-jre11   "catalina.sh run"   31 minutes ago      Exited (130) 29 minutes ago                                                    nervous_rhodes
dd969070533f   tomcat:9.0-jre11   "catalina.sh run"   58 minutes ago      Exited (137) 15 seconds ago                                                    hopeful_curran
9e705b288eae   tomcat:8.0-jre8    "catalina.sh run"   59 minutes ago      Exited (139) 59 minutes ago                                                    wonderful_bohr
47779f64faf7   tomcat:8.0-jre8    "catalina.sh run"   About an hour ago   Exited (139) About an hour ago                                                 laughing_babbage
dcb79690494e   tomcat:8.0-jre8    "catalina.sh run"   About an hour ago   Exited (139) About an hour ago                                                 dazzling_saha
36e122433fa8   tomcat:8.0-jre8    "catalina.sh run"   About an hour ago   Exited (139) About an hour ago                                                 intelligent_murdock
a22062e617ea   tomcat:8.0-jre8    "catalina.sh run"   About an hour ago   Exited (139) About an hour ago                                                 suspicious_goldberg
9aac67eb0ee0   74cc54e27dc4       "/hello"            22 hours ago        Exited (0) 22 hours ago                                                        wonderful_lamarr
[root@localhost /]# 
5:删除容器
docker rm 容器名称|容器ID[root@localhost /]# docker rm 9aac
9aac
[root@localhost /]# docker rm -f $(docker ps -a -q)
7508c78a5f6d
644a2e27f2fa
cb325c0e80f1
b54865dcfaf9
323bcddd3a0e
dd969070533f
9e705b288eae
47779f64faf7
dcb79690494e
36e122433fa8
a22062e617ea
[root@localhost /]# 
  6:查看容器运行日志
docker logs 容器ID:容器名称
docker logs -f 容器ID:容器名称 事实查看日志。
docker logs -f -t 容器id:容器名称  实时且有时间戳。
docker logs --tail 5 查看文件尾部最后5行。
7:查看容器内的进程
docker top 容器ID|容器名称[root@localhost /]# docker ps
CONTAINER ID   IMAGE              COMMAND             CREATED         STATUS         PORTS                                         NAMES
87c68ee3529b   tomcat:9.0-jre11   "catalina.sh run"   6 minutes ago   Up 6 minutes   0.0.0.0:8080->8080/tcp, [::]:8080->8080/tcp   tomcat01
[root@localhost /]# docker top 87c
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                7658                7636                0                   10:56               ?                   00:00:02            /opt/java/openjdk/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dsun.io.useCanonCaches=false -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start
[root@localhost /]# PID容器内部的进程的ID。
8:通过宿主机与容器内部进行交互

        进入容器

docker exec -it 容器ID|容器名称  bash-it:进入容器的交互模型
exec:进入
bash:容器内部交互页面[root@localhost /]# docker ps
CONTAINER ID   IMAGE              COMMAND             CREATED         STATUS         PORTS                                         NAMES
87c68ee3529b   tomcat:9.0-jre11   "catalina.sh run"   6 minutes ago   Up 6 minutes   0.0.0.0:8080->8080/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/95436.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/95436.shtml

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

相关文章

LINUX驱动篇(二)驱动开发

系列文章目录 文章目录系列文章目录总结介绍字符设备驱动工作原理驱动框架加载卸载注册注销设备号详解打开关闭等操作实例分析led驱动编写地址映射LED驱动改进驱动方式总结自动注册注销设备号自动创建设备节点设备树设备树LED驱动实验pinctrl和gpio并发和竞争原子操作自旋锁块设…

【工具】开源大屏设计器 自用整理

【工具】开源大屏设计器 自用整理 GoView低代码数据可视化 GoView 说明文档 | 低代码数据可视化开发平台 JimuReport积木报表(免费报表工具) https://github.com/jeecgboot/JimuReport 「数据可视化&#xff1a;报表、大屏、数据看板」积木报表是一款类Excel操作风格&#xf…

.NetCore MVC

这个是我自己记得笔记&#xff0c;最好有点基础看我的。 html 辅助标签 Html.DropList 分布视图 使用 RenderPartialAsync 呈现分部视图。 此方法不返回 IHtmlContent。 它将呈现的输出直接流式传输到响应。 因为该方法不返回结果&#xff0c;所以必须在 Razor 代码块内调用它…

@GitLab 介绍部署使用详细指南

文章目录**GitLab 介绍&部署&使用详细指南****1. GitLab 介绍与核心概念****1.1 什么是 GitLab&#xff1f;****1.2 核心特性****1.3 版本区别****2. 部署指南 (以 Ubuntu 22.04 LTS 为例)****2.1 环境准备****2.2 安装步骤****2.3 重要配置文件****3. 基本使用入门***…

如何通过 AI IDE 集成开发工具快速生成简易留言板系统

在当今快速迭代的软件开发环境中&#xff0c;AI 辅助编程工具已经成为开发者提高效率的重要手段。本文将详细介绍如何利用 AI IDE 集成开发工具快速构建一个功能完整的简易留言板系统&#xff0c;涵盖从需求分析到部署上线的全过程&#xff0c;并提供完整代码、流程图、Prompt …

机器学习:从技术原理到实践应用的深度解析

目录引言一.什么是机器学习&#xff08;ML&#xff09;&#xff1f;——从技术本质到核心目标1.与传统编程的本质区别&#xff1a;规则的“来源不同”2.核心目标&#xff1a;在“偏差-方差权衡”下优化性能指标二.机器学习的核心分类——基于“数据标签”与“学习范式”的技术划…

[muduo网络库]-muduo库TcpServer类解析

本贴用于记录muduo库的学习过程&#xff0c;以下是关于TcpServer的个人理解。 TcpServer内含Acceptor、threadpool等类&#xff0c;算是把主线程所有要做的事封装了起来。 重要成员变量 EventLoop *loop_; // baseloop 用户自定义的loopconst std::string ipPort_;const std…

工作两年,最后从css转向tailwind了!

菜鸟上班已经两年了&#xff0c;从一个对技术充满热情的小伙子&#xff0c;变成了一个职场老鸟了。自以为自己在不停的学习&#xff0c;但是其实就是学一些零碎的知识点&#xff0c;比如&#xff1a;vue中什么东西没见过、js什么特性没用过、css新出了个啥 …… 菜鸟感觉自己也…

macOS 更新后找不到钥匙串访问工具的解决方案

macOS 更新后找不到钥匙串访问工具的解决方案 随着macOS的不断更新&#xff0c;一些系统工具的位置可能会发生变化&#xff0c;给用户带来不便。钥匙串访问&#xff08;Keychain Access&#xff09;是macOS中一个非常重要的工具&#xff0c;用于管理密码、证书等敏感信息。最近…

深入理解Go 与 PHP 在参数传递上的核心区别

$run_return_data []; $ret $this->handleData($event_req_info, $run_return_data); public function handleData($event_req_info, &$run_return_data): array {$run_return_data [ //使用引用变量返回数据shop_id > $shop_id,request_id > $request_…

【Dify智能体】2025 最新版Linux部署Dify教程(Ubuntu)

一、前言 Dify 是一款开源的智能体工作流平台,可以用来快速构建 AI 应用。相比手动搭建复杂的依赖环境,Docker Compose 部署方式更简单、更快速、更稳定。本文将一步步带你在 Ubuntu 22.04 + Docker Compose v2 上安装 Dify,并给出常见问题与优化方案。 ps:如果还没有安装…

基础思想:动态规划与贪心算法

一、动态规划核心思想&#xff1a;将复杂问题分解为相互重叠的子问题&#xff0c;通过保存子问题的解来避免重复计算&#xff08;记忆化&#xff09;。动态规划需要通过子问题的最优解&#xff0c;推导出最终问题的最优解&#xff0c;因此这种方法特别注重子问题之间的转移关系…

使用生成对抗网络增强网络入侵检测性能

文章目录前言一、GAN 模型介绍二、研究方法1.数据集选择与处理2.IDS 基线模型构建3. GAN 模型设计与样本生成4.生成样本质量评估三、实验评估四、总结前言 网络入侵检测系统&#xff08;Network Intrusion Detection System, NIDS&#xff09;在保护关键数字基础设施免受网络威…

VR森林经营模拟体验带动旅游经济发展

将VR森林经营模拟体验作为一种独特的旅游项目&#xff0c;正逐渐成为旅游市场的新热点。游客们无需长途跋涉前往深山老林&#xff0c;只需在旅游景区的VR体验中心&#xff0c;戴上VR设备&#xff0c;就能开启一场奇妙的森林之旅。在虚拟森林中&#xff0c;他们可以尽情探索&…

Vue2存量项目国际化改造踩坑

Vue2存量项目国际化改造踩坑 一、背景 在各类业务场景中&#xff0c;国际化作为非常重要的一部分已经有非常多成熟的方案&#xff0c;但对于一些存量项目则存在非常的改造成本&#xff0c;本文将分享一个的Vue2项目国际化改造方案&#xff0c;通过自定义Webpack插件自动提取中文…

硬件开发(1)—单片机(1)

1.单片机相关概念1.CPU&#xff1a;中央处理器&#xff0c;数据运算、指令处理&#xff0c;CPU性能越高&#xff0c;完成指令处理和数据运算的速度越快核心&#xff1a;指令解码执行数据运算处理2.MCU&#xff1a;微控制器&#xff0c;集成度比较高&#xff0c;将所有功能集成到…

Elasticsearch面试精讲 Day 4:集群发现与节点角色

【Elasticsearch面试精讲 Day 4】集群发现与节点角色 在“Elasticsearch面试精讲”系列的第四天&#xff0c;我们将深入探讨Elasticsearch分布式架构中的核心机制——集群发现&#xff08;Cluster Discovery&#xff09;与节点角色&#xff08;Node Roles&#xff09;。这是构…

微信小程序长按识别图片二维码

提示&#xff1a;二维码图片才能显示识别菜单1.第一种方法添加属性&#xff1a;show-menu-by-longpress添加属性&#xff1a;show-menu-by-longpress <image src"{{shop.wx_qrcode}}" mode"widthFix" show-menu-by-longpress></image>2.第二种…

智能化数据平台:AI 与大模型驱动的架构升级

在前面的文章中,我们探讨了 存算分离与云原生,以及 流批一体化计算架构 的演进趋势。这些演进解决了“算力与数据效率”的问题。但在今天,企业在数据平台上的需求已经从 存储与计算的统一,逐步走向 智能化与自动化。 尤其是在 AI 与大模型快速发展的背景下,数据平台正在发…

解锁 Vue 动画的终极指南:Vue Bits 实战进阶教程,让你的Vue动画比原生动画还丝滑,以及动画不生效解决方案。

一条 Splash Cursor 的 10 秒 Demo 视频曾创下 200 万 播放量&#xff0c;让 React Bits 风靡全球。如今&#xff0c;Vue 开发者终于迎来了官方移植版 —— Vue Bits。 在现代 Web 开发中&#xff0c;UI 动效已成为提升用户体验的关键因素。Vue Bits 作为 React Bits 的官方 Vu…