最新资讯

  • docker——容器化部署

docker——容器化部署

2025-04-27 07:01:01 0 阅读

docker官网:https://hub.docker.com/

docker中文菜鸟教程:https://www.runoob.com/docker/docker-tutorial.html

1. Docker架构与容器化

docker的底层原理

  • Docker是基于Google公司推出的Golang语言开发而来,基于Linux内核的Cgroups、NameSpace,以及Union Fs等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。
  • 对进程进行封装隔离,属于操作系统层面的虚拟化技术。
  • 利用Docker可以实现开发,测试,生产环境的部署一致性,极大的减少运维成本。
    docker安装部署
    docker最核心的组件
  • image镜像,构建容器(我们讲应用程序运行所需的环境,打包为镜像文件)。
  • Container,容器(你的应用程序,就跑在容器中)
  • 镜像仓库(dockerhub)(保存镜像文件,提供上传下载镜像)作用好比github
  • Dockerfile,将你部署项目的操作,写成一个部署脚本,这就是dockerfile,且该脚本还能够构建出镜像文件

docker容器化技术



2. Linux环境安装docker

官网详细步骤:https://docs.docker.com/engine/install/centos/

# 移除旧版本docker
sudo yum remove docker 
                  docker-client 
                  docker-client-latest 
                  docker-common 
                  docker-latest 
                  docker-latest-logrotate 
                  docker-logrotate 
                  docker-engine

# 配置docker yum源。
sudo yum install -y yum-utils
sudo yum-config-manager 
--add-repo 
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo


# 安装 最新 docker
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 启动 docker (只是当前启动,关机重启后还是要重新启动)
sudo systemctl start docker

# 开机自启动docker; enable + start 二合一
systemctl enable docker --now

# 配置加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
		"https://dockerproxy.com",
 	    "https://hub-mirror.c.163.com",
  	    "https://mirror.baidubce.com",
   		"https://ccr.ccs.tencentyun.com",
		"https://3zdb8399.mirror.aliyuncs.com",
		"https://docker.m.daocloud.io",
		"https://docker.mirrors.sjtug.sjtu.edu.cn"
	]
}
EOF

# 重新加载重启
sudo systemctl daemon -reload
sudo systemctl restart docker

3. docker常见命令

演示:使用docker启动一个nginx,发布自己的页面,让其他人能访问。

镜像操作


容器操作

-d 后台启动
-P 是容器内部端口随机映射到主机的端口。
-p 是容器内部端口绑定到指定的主机端口。



保存镜像


发布镜像

完整命令如下:

#查看运行中的容器
docker ps
#查看所有容器
docker ps -a
#搜索镜像
docker search nginx
#下载镜像
docker pull nginx
#下载指定版本镜像
docker pull nginx:1.26.0
#查看所有镜像
docker images
#删除指定id的镜像
docker rmi e784f4560448


#运行一个新容器(前台启动,会阻塞控制台)
docker run nginx
#停止容器 容器名或者id
docker stop keen_blackwell
#启动容器
docker start 592f
#重启容器
docker restart 592f
#查看容器资源占用情况
docker stats 592f
#查看容器日志
docker logs 592f
#删除指定容器(运行中容器删除回报错,需要先停止)
docker rm 592f
#强制删除指定容器
docker rm -f 592f
# 后台启动容器
docker run -d --name mynginx nginx
# 后台启动并暴露端口(端口映射:外部主机端口-->内部容器端口)
docker run -d --name mynginx -p 80:80 nginx
# 进入容器内部
docker exec -it mynginx /bin/bash

# 提交容器变化打成一个新的镜像
docker commit -m "update index.html" mynginx mynginx:v1.0
# 保存镜像为指定文件
docker save -o mynginx.tar mynginx:v1.0
# 删除多个镜像
docker rmi bde7d154a67f 94543a6c1aef e784f4560448
# 加载镜像
docker load -i mynginx.tar 


# 登录 docker hub
docker login
# 重新给镜像打标签
docker tag mynginx:v1.0 codese/mynginx:v1.0
# 推送镜像
docker push codese/mynginx:v1.0

# 清理掉所有处于终止状态的容器。
docker container prune

注意:需要打开防火墙指定端口外部才能访问,linux命令如下:

#firewall 防火墙指令
打开端口: firewall-cmd --permanent --add-port=端口号/协议
关闭端口: firewall-cmd --permanent --remove-port=端口号/协议
重新载入,才能生效 : firewall-cmd --reload
查询端口是否开放: firewall-cmd --query-port=端口/协议
查询所有开放的端口:firewall-cmd --zone=public --list-ports

4. docker 存储

使用外部目录挂载、数据卷,保证容器出现问题或删除后,容器的数据不丢失。

#查看所有容器情况
docker ps -a
#查看所有容器ID
docker ps -aq
#批量删除所有容器
docker rm -f $(docker ps -aq)

两种方式,注意区分:
● 目录挂载: -v /app/nghtml:/usr/share/nginx/html
● 卷映射:-v ngconf:/etc/nginx

目录挂载







注意细节:
使用目录挂载时,默认以挂载目录文件为准。而容器一启动就会根据启动参数自动创建需要挂载的目录,而且初始是空的,这意味着如果是访问页面或者读取配置文件就会报错。(除非提前放置相应的文件)

卷映射



查看卷的相关操作

# 查看所有的卷
docker volume ls
# 创建一个卷
docker volume create haha
# 查看卷详情
docker volume inspect ngconf

5. docker网络

只要docker就有一个默认的网络网卡docker0,每启动一个容器都会加入到这个网络且分配iP。

#批量删除所有容器
docker rm -f $(docker ps -aq)
# 查看网卡信息
ip a
# 启动两个容器
docker run -d -p 88:80 --name app1 nginx
docker run -d -p 99:80 --name app2 nginx
# 查看容器详情
docker  inspect app1
docker  inspect app2
#进入容器内部访问
docker exec -it app1 /bin/bash
curl http://192.168.31.59:99 # 绕了一圈外面在进去,不可取
curl http://172.17.0.3:80 # 容器内部直接访问




优化—使用自定义网络

#批量删除所有容器
docker rm -f $(docker ps -aq)
# 自定义网络
docker network create mynet
# 查看
docker network ls
# 启动两个容器
docker run -d -p 88:80 --name app1 --network mynet  nginx
docker run -d -p 99:80 --name app2 --network mynet  nginx
# 查看容器详情
docker  inspect app1
docker  inspect app2

#进入容器内部访问
docker exec -it app1 /bin/bash
curl http://app2:80 # 内部访问,稳定域名


案例:redis主从同步集群

#自定义网络
docker network create mynet
#主节点
docker run -d -p 6379:6379 
-v /app/rd1:/bitnami/redis/data 
-e REDIS_REPLICATION_MODE=master 
-e REDIS_PASSWORD=123456 
--network mynet --name redis01 
bitnami/redis

#从节点
docker run -d -p 6380:6379 
-v /app/rd2:/bitnami/redis/data 
-e REDIS_REPLICATION_MODE=slave 
-e REDIS_MASTER_HOST=redis01 
-e REDIS_MASTER_PORT_NUMBER=6379 
-e REDIS_MASTER_PASSWORD=123456 
-e REDIS_PASSWORD=123456 
--network mynet --name redis02 
bitnami/redis


使用redis数据库连接工具测试


在主数据库添加、修改、删除数据,看从数据库的变化。

容器启动MySQL

docker run -d -p 3306:3306 
-v /app/myconf:/etc/mysql/conf.d 
-v /app/mydata:/var/lib/mysql 
-e MYSQL_ROOT_PASSWORD=123456 
mysql:8.0.37-debian

6. Docker Compose (批量管理容器工具)


案例:

compose编写文档:https://docs.docker.com/reference/compose-file/

#批量删除原来容器
docker rm -f $(docker ps -aq)

#创建网络
docker network create blog

#启动mysql
docker run -d -p 3306:3306 
-e MYSQL_ROOT_PASSWORD=123456 
-e MYSQL_DATABASE=wordpress 
-v mysql-data:/var/lib/mysql 
-v /app/myconf:/etc/mysql/conf.d 
--restart always --name mysql 
--network blog 
mysql:8.0

#启动wordpress
docker run -d -p 8080:80 
-e WORDPRESS_DB_HOST=mysql 
-e WORDPRESS_DB_USER=root 
-e WORDPRESS_DB_PASSWORD=123456 
-e WORDPRESS_DB_NAME=wordpress 
-v wordpress:/var/www/html 
--restart always --name wordpress-app 
--network blog 
wordpress:latest

换成compose写法批量管理:

#批量删除原来容器
docker rm -f $(docker ps -aq)

#批量删除原来的卷
docker volume rm mysql-data wordpress

#删除原来的网络
docker network rm blog

# 编辑配置文件
vim compose.yaml

# 启动 
docker compose -f compose.yaml up -d

# 下线(卷和目录不会被移除)
docker compose -f compose.yaml down 

# 下线(删除镜像和目录)
docker compose -f compose.yaml down --rmi all -v

compose.yaml配置文件如下:

name: myblog
services:
  #第一个应用
  mysql:
    container_name: mysql #自定义容器名
    image: mysql:8.0 # 使用镜像及版本
    ports:
      - "3306:3306"
    environment:
      - MYSQL_ROOT_PASSWORD=123456
      - MYSQL_DATABASE=wordpress
    volumes:
      - mysql-data:/var/lib/mysql
      - /app/myconf:/etc/mysql/conf.d
    restart: always #开机自启动
    networks:
      - blog

  #第二个应用
  wordpress:
    image: wordpress
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: mysql
      WORDPRESS_DB_USER: root 
      WORDPRESS_DB_PASSWORD: 123456 
      WORDPRESS_DB_NAME: wordpress 
    volumes:
      - wordpress:/var/www/html
    restart: always #开机自启动
    networks:
      - blog
    depends_on: #代表这个应用启动依赖mysql
      - mysql

#声明用到的卷
volumes:
  mysql-data:
  wordpress:

# 声明网络
networks:
  blog:



特性

● 增量更新
○ 修改 Docker Compose 文件。重新启动应用。只会触发修改项的重新启动。
● 数据不删
○ 默认就算down了容器,所有挂载的卷不会被移除。比较安全

7. Dockerfile 制作镜像

构建镜像
Dockerfile 是一个文本文件,包含了构建 Docker 镜像的所有指令。

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

通过定义一系列命令和参数,Dockerfile 指导 Docker 构建一个自定义的镜像。

我们使用命令 docker build , 从零开始来创建一个新的镜像。为此,我们需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像。

官方文档:https://docs.docker.com/reference/dockerfile/

vim Dockerfile:

FROM openjdk:17

LABEL author=codeSE

COPY app.jar /app.jar

EXPOSE 8080

ENTRYPOINT ["java","-jar","/app.jar"]

制作容器镜像并启动

# 构建
docker build -f Dockerfile -t myjavaapp:v1.0 .
# 查看镜像
dockers images
# 启动
docker run -d -p 8888:8080 myjavaapp:v1.0


制作其他语言镜像参考官方:https://docs.docker.com/language/

8. 镜像分层存储




使用docker ps -s 看一下区别

使用docker image history nginx和docker image histor mynginx:v1.0看一下区别

再使用docker inspect ngin和docker inspect mynginx:v1.0查看两个镜像区别,说明相同的部分就采用了共同的分层存储,不同的才分一层存储。

9. docker 常见的中间件安装

#批量删除原来容器
docker rm -f $(docker ps -aq)
#批量删除原来的卷
docker volume rm $(docker volume ls -q)
#删除原来的网络
docker network rm blog
# 关闭内存分页
sudo swapoff -a

# Edit the sysctl config file
sudo vi /etc/sysctl.conf

# Add a line to define the desired value
# or change the value if the key exists,
# and then save your changes.
vm.max_map_count=262144

# Reload the kernel parameters using sysctl
sudo sysctl -p

# Verify that the change was applied by checking the value
cat /proc/sys/vm/max_map_count

yaml

注意:
● 将下面文件中 kafka 的 192.168.31.59 改为你自己的服务器IP。
● 所有容器都做了时间同步,这样容器的时间和linux主机的时间就一致了
准备一个 compose.yaml文件,内容如下:

name: devsoft
services:
  redis:
    image: bitnami/redis:latest
    restart: always
    container_name: redis
    environment:
      - REDIS_PASSWORD=123456
    ports:
      - '6379:6379'
    volumes:
      - redis-data:/bitnami/redis/data
      - redis-conf:/opt/bitnami/redis/mounted-etc
      - /etc/localtime:/etc/localtime:ro

  mysql:
    image: mysql:8.0.31
    restart: always
    container_name: mysql
    environment:
      - MYSQL_ROOT_PASSWORD=123456
    ports:
      - '3306:3306'
      - '33060:33060'
    volumes:
      - mysql-conf:/etc/mysql/conf.d
      - mysql-data:/var/lib/mysql
      - /etc/localtime:/etc/localtime:ro

  rabbit:
    image: rabbitmq:3-management
    restart: always
    container_name: rabbitmq
    ports:
      - "5672:5672"
      - "15672:15672"
    environment:
      - RABBITMQ_DEFAULT_USER=rabbit
      - RABBITMQ_DEFAULT_PASS=rabbit
      - RABBITMQ_DEFAULT_VHOST=dev
    volumes:
      - rabbit-data:/var/lib/rabbitmq
      - rabbit-app:/etc/rabbitmq
      - /etc/localtime:/etc/localtime:ro
  opensearch-node1:
    image: opensearchproject/opensearch:2.13.0
    container_name: opensearch-node1
    environment:
      - cluster.name=opensearch-cluster # Name the cluster
      - node.name=opensearch-node1 # Name the node that will run in this container
      - discovery.seed_hosts=opensearch-node1,opensearch-node2 # Nodes to look for when discovering the cluster
      - cluster.initial_cluster_manager_nodes=opensearch-node1,opensearch-node2 # Nodes eligibile to serve as cluster manager
      - bootstrap.memory_lock=true # Disable JVM heap memory swapping
      - "OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx512m" # Set min and max JVM heap sizes to at least 50% of system RAM
      - "DISABLE_INSTALL_DEMO_CONFIG=true" # Prevents execution of bundled demo script which installs demo certificates and security configurations to OpenSearch
      - "DISABLE_SECURITY_PLUGIN=true" # Disables Security plugin
    ulimits:
      memlock:
        soft: -1 # Set memlock to unlimited (no soft or hard limit)
        hard: -1
      nofile:
        soft: 65536 # Maximum number of open files for the opensearch user - set to at least 65536
        hard: 65536
    volumes:
      - opensearch-data1:/usr/share/opensearch/data # Creates volume called opensearch-data1 and mounts it to the container
      - /etc/localtime:/etc/localtime:ro
    ports:
      - 9200:9200 # REST API
      - 9600:9600 # Performance Analyzer

  opensearch-node2:
    image: opensearchproject/opensearch:2.13.0
    container_name: opensearch-node2
    environment:
      - cluster.name=opensearch-cluster # Name the cluster
      - node.name=opensearch-node2 # Name the node that will run in this container
      - discovery.seed_hosts=opensearch-node1,opensearch-node2 # Nodes to look for when discovering the cluster
      - cluster.initial_cluster_manager_nodes=opensearch-node1,opensearch-node2 # Nodes eligibile to serve as cluster manager
      - bootstrap.memory_lock=true # Disable JVM heap memory swapping
      - "OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx512m" # Set min and max JVM heap sizes to at least 50% of system RAM
      - "DISABLE_INSTALL_DEMO_CONFIG=true" # Prevents execution of bundled demo script which installs demo certificates and security configurations to OpenSearch
      - "DISABLE_SECURITY_PLUGIN=true" # Disables Security plugin
    ulimits:
      memlock:
        soft: -1 # Set memlock to unlimited (no soft or hard limit)
        hard: -1
      nofile:
        soft: 65536 # Maximum number of open files for the opensearch user - set to at least 65536
        hard: 65536
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - opensearch-data2:/usr/share/opensearch/data # Creates volume called opensearch-data2 and mounts it to the container

  opensearch-dashboards:
    image: opensearchproject/opensearch-dashboards:2.13.0
    container_name: opensearch-dashboards
    ports:
      - 5601:5601 # Map host port 5601 to container port 5601
    expose:
      - "5601" # Expose port 5601 for web access to OpenSearch Dashboards
    environment:
      - 'OPENSEARCH_HOSTS=["http://opensearch-node1:9200","http://opensearch-node2:9200"]'
      - "DISABLE_SECURITY_DASHBOARDS_PLUGIN=true" # disables security dashboards plugin in OpenSearch Dashboards
    volumes:
      - /etc/localtime:/etc/localtime:ro
  zookeeper:
    image: bitnami/zookeeper:3.9
    container_name: zookeeper
    restart: always
    ports:
      - "2181:2181"
    volumes:
      - "zookeeper_data:/bitnami"
      - /etc/localtime:/etc/localtime:ro
    environment:
      - ALLOW_ANONYMOUS_LOGIN=yes

  kafka:
    image: 'bitnami/kafka:3.4'
    container_name: kafka
    restart: always
    hostname: kafka
    ports:
      - '9092:9092'
      - '9094:9094'
    environment:
      - KAFKA_CFG_NODE_ID=0
      - KAFKA_CFG_PROCESS_ROLES=controller,broker
      - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093,EXTERNAL://0.0.0.0:9094
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092,EXTERNAL://192.168.31.59:9094
      - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,EXTERNAL:PLAINTEXT,PLAINTEXT:PLAINTEXT
      - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@kafka:9093
      - KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
      - ALLOW_PLAINTEXT_LISTENER=yes
      - "KAFKA_HEAP_OPTS=-Xmx512m -Xms512m"
    volumes:
      - kafka-conf:/bitnami/kafka/config
      - kafka-data:/bitnami/kafka/data
      - /etc/localtime:/etc/localtime:ro
  kafka-ui:
    container_name: kafka-ui
    image: provectuslabs/kafka-ui:latest
    restart: always
    ports:
      - 8080:8080
    environment:
      DYNAMIC_CONFIG_ENABLED: true
      KAFKA_CLUSTERS_0_NAME: kafka-dev
      KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:9092
    volumes:
      - kafkaui-app:/etc/kafkaui
      - /etc/localtime:/etc/localtime:ro

  nacos:
    image: nacos/nacos-server:v2.3.1
    container_name: nacos
    ports:
      - 8848:8848
      - 9848:9848
    environment:
      - PREFER_HOST_MODE=hostname
      - MODE=standalone
      - JVM_XMX=512m
      - JVM_XMS=512m
      - SPRING_DATASOURCE_PLATFORM=mysql
      - MYSQL_SERVICE_HOST=nacos-mysql
      - MYSQL_SERVICE_DB_NAME=nacos_devtest
      - MYSQL_SERVICE_PORT=3306
      - MYSQL_SERVICE_USER=nacos
      - MYSQL_SERVICE_PASSWORD=nacos
      - MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
      - NACOS_AUTH_IDENTITY_KEY=2222
      - NACOS_AUTH_IDENTITY_VALUE=2xxx
      - NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789
      - NACOS_AUTH_ENABLE=true
    volumes:
      - /app/nacos/standalone-logs/:/home/nacos/logs
      - /etc/localtime:/etc/localtime:ro
    depends_on:
      nacos-mysql:
        condition: service_healthy
  nacos-mysql:
    container_name: nacos-mysql
    build:
      context: .
      dockerfile_inline: |
        FROM mysql:8.0.31
        ADD https://raw.githubusercontent.com/alibaba/nacos/2.3.2/distribution/conf/mysql-schema.sql /docker-entrypoint-initdb.d/nacos-mysql.sql
        RUN chown -R mysql:mysql /docker-entrypoint-initdb.d/nacos-mysql.sql
        EXPOSE 3306
        CMD ["mysqld", "--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci"]
    image: nacos/mysql:8.0.30
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=nacos_devtest
      - MYSQL_USER=nacos
      - MYSQL_PASSWORD=nacos
      - LANG=C.UTF-8
    volumes:
      - nacos-mysqldata:/var/lib/mysql
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "13306:3306"
    healthcheck:
      test: [ "CMD", "mysqladmin" ,"ping", "-h", "localhost" ]
      interval: 5s
      timeout: 10s
      retries: 10
  prometheus:
    image: prom/prometheus:v2.52.0
    container_name: prometheus
    restart: always
    ports:
      - 9090:9090
    volumes:
      - prometheus-data:/prometheus
      - prometheus-conf:/etc/prometheus
      - /etc/localtime:/etc/localtime:ro

  grafana:
    image: grafana/grafana:10.4.2
    container_name: grafana
    restart: always
    ports:
      - 3000:3000
    volumes:
      - grafana-data:/var/lib/grafana
      - /etc/localtime:/etc/localtime:ro

volumes:
  redis-data:
  redis-conf:
  mysql-conf:
  mysql-data:
  rabbit-data:
  rabbit-app:
  opensearch-data1:
  opensearch-data2:
  nacos-mysqldata:
  zookeeper_data:
  kafka-conf:
  kafka-data:
  kafkaui-app:
  prometheus-data:
  prometheus-conf:
  grafana-data:

启动

# 在 compose.yaml 文件所在的目录下执行
docker compose up -d
# 等待启动所有容器

注意注意:


使用https://raw.githubusercontent.com/alibaba/nacos/2.3.2/distribution/conf/mysql-schema.sql这个地址会出现访问不了的情况,建议更换地址。或者直接去git仓库找到对应的nacos版本找到distribution/conf/mysql-schema.sql 直接下载在本地。通过本地的文件目录执行它。

访问测试

● zookeeper可视化工具下载:
○ https://github.com/vran-dev/PrettyZoo/releases/download/v2.1.1/prettyZoo-win.zip
● redis可视化工具下载:
○https://github.com/qishibo/AnotherRedisDesktopManager/releases/download/v1.6.4/Another-Redis-Desktop-Manager.1.6.4.exe

组件(容器名)介绍访问地址账号/密码特性
Redis(redis)k-v 库你的ip:6379单密码模式:123456已开启AOF
MySQL(mysql)数据库你的ip:3306root/123456默认utf8mb4字符集
Rabbit(rabbit)消息队列你的ip:15672rabbit/rabbit暴露5672和15672端口
OpenSearch(opensearch-node1/2)检索引擎你的ip:9200内存512mb;两个节点
opensearch-dashboardssearch可视化你的ip:5601
Zookeeper(zookeeper)分布式协调你的ip:2181允许匿名登录
kafka(kafka)消息队列你的ip:9092外部访问:9094占用内存512mb
kafka-ui(kafka-ui)kafka可视化你的ip:8080
nacos(nacos)注册/配置中心你的ip:8848nacos/nacos持久化数据到MySQL
nacos-mysql(nacos-mysql)nacos配套数据库你的ip:13306root/root
prometheus(prometheus)时序数据库你的ip:9090
grafana(grafana)你的ip:3000admin/admin






Docker 小结

  1. Docker Daemon
    安装使用Docker,得先运行DockerDaemon进程,用于管理docker,如:
  • 镜像 imagese
  • 容器 containerse
  • 网络 network。
  • 数据卷 Data Volumes
  1. Rest接口
    提供和Daemon交互的API接口

  2. Docker Client
    客户端使用REST API和Docker Daemon进行访问.

  3. Docker平台组成

  4. lmages
    镜像是一个只读模板,用于创建容器,也可以通过Dockerfile文本描述镜像的内。
    容镜像的概念类似于编程开发里面向对象的类,从一个基类开始(基础镜像Base lmage)构建容器的过程,就是运行镜像,生成容器实例。

Docker镜像的描述文件是Dockerfile,包含了如下的指令:
。FROM 定义基础镜像
。MAINTAINER作者
。RUN 运行Linux命令
。ADD 添加文件/目录
。ENV 环境变量
。CMD 运行进程

  1. Container
    容器是一个镜像的运行实例,镜像 >容器。

创建容器的过程:

  • 获取镜像,如 docker pull centos,从镜像仓库拉取
  • 使用镜像创建容器
  • 分配文件系统,挂载一个读写层,在读写层加载镜像
  • 分配网络/网桥接口,创建一个网络接口,让容器和宿主机通信
  • 容器获取IP地址
  • 执行容器命令,如/bin/bash
  • 反馈容器启动结果。.
  1. Registry
    Docker镜像需要进行管理,docker提供了Recistr仓库,其实它也是一个容器。可以用于可以基干该容器运行私有仓库。
    也可以使用Docker Hub互联网公有镜像仓库,
  2. 安装Docker
    提前准备好一个宿主机(vmware去创建一个linux机器,然后安装docker去使用)
  3. 安装环境初始化

本文地址:https://www.vps345.com/3008.html

搜索文章

Tags

PV计算 带宽计算 流量带宽 服务器带宽 上行带宽 上行速率 什么是上行带宽? CC攻击 攻击怎么办 流量攻击 DDOS攻击 服务器被攻击怎么办 源IP 服务器 linux 运维 游戏 云计算 进程 操作系统 进程控制 Ubuntu ssh deepseek Ollama 模型联网 API CherryStudio llama 算法 opencv 自然语言处理 神经网络 语言模型 javascript 前端 chrome edge 数据库 centos oracle 关系型 安全 分布式 python MCP numpy rust http java 网络 开发语言 阿里云 网络安全 网络协议 adb nginx 监控 自动化运维 harmonyos 华为 typescript 计算机网络 ubuntu macos 笔记 C 环境变量 进程地址空间 react.js 前端面试题 node.js 持续部署 Dell R750XS 科技 ai 人工智能 个人开发 sql KingBase fastapi mcp mcp-proxy mcp-inspector fastapi-mcp agent sse 银河麒麟 kylin v10 麒麟 v10 LDAP spring boot websocket docker 实时音视频 filezilla 无法连接服务器 连接被服务器拒绝 vsftpd 331/530 面试 性能优化 jdk intellij-idea 架构 gitlab tcp/ip 容器 DeepSeek-R1 API接口 c++ 多线程服务器 Linux网络编程 json html5 firefox pycharm 深度学习 conda pillow spring golang android django flask web3.py windows 搜索引擎 kubernetes 学习方法 经验分享 程序人生 github 创意 社区 RTSP xop RTP RTSPServer 推流 视频 kvm 无桌面 命令行 flutter matlab YOLOv8 NPU Atlas800 A300I pro asi_bench ecm bpm zotero WebDAV 同步失败 代理模式 udp unity c语言 后端 IIS .net core Hosting Bundle .NET Framework vs2022 ollama llm php ESP32 串口服务器 YOLO pytorch vue.js audio vue音乐播放器 vue播放音频文件 Audio音频播放器自定义样式 播放暂停进度条音量调节快进快退 自定义audio覆盖默认样式 nuxt3 vue3 自动化 蓝耘科技 元生代平台工作流 ComfyUI 弹性计算 虚拟化 KVM 计算虚拟化 弹性裸金属 idm Reactor 设计模式 C++ stm32 物联网 qt redis EMQX MQTT 通信协议 运维开发 云原生 uni-app bash 学习 宝塔面板 同步 备份 建站 安全威胁分析 AI编程 AIGC vscode 1.86 vscode 机器学习 豆瓣 追剧助手 迅雷 nas 微信 内存 unity3d 目标检测 计算机视觉 https Dify jvm kylin aws googlecloud 服务器繁忙 备选 网站 api 调用 示例 银河麒麟桌面操作系统 Kylin OS 国产化 AI Agent ide tomcat postman mock mock server 模拟服务器 mock服务器 Postman内置变量 Postman随机数据 maven intellij idea 电脑 腾讯云 爬虫 数据集 远程工作 IIS服务器 IIS性能 日志监控 mosquitto 消息队列 智能路由器 外网访问 内网穿透 端口映射 word图片自动上传 word一键转存 复制word图片 复制word图文 复制word公式 粘贴word图文 粘贴word公式 sqlite dubbo TCP服务器 qt项目 qt项目实战 qt教程 openssl 密码学 shell 根服务器 spring cloud kafka hibernate AI大模型 大模型 大模型入门 Deepseek 大模型教程 webrtc sqlserver Linux 国产操作系统 ukui 麒麟kylinos openeuler 微服务 医疗APP开发 app开发 统信 虚拟机安装 游戏程序 ffmpeg 音视频 ruoyi springboot git 嵌入式硬件 单片机 温湿度数据上传到服务器 Arduino HTTP mysql android studio 雨云 NPS apache 孤岛惊魂4 恒源云 java-ee tcp ios big data chatgpt oneapi open webui 博客 权限 microsoft fpga开发 Headless Linux mongodb 远程登录 telnet pdf asp.net大文件上传 asp.net大文件上传下载 asp.net大文件上传源码 ASP.NET断点续传 asp.net上传文件夹 asp.net上传大文件 .net core断点续传 华为认证 网络工程师 交换机 开源 visualstudio k8s jenkins c# zookeeper debian Docker Compose docker compose docker-compose live555 rtsp rtp 大数据 v10 镜像源 软件 armbian u-boot 驱动开发 硬件工程 嵌入式实习 TRAE Samba SWAT 配置文件 服务管理 网络共享 GaN HEMT 氮化镓 单粒子烧毁 辐射损伤 辐照效应 WSL win11 无法解析服务器的名称或地址 ftp DeepSeek Cline ecmascript nextjs react reactjs URL HTML audio 控件组件 vue3 audio音乐播放器 Audio标签自定义样式默认 vue3播放音频文件音效音乐 自定义audio播放器样式 播放暂停调整声音大小下载文件 MI300x openwrt Docker Hub docker pull daemon.json ux 多线程 ci/cd LLM Web APP Streamlit virtualenv arm string模拟实现 深拷贝 浅拷贝 经典的string类问题 三个swap 开发环境 SSL证书 Python 网络编程 聊天服务器 套接字 TCP 客户端 Socket 小程序 svn 能力提升 面试宝典 技术 IT信息化 源码剖析 rtsp实现步骤 流媒体开发 excel odoo 服务器动作 Server action 报错 Flask FastAPI Waitress Gunicorn uWSGI Uvicorn prometheus 银河麒麟操作系统 rpc 远程过程调用 Windows环境 直播推流 vim JAVA Java 重启 排查 系统重启 日志 原因 媒体 微信公众平台 C语言 ipython Hyper-V WinRM TrustedHosts av1 电视盒子 机顶盒ROM 魔百盒刷机 联想开天P90Z装win10 DigitalOcean GPU服务器购买 GPU服务器哪里有 GPU服务器 jmeter 软件测试 3d 数学建模 网络结构图 gitee C++软件实战问题排查经验分享 0xfeeefeee 0xcdcdcdcd 动态库加载失败 程序启动失败 程序运行权限 标准用户权限与管理员权限 统信UOS 麒麟 bonding 链路聚合 mount挂载磁盘 wrong fs type LVM挂载磁盘 Centos7.9 MCP server C/S LLM windows日志 eureka web安全 安全架构 游戏服务器 Minecraft ddos Linux PID cursor Cursor agi ansible playbook gpu算力 安装教程 GPU环境配置 Ubuntu22 CUDA PyTorch Anaconda安装 H3C 命名管道 客户端与服务端通信 服务器无法访问 ip地址无法访问 无法访问宝塔面板 宝塔面板打不开 华为云 springsecurity6 oauth2 授权服务器 前后端分离 监控k8s集群 集群内prometheus openEuler elasticsearch pygame 小游戏 五子棋 html FunASR ASR 佛山戴尔服务器维修 佛山三水服务器维修 交互 go file server http server web server 机器人 ssl 集成学习 集成测试 代码调试 ipdb 远程连接 rdp 实验 负载均衡 UOS 统信操作系统 yum 编辑器 oceanbase rc.local 开机自启 systemd 僵尸进程 深度优先 图论 并集查找 换根法 树上倍增 向日葵 MNN Qwen 备份SQL Server数据库 数据库备份 傲梅企业备份网络版 llama3 Chatglm 开源大模型 ollama下载加速 hugo arm开发 远程桌面 gaussdb DeepSeek行业应用 Heroku 网站部署 xss flash-attention pppoe radius AI agent next.js 部署 部署next.js 国标28181 视频监控 监控接入 语音广播 流程 SIP SDP IDEA 技能大赛 1024程序员节 企业微信 Linux24.04 deepin 系统安全 ESXi iBMC UltraISO windwos防火墙 defender防火墙 win防火墙白名单 防火墙白名单效果 防火墙只允许指定应用上网 防火墙允许指定上网其它禁止 图像处理 can 线程池 GCC aarch64 编译安装 HPC HAProxy 数据库架构 数据管理 数据治理 数据编织 数据虚拟化 Linux无人智慧超市 LInux多线程服务器 QT项目 LInux项目 单片机项目 vue css less wps 安卓 grafana 直流充电桩 充电桩 junit list 模拟实现 SEO minio 漏洞 ssh远程登录 显示管理器 lightdm gdm kind 树莓派 VNC 多进程 远程 命令 执行 sshpass 操作 linux上传下载 fd 文件描述符 阻塞队列 生产者消费者模型 服务器崩坏原因 NFS 健康医疗 互联网医院 deepseek r1 laravel linux安装配置 Nuxt.js SSH Xterminal Qwen2.5-coder 离线部署 rnn rabbitmq mac make命令 makefile文件 压力测试 vmware 卡死 cocoapods xcode netty express p2p threejs 3D SenseVoice iphone 网络穿透 云服务器 浏览器开发 AI浏览器 etl etcd 数据安全 RBAC wireshark 测试工具 嵌入式 linux驱动开发 Netty 即时通信 NIO 鸿蒙系统 uv yolov8 HTTP 服务器控制 ESP32 DeepSeek seatunnel yaml Ultralytics 可视化 HarmonyOS Next 镜像 AD域 致远OA OA服务器 服务器磁盘扩容 okhttp CORS 跨域 游戏机 rag ragflow ragflow 源码启动 pip rocketmq 技术共享 ue4 着色器 ue5 虚幻 vasp安装 查询数据库服务IP地址 SQL Server navicat 文件系统 路径解析 加解密 Yakit yaklang 语音识别 AutoDL mariadb dify 无人机 ROS 自动驾驶 开机自启动 HCIE 数通 cuda cudnn anaconda 模拟退火算法 mamba Vmamba 视觉检测 Docker引擎已经停止 Docker无法使用 WSL进度一直是0 镜像加速地址 code-server SVN Server tortoise svn r语言 数据挖掘 数据可视化 数据分析 SysBench 基准测试 计算机 程序员 ui 计算机外设 信号处理 华为od MS Materials MacOS录屏软件 eclipse gateway Clion Nova ResharperC++引擎 Centos7 远程开发 业界资讯 kamailio sip VoIP cnn GoogLeNet 大数据平台 visual studio code 银河麒麟高级服务器 外接硬盘 Kylin Linux的基础指令 系统架构 echarts 信息可视化 网页设计 中间件 jar gradle CH340 串口驱动 CH341 uart 485 lio-sam SLAM 鸿蒙 composer AISphereButler Java Applet URL操作 服务器建立 Socket编程 网络文件读取 Dell HPE 联想 浪潮 c 课程设计 rust腐蚀 npm 游戏引擎 框架搭建 .net 回显服务器 UDP的API使用 HiCar CarLife+ CarPlay QT RK3588 vSphere vCenter bcompare Beyond Compare 模拟器 教程 Node-Red 编程工具 流编程 web 升级 CVE-2024-7347 VPS .net mvc断点续传 需求分析 规格说明书 zabbix 微信小程序 bat 程序 编程 性能分析 Linux awk awk函数 awk结构 awk内置变量 awk参数 awk脚本 awk详解 智能手机 EMUI 回退 降级 飞书 web3 linux 命令 sed 命令 redhat autodl 软件定义数据中心 sddc 反向代理 状态模式 矩阵 wsl 实时互动 大模型微调 工业4.0 prompt easyui langchain apt IMM 其他 中兴光猫 换光猫 网络桥接 自己换光猫 职场和发展 rtsp服务器 rtsp server android rtsp服务 安卓rtsp服务器 移动端rtsp服务 大牛直播SDK 缓存 可信计算技术 网络攻击模型 传统数据库升级 银行 大语言模型 LLMs ArkUI 多端开发 智慧分发 应用生态 鸿蒙OS 单一职责原则 n8n 工作流 workflow Kali 虚拟机 jupyter IPMITOOL BMC 硬件管理 opcua opcda KEPServer安装 token sas 鲲鹏 小智AI服务端 xiaozhi TTS FTP 服务器 单元测试 功能测试 selenium IPv4 子网掩码 公网IP 私有IP SSH 密钥生成 SSH 公钥 私钥 生成 前端框架 uniapp Typore 微信开放平台 微信公众号配置 gitea hexo 移动云 云服务 僵尸世界大战 游戏服务器搭建 iperf3 带宽测试 nfs SSL 域名 Anolis nginx安装 环境安装 linux插件下载 图形化界面 ShenTong 换源 国内源 Debian 硬件架构 毕昇JDK tensorflow nac 802.1 portal 线程 webstorm Trae IDE AI 原生集成开发环境 Trae AI crosstool-ng mcu CPU 主板 电源 网卡 wsl2 交叉编译 Linux环境 项目部署到linux服务器 项目部署过程 本地部署 pyqt 微信小程序域名配置 微信小程序服务器域名 微信小程序合法域名 小程序配置业务域名 微信小程序需要域名吗 微信小程序添加域名 半虚拟化 硬件虚拟化 Hypervisor selete 高级IO 边缘计算 EasyConnect 多层架构 解耦 Kali Linux 黑客 渗透测试 信息收集 h.264 micropython esp32 mqtt RustDesk自建服务器 rustdesk服务器 docker rustdesk 黑客技术 流式接口 AI-native Docker Desktop 网工 opensearch helm ceph ssrf 失效的访问控制 postgresql pgpool vscode1.86 1.86版本 ssh远程连接 微信分享 Image wxopensdk 田俊楠 SSE open Euler dde 迁移指南 .netcore hadoop devops outlook 深度求索 私域 知识库 xrdp 软链接 硬链接 WebUI DeepSeek V3 TrinityCore 魔兽世界 sysctl.conf vm.nr_hugepages adobe elk 信号 bug 宠物 毕业设计 免费学习 宠物领养 宠物平台 环境迁移 服务器管理 配置教程 服务器安装 网站管理 崖山数据库 YashanDB unix Ubuntu DeepSeek DeepSeek Ubuntu DeepSeek 本地部署 DeepSeek 知识库 DeepSeek 私有化知识库 本地部署 DeepSeek DeepSeek 私有化部署 jina 视频编解码 小艺 Pura X 流水线 脚本式流水线 efficientVIT YOLOv8替换主干网络 TOLOv8 Ubuntu 24.04.1 轻量级服务器 python3.11 dash 正则表达式 frp ip 双系统 gcc g++ g++13 群晖 文件分享 软件工程 iis 腾讯云大模型知识引擎 W5500 OLED u8g2 CrewAI log4j chfs ubuntu 16.04 远程控制 远程看看 远程协助 sentinel 数据结构 Xinference RAGFlow rsyslog cpu 实时 使用 高效日志打印 串口通信日志 服务器日志 系统状态监控日志 异常记录日志 毕设 相差8小时 UTC 时间 FTP服务器 昇腾 npu VMware安装Ubuntu Ubuntu安装k8s AI写作 OD机试真题 华为OD机试真题 服务器能耗统计 VR手套 数据手套 动捕手套 动捕数据手套 VMware安装mocOS VMware macOS系统安装 dns 信息与通信 低代码 WSL2 onlyoffice ros 三级等保 服务器审计日志备份 输入法 RAGFLOW cd 目录切换 智能音箱 智能家居 多个客户端访问 IO多路复用 TCP相关API bootstrap 软考 7z k8s集群资源管理 云原生开发 XCC Lenovo 压测 ECS 繁忙 解决办法 替代网站 汇总推荐 AI推理 CDN dba Ubuntu 24 常用命令 Ubuntu 24 Ubuntu vi 异常处理 烟花代码 烟花 元旦 tailscale derp derper 中转 线性代数 电商平台 大文件分片上传断点续传及进度条 如何批量上传超大文件并显示进度 axios大文件切片上传详细教 node服务器合并切片 vue3大文件上传报错提示错误 大文件秒传跨域报错cors dity make 王者荣耀 DOIT 四博智联 防火墙 NAT转发 NAT Server Unity Dedicated Server Host Client 无头主机 stm32项目 embedding wsgiref Web 服务器网关接口 xpath定位元素 glibc 常用命令 文本命令 目录命令 合成模型 扩散模型 图像生成 thingsboard LORA NLP 序列化反序列化 ardunio BLE 端口测试 iDRAC R720xd freebsd IMX317 MIPI H265 VCU firewall dell服务器 iventoy VmWare OpenEuler css3 DevEco Studio HarmonyOS OpenHarmony 真机调试 XFS xfs文件系统损坏 I_O error es 抗锯齿 实习 磁盘监控 iot 服务器配置 生物信息学 sdkman 服务器主板 AI芯片 Jellyfin 我的世界服务器搭建 nvidia asm prometheus数据采集 prometheus数据模型 prometheus特点 金仓数据库 2025 征文 数据库平替用金仓 Wi-Fi 相机 超融合 Spring Security 我的世界 我的世界联机 数码 mysql离线安装 ubuntu22.04 mysql8.0 源码 ISO镜像作为本地源 云电竞 云电脑 todesk proxy模式 IPMI 带外管理 5G 3GPP 卫星通信 db 虚拟局域网 jetty undertow 策略模式 单例模式 tidb GLIBC rclone AList webdav fnOS hive Hive环境搭建 hive3环境 Hive远程模式 NAS Termux webgl 显卡驱动 ruby centos-root /dev/mapper yum clean all df -h / du -sh Erlang OTP gen_server 热代码交换 事务语义 考研 在线office tcpdump 基础入门 Windows matplotlib chrome 浏览器下载 chrome 下载安装 谷歌浏览器下载 Python基础 Python教程 Python技巧 wordpress 无法访问wordpess后台 打开网站页面错乱 linux宝塔面板 wordpress更换服务器 宝塔面板访问不了 宝塔面板网站访问不了 宝塔面板怎么配置网站能访问 宝塔面板配置ip访问 宝塔面板配置域名访问教程 宝塔面板配置教程 实战案例 GPU Claude safari Mac 系统 ocr MySql 思科模拟器 思科 Cisco IM即时通讯 QQ 剪切板对通 HTML FORMAT AnythingLLM AnythingLLM安装 历史版本 下载 安装 epoll 测试用例 AI作画 聊天室 环境配置 SSH 服务 SSH Server OpenSSH Server docker搭建nacos详解 docker部署nacos docker安装nacos 腾讯云搭建nacos centos7搭建nacos KylinV10 麒麟操作系统 Vmware 银河麒麟服务器操作系统 系统激活 移动魔百盒 springboot远程调试 java项目远程debug docker远程debug java项目远程调试 springboot远程 USB转串口 飞牛NAS 飞牛OS MacBook Pro harmonyOS面试题 算力 Radius P2P HDLC 邮件APP 免费软件 k8s资源监控 annotations自动化 自动化监控 监控service 监控jvm camera Arduino 电子信息 muduo QT 5.12.12 QT开发环境 Ubuntu18.04 个人博客 Ubuntu Server Ubuntu 22.04.5 X11 Xming GRUB引导 Linux技巧 Deepseek-R1 私有化部署 推理模型 欧标 OCPP edge浏览器 物联网开发 lua clickhouse vue-i18n 国际化多语言 vue2中英文切换详细教程 如何动态加载i18n语言包 把语言json放到服务器调用 前端调用api获取语言配置文件 沙盒 ip命令 新增网卡 新增IP 启动网卡 RAID RAID技术 磁盘 存储 word 社交电子 高效远程协作 TrustViewer体验 跨设备操作便利 智能远程控制 多路转接 项目部署 域名服务 DHCP 符号链接 配置 YOLOv12 USB网络共享 音乐库 飞牛 实用教程 Playwright 自动化测试 PX4 链表 ssh漏洞 ssh9.9p2 CVE-2025-23419 iftop 网络流量监控 midjourney 粘包问题 裸金属服务器 弹性裸金属服务器 Cookie 状态管理的 UDP 服务器 Arduino RTOS yum源切换 更换国内yum源 AI代码编辑器 影刀 #影刀RPA# 干货分享 黑客工具 密码爆破 Windsurf seleium chromedriver 智能硬件 trea idea EtherNet/IP串口网关 EIP转RS485 EIP转Modbus EtherNet/IP网关协议 EIP转RS485网关 EIP串口服务器 执法记录仪 智能安全帽 smarteye perf figma 流量运营 DBeaver 数据仓库 kerberos Attention mybatis 产测工具框架 IMX6ULL 管理框架 RAG 检索增强生成 文档解析 大模型垂直应用 系统开发 binder 车载系统 framework 源码环境 flink openstack Xen 华为机试 数据库系统 C# MQTTS 双向认证 emqx TCP协议 milvus remote-ssh 键盘 Logstash 日志采集 软负载 llama.cpp 开发 CLion 做raid 装系统 代理服务器 火绒安全 firewalld 内网服务器 内网代理 内网通信 AI Agent 字节智能运维 EtherCAT转Modbus ECT转Modbus协议 EtherCAT转485网关 ECT转Modbus串口网关 EtherCAT转485协议 ECT转Modbus网关 VM搭建win2012 win2012应急响应靶机搭建 攻击者获取服务器权限 上传wakaung病毒 应急响应并溯源 挖矿病毒处置 应急响应综合性靶场 docker run 数据卷挂载 交互模式 curl wget 端口 查看 ss 嵌入式系统开发 gnu 本地知识库部署 DeepSeek R1 模型 剧本 docker部署翻译组件 docker部署deepl docker搭建deepl java对接deepl 翻译组件使用 ubuntu24.04.1 kali 共享文件夹 RTMP 应用层 uni-file-picker 拍摄从相册选择 uni.uploadFile H5上传图片 微信小程序上传图片 嵌入式Linux IPC conda配置 conda镜像源 rpa fast 大模型应用 远程服务 VS Code OpenSSH linux环境变量 自动化任务管理 springcloud AD 域管理 spark HistoryServer Spark YARN jobhistory Linux find grep 网站搭建 serv00 grub 版本升级 扩容 灵办AI 飞牛nas fnos wpf 大模型部署 VSCode 服务器数据恢复 数据恢复 存储数据恢复 raid5数据恢复 磁盘阵列数据恢复 自定义客户端 SAS 软件需求 rustdesk AP配网 AK配网 小程序AP配网和AK配网教程 WIFI设备配网小程序UDP开 服务器部署ai模型 元服务 应用上架 vr 磁盘镜像 服务器镜像 服务器实时复制 实时文件备份 java-rocketmq ldap trae minecraft GIS 遥感 WebGIS x64 SIGSEGV xmm0 大大通 第三代半导体 碳化硅 ai工具 分布式训练 Kylin-Server Linux的权限 内网环境 deekseek 李心怡 分析解读 WebRTC gpt 热榜 win服务器架设 windows server docker部署Python 网卡的名称修改 eth0 ens33 cpp-httplib SRS 流媒体 直播 办公自动化 自动化生成 pdf教程 mm-wiki搭建 linux搭建mm-wiki mm-wiki搭建与使用 mm-wiki使用 mm-wiki详解 风扇控制软件 CentOS ABAP MDK 嵌入式开发工具 论文笔记 sublime text MacMini 迷你主机 mini Apple arcgis Ark-TS语言 匿名管道 hosts 存储维护 NetApp存储 EMC存储 DenseNet 性能测试 产品经理 xml 雨云服务器 运维监控 知识图谱 增强现实 沉浸式体验 应用场景 技术实现 案例分析 AR cmos 硬件 pyautogui 程序员创富 虚幻引擎 bot Docker risc-v DocFlow leetcode 推荐算法 ubuntu24 vivado24 代理 swoole Ubuntu共享文件夹 共享目录 Linux共享文件夹 Invalid Host allowedHosts 北亚数据恢复 oracle数据恢复 visual studio 自动化编程 西门子PLC 通讯 IO模型 keepalived sonoma 自动更新 ros2 moveit 机器人运动 上传视频至服务器代码 vue3批量上传多个视频并预览 如何实现将本地视频上传到网页 element plu视频上传 ant design vue vue3本地上传视频及预览移除 宕机切换 服务器宕机 neo4j xshell termius iterm2 数据库开发 database lsb_release /etc/issue /proc/version uname -r 查看ubuntu版本 triton 模型分析 skynet transformer ArcTS 登录 ArcUI GridItem arkUI 服务网格 istio Open WebUI js chrome devtools LInux PVE rime 阿里云ECS deep learning 强化学习 searxng 网络药理学 生信 PPI String Cytoscape CytoHubba RoboVLM 通用机器人策略 VLA设计哲学 vlm fot robot 视觉语言动作模型 具身智能 Unity插件 CentOS Stream 鸿蒙开发 移动开发 语法 图形渲染 黑苹果 Google pay Apple pay sequoiaDB nlp 蓝桥杯 捆绑 链接 谷歌浏览器 youtube google gmail minicom 串口调试工具 TrueLicense alias unalias 别名 DNS UDP 服务器时间 游戏开发 dock 加速 政务 分布式系统 监控运维 Prometheus Grafana 混合开发 JDK regedit 开机启动 docker命令大全 设备 PCI-Express VMware创建虚拟机 ai小智 语音助手 ai小智配网 ai小智教程 esp32语音助手 diy语音助手 Redis Desktop sqlite3 音乐服务器 Navidrome 音流 ping++ 本地化部署 信创 信创终端 中科方德 京东云 怎么卸载MySQL MySQL怎么卸载干净 MySQL卸载重新安装教程 MySQL5.7卸载 Linux卸载MySQL8.0 如何卸载MySQL教程 MySQL卸载与安装 大模型推理 大模型学习 gpt-3 文心一言 搭建个人相关服务器 人工智能生成内容 私有化 金融 网络用户购物行为分析可视化平台 大数据毕业设计 dns是什么 如何设置电脑dns dns应该如何设置 在线预览 xlsx xls文件 在浏览器直接打开解析xls表格 前端实现vue3打开excel 文件地址url或接口文档流二进 玩机技巧 软件分享 软件图标 离线部署dify eNSP 网络规划 VLAN 企业网络 企业网络规划 华为eNSP 大模型面经 架构与原理 拓扑图 docker搭建pg docker搭建pgsql pg授权 postgresql使用 postgresql搭建 基础环境 ubuntu20.04 开机黑屏