docker全解

docker全解

一、docker的基本概念

  1. 什么是docker?

    • docker是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的鏡像中,然后發布到任何流行的Linux或Windows機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口。

    • docker的英文翻譯是“搬運工”的意思,他搬運的東西就是我們常說的集裝箱Container,Container里面裝的是任意類型的App,我們的開發人員可以通過docker將App變成一種標準化的、可移植的、自管理的組件,我們可以在任何主流的操作系統中開發、調試和運行。

    image-20231202165220883

  2. docker與VMware的比較

    DockerVMware
    虛擬化輕量級虛擬化(只虛擬出來容器所需要的資源,軟件層面)完全虛擬化(虛擬化硬件)
    啟動速度秒級分鐘級
    運行性能接近原生5%左右損失
    磁盤占用MBGB
    數量成百上千一般幾十臺
    隔離性進程級別系統級(更徹底)
    操作系統主要支持Linux幾乎所有
    封裝程度只打包項目代碼和依賴關系,共享宿主機內核完整的操作系統
  3. docker架構

    docker架構主要由以下幾個組件組成:

    • Docker Client(docker客戶端):用戶使用Docker命令行工具與Docker Daemon交互,發送命令來構建、運行和管理容器。
    • Docker Daemon(docker守護進程):運行在主機上,負責管理容器的生命周期,處理容器的創建、啟動、停止等操作。它還負責與Docker Registry交互,從Registry中下載鏡像并在本地保存。
    • Docker Registry(docker鏡像倉庫):用戶與存儲和分享docker鏡像。docker官方提供了公共的Registry,稱為Docker Hub,也可以在本地搭建私有的Registry。
    • Docker Image(docker鏡像):是容器的基礎,包含了運行容器所需的所有文件、配置和依賴。Docker鏡像可以通過Dockerfile文件來構建,也可以從Docker Registry中獲取。
    • Docker Container(docker容器):是docker鏡像的運行實例,可以被創建、啟動、停止、刪除和暫停。它是輕量級的,可以在幾毫秒內啟動和停止。

    img

    總之,Docker 架構是一個客戶端-服務器架構,客戶端通過 Docker 命令行工具與 Docker Daemon 交互,Docker Daemon 負責管理容器的生命周期,Docker Registry 用于存儲和分享 Docker 鏡像,Docker 鏡像是容器的基礎,Docker 容器是 Docker 鏡像的運行實例。

二、docker的安裝

  1. 檢查之前是否安裝過docker,如果有使用yum remove docker卸載
[root@woniu ~]# yum remove docker \
> docker-client \
> docker-client-latest \
> docker-common \
> docker-latest \
> docker-latest-logrotate \
> docker-logrotate \
> docker-engine
  1. 安裝yum工具

    [root@woniu ~]# yum -y install yum-utils
    
  2. 配置阿里云鏡像,添加docker引擎的yum源

    [root@woniu ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
  3. 更新CentOS

    [root@woniu ~]# yum update
    
  4. 列出docker源

    [root@woniu ~]# yum list docker-ce —showduplicates | sort -r
    
  5. 安裝docker

    [root@woniu ~]# yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
    
  6. 檢查docker版本號

    [root@woniu ~]# docker -v
    Docker version 24.0.7, build afdd53b
    
  7. 啟動docker,并設置自啟

    [root@woniu ~]# systemctl start docker
    [root@woniu ~]# systemctl enable docker
    

三、docker容器配置

  1. 配置本地鏡像庫

    從默認網絡獲取docker鏡像太慢,為了提高速度,可以配置國內的鏡像庫,可同時配置多個

    [root@woniu ~]# vim /etc/docker/daemon.json
    
    {"registry-mirrors":["https://ung2thfc.mirror.aliyuncs.com","https://docker.mirrors.ustc.edu.cn","https://registry.docker-cn.com","http://hub-mirror.c.163.com","https://mirror.ccs.tencentyun.com"]
    }
    

    配置完成之后重啟docker

    [root@woniu ~]# systemctl restart docker
    
  2. 設置docker的靜態ip

    目的:解決docker運行過程中ip的固定。

    docker容器的ip地址在每次啟動后啟動順序設置ip地址,為解決ip地址變動的問題,我們有必要設置docker內部ip地址固定。

  3. 創建自定義網絡(network)

    docker network create —driver bridge —subnet=自定義網絡ip/16 —gateway=網關值 自定義網絡名稱

    [root@woniu ~]# docker network create --driver bridge --subnet=172.18.12.0/16 --gateway=172.18.1.1 wn_docker_net
    

    查看創建的網絡

    [root@woniu ~]# docker network ls
    NETWORK ID     NAME                      DRIVER    SCOPE
    70fe2b91dc9a   bridge                    bridge    local
    dc8dac7cdeb4   host                      host      local
    ab24c1a95ddc   none                      null      local
    88dee123076b   ssc-replication_default   bridge    local
    b948a39c4ea9   test_default              bridge    local
    4bb015285e05   wn_docker_net             bridge    local
    
    [root@woniu ~]# docker inspect wn_docker_net
    [{"Name": "wn_docker_net","Id": "4bb015285e05f57ab4b59e30f2eb9c0b76818c850680a3910aca6201aac9bdaa","Created": "2023-09-25T15:33:43.398740767+08:00","Scope": "local","Driver": "bridge","EnableIPv6": false,"IPAM": {"Driver": "default","Options": {},"Config": [{"Subnet": "172.18.12.0/16","Gateway": "172.18.1.1"}]},"Internal": false,"Attachable": false,"Ingress": false,"ConfigFrom": {"Network": ""},"ConfigOnly": false,"Containers": {},"Options": {},"Labels": {}}
    ]
    
  4. docker常見問題IPv4 forwarding disabled的解決方案

    docker run創建運行容器可能出現警告WARNING: IPv4 forwarding is disabled. Networking will not work.解決方案為開啟路由轉發功能,方式如下

    [root@woniu ~]# vim /etc/sysctl.conf
    

    在末尾追加net.ipv4.ip_forward=1,保存退出(:wq)

    查看是否修改成功

    [root@woniu ~]# sysctl net.ipv4.ip_forward
    net.ipv4.ip_forward = 1
    

    重啟network和docker服務

    [root@woniu ~]# systemctl restart network
    [root@woniu ~]# systemctl restart docker
    

四、docker創建運行容器

以mysql為例,步驟如下

  1. 查詢mysql鏡像

    [root@woniu ~]# docker search mysql
    

    image-20231203151213940

  2. 拉取mysql鏡像

    [root@woniu ~]# docker pull mysql
    
  3. 查看下載好的鏡像

    [root@woniu ~]# docker images
    REPOSITORY            TAG       IMAGE ID       CREATED         SIZE
    ...
    mysql                 latest    99afc808f15b   3 months ago    577MB
    
  4. 創建一個簡單的運行容器(創建成功會自動啟動)

    [root@woniu ~]# docker run -it --name mysql_test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123 -d mysql
    3f315b1897133652129196a2dcb5bb0ef5e107d5f0d3019bc5e520a4c54348bf
    

    參數解釋

    • -it: 這個參數表示要分配一個交互式(-i)的終端(-t)(tty),通常用于需要交互的容器,比如運行一個 shell。
    • –name mysql_test: 用來指定容器的名稱,這里將容器命名為 mysql_test。
    • -p 3306:3306: 這個參數表示將容器的 3306 端口映射到宿主機的 3306 端口,這樣可以通過宿主機的 3306 端口訪問到容器中運行的 MySQL 服務。
    • -e MYSQL_ROOT_PASSWORD=123: 通過這個參數可以設置 MySQL 的 root 用戶的密碼為 123。這是通過環境變量的方式傳遞給 MySQL 容器的。
    • -d: 這個參數表示以守護進程(后臺)模式運行容器,容器啟動后會在后臺持續運行。
    • mysql: 這是指定要運行的鏡像,即在這個容器中運行的應用程序。
  5. 查看運行中的容器

    [root@woniu ~]# docker ps
    CONTAINER ID   IMAGE     COMMAND                   CREATED              STATUS              PORTS                 NAMES
    3f315b189713   mysql     "docker-entrypoint.s…"   About a minute ago   Up About a minute   3306/tcp, 33060/tcp   mysql_test
    
  6. 進入容器內部

    [root@woniu ~]# docker exec -it mysql_test bash
    bash-4.4#
    
  7. 進入mysql

    bash-4.4# mysql -uroot -p123
    
  8. 查看mysql中的數據庫

    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | sys                |
    +--------------------+
    4 rows in set (0.00 sec)
    

    這樣我們就創建好了一個簡單mysql容器了

  9. 使用Navicat連接mysql進行測試

    為了讓外界能連docker內部的mysql,我們需要開放防火墻的3306端口或者是直接關閉防火墻(二選一)

    • 開放防火墻的3306端口

      [root@woniu ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
      [root@woniu ~]# firewall-cmd --reload
      

      查看已開放的端口

      [root@localhost conf]# firewall-cmd --zone=public --list-ports 
      3306/tcp
      
    • 關閉并禁用防火墻(不會自啟了)

      [root@woniu ~]# systemctl stop firewalld
      [root@woniu ~]# systemctl disable firewalld
      

    image-20231203155752619

    這時候我們發現還是連不上,需要做一些處理,進入容器內的mysql,我們發現mysql8.x版使用的是caching_sha2_password 身份驗證機制,而客戶端不支持這種新的加密方式,需要進行修改

    mysql> select host,user,plugin,authentication_string from mysql.user;
    +-----------+------------------+-----------------------+---------------------------------
    | host      | user             | plugin                | authentication_string
    +-----------+------------------+-----------------------+---------------------------------
    | %         | root             | caching_sha2_password | $A$005$w(nn{]>%Gz;5^u:9wu3vTHopW
    | localhost | mysql.infoschema | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVAL
    | localhost | mysql.session    | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVAL
    | localhost | mysql.sys        | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVAL
    | localhost | root             | caching_sha2_password | $A$005$1,Zq#1:OAK0Y&aSg6C/LCydGb
    +-----------+------------------+-----------------------+---------------------------------
    5 rows in set (0.00 sec)
    

    修改加密規則,更新用戶密碼并刷新權限

    mysql> ALTER USER 'root'@'%' IDENTIFIED BY '123' PASSWORD EXPIRE NEVER;
    Query OK, 0 rows affected (0.02 sec)mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123';
    Query OK, 0 rows affected (0.01 sec)mysql> FLUSH PRIVILEGES;
    Query OK, 0 rows affected (0.01 sec)
    

    退出容器,重啟mysql服務

    [root@woniu ~]# docker restart mysql_test
    

    現在的話,就可以連接成功了

    image-20231203160013848

五、docker常用命令及參數

  1. 容器管理:
    • docker run: 創建、運行一個新的容器
      • -d: 以守護進程(后臺)模式運行容器
      • -it: 分配一個交互式的終端
      • –name: 指定容器的名稱
      • -p: 端口映射
      • –network:指定容器連接的網絡。比如指定為我們之前自定義的網絡–network wn_docker_net
      • –ip:指定容器內部ip,配合–network使用,如–ip 172.18.12.2
      • -v:用于掛載數據卷,如-v /usr/local/softwares/mysql/3306/conf/my.cnf:/etc/mysql/my.cnf,冒號左邊的是外面宿主機的文件路徑,冒號右邊的是容器內的文件路徑,這樣我們可以修改外面的文件,容器內部的文件會被自動修改,非常方便
      • -e:用于設置環境變量
      • –restart:設置容器的重啟策略。可以使用該參數來指定容器在退出時的重啟策略,如 --restart=always 表示容器退出時總是重啟。能夠使我們在啟動docker時,自動啟動docker內的各種容器。
      • –rm:容器退出時自動刪除。使用該參數可以在容器退出后自動刪除容器,適用于臨時性任務的容器。
    • docker start: 啟動已經停止的容器
    • docker stop: 停止正在運行的容器
    • docker restart: 重啟容器
    • docker rm: 刪除容器
    • docker ps: 查看正在運行的容器
    • docker ps -a: 查看所有容器(包括已停止的)
    • docker logs: 查看容器的日志,如果在配置文件設置了自定義的日志路徑則失效,此時應該把日志掛載到外面查看
  2. 鏡像管理:
    • docker pull: 下載鏡像
    • docker build: 構建鏡像
    • docker push: 推送鏡像到倉庫
    • docker images: 查看本地的鏡像列表
    • docker rmi: 刪除鏡像
  3. 網絡管理:
    • docker network ls: 列出 Docker 網絡
    • docker network create: 創建一個新的 Docker 網絡
    • docker network connect: 將容器連接到網絡
    • docker network disconnect: 將容器從網絡斷開
  4. 倉庫管理:
    • docker login: 登錄到 Docker 倉庫
    • docker logout: 退出 Docker 倉庫
    • docker search: 在 Docker 倉庫中搜索鏡像
  5. 其他常用命令:
    • docker exec: 在運行的容器中執行命令,一般使用docker exec -it 容器名 bash進入容器內部
    • docker info: 顯示 Docker 系統信息
    • docker version: 顯示 Docker 版本信息
    • docker-compose: 使用 Docker Compose 來定義和運行多個容器的應用程序
    • docker inspect:用于獲取有關 Docker 對象(如容器、鏡像、網絡等)的詳細信息,可以配合管道|grep "x"進行過濾輸出結果搜索包含x的指定行

以上是一些常用的 Docker 命令及其參數,當然 Docker 還有更多的命令和選項,具體使用時可以通過docker --help/-h或者 docker [command] --help 來查看詳細的幫助信息。

六、Dockerfile

  1. 簡介

    Dockerfile 是一個用來構建鏡像的文本文件,文本內容包含了一條條構建鏡像所需的指令和說明。

  2. 結構

    image-20231010183346123

  3. 常用指令

    • FROM:指定基礎鏡像
    • MAINTAINER:指定維護者信息
    • ADD:復制文件
    • ENTRYPOINT:入口點
    • EXPOSE:指定暴露出去的端口號
    • VOLUME:指定掛載點
  4. 我的第一個Dockerfile

    • 創建文件hello,編輯內容,:wq保存退出

      [root@woniu abc]# vim hello
      FROM mysql:5.7
      MAINTAINER XZX
      
    • 使用docker build構建鏡像(-t給構建的鏡像指定標簽,-f指定 Dockerfile 的路徑,.表示當前目錄)

      [root@woniu abc]# docker build -t mysql:5.7 -f hello .
      
    • 查看構建好的鏡像

      [root@woniu abc]# docker images
      REPOSITORY            TAG       IMAGE ID       CREATED         SIZE
      ...
      mysql                 5.7       ddb3dd52c6a0   23 months ago   448MB
      

    一般使用Dockerfile是用來構建自己的項目容器的,使用springboot整合Dockerfile文件,具體可以參考我之前寫的博客(springboot整合Dockerfile-CSDN博客)

    FROM anapsix/alpine-java 
    MAINTAINER xzx 
    EXPOSE 9090 
    ADD target/hello-docker-1.0-SNAPSHOT.jar /app.jar 
    ENTRYPOINT ["java","-jar","/app.jar"]
    

    image-20231010193528319

    • FROM:指定基礎鏡像為java,也就是jdk,java項目需要jdk(或jre)運行
    • MAINTAINER:指定維護者信息為xzx
    • EXPOSE:指定暴露出去的端口號為9090
    • ADD:復制文件,將jar復制到容器的根目錄下,命名為app.jar
    • ENTRYPOINT:入口點,容器一旦創建運行,將會自動執行java -jar命令啟動項目

七、docker compose

  1. 簡介

    docker compose是一個編排多容器分布式部署的工具,提供命令集管理容器化應用的完整開發周期,包括服務構建、啟動和停止。簡單來說,它可以幫你一次性同時創建并啟動多個docker容器。

    查看源圖像

  2. 下載(https://github.com/docker/compose/releases?page=3)

    這里我選擇了2.14.2版本

    image-20231203184640416

    下載完成后上傳到你的虛擬機里的/usr/local/bin/目錄下,放到這個目錄下可以全局使用,對它添加可執行權限,修改名字簡化使用

    [root@woniu abc]# cd /usr/local/bin
    [root@woniu bin]# chmod u+x docker-compose-linux-x86_64
    [root@woniu bin]# mv docker-compose-linux-x86_64 docker-compose
    

    查看版本

    [root@woniu ~]# docker-compose --version
    Docker Compose version v2.14.2
    
  3. 簡單使用

    通過使用命令docker-compose up就可以按照當前目錄下docker-compose.yml的配置內容進行構建

    image-20231203190431316

    隨便進入一個目錄,創建docker-compose.yml文件,編輯里面的內容

    version: '2'
    networks:wn_docker_net:external: true
    services:hello-compose01:build: .image: rediscontainer_name: redis_6399ports:- "6399:6379"networks:wn_docker_net:ipv4_address: 172.18.12.102hello-compose02:build: .image: mysqlcontainer_name: mysql_3320environment:- "MYSQL_ROOT_PASSWORD=123"ports:- "3320:3306"networks:wn_docker_net:ipv4_address: 172.18.12.101
    

    build: .指的是會在當前目錄下找一個Dockerfile文件來構建鏡像,這個就和之前docker run配合參數構建運行容器一樣,只不過可以一次性構建多個,之后可以配合Dockerfile來構建分布式項目。

    使用docker-compose up執行

    [root@woniu test]# docker-compose up
    [+] Running 2/2? Container mysql_3320  Created                                                    0.1s? Container redis_6399  Created                                                    0.1s
    Attaching to mysql_3320, redis_6399
    mysql_3320  | 2023-12-03 11:14:26+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.1.0-1.el8 started.
    redis_6399  | 1:C 03 Dec 2023 11:14:26.959 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
    ...
    

    Ctrl+C終止

    ^CGracefully stopping... (press Ctrl+C again to force)
    [+] Running 2/2? Container mysql_3320  Stopped                                                    1.8s? Container redis_6399  Stopped                                                    0.3s
    canceled
    

    docker-compose restart重新啟動,這次是后臺啟動,可以做其他操作

    [root@woniu test]# docker-compose restart
    [+] Running 2/2? Container redis_6399  Started                                                    0.4s? Container mysql_3320  Started                                                    0.5s
    [root@woniu test]#
    

    docker ps查看已啟動的容器

    [root@woniu test]# docker ps
    CONTAINER ID   IMAGE     COMMAND                   CREATED         STATUS              PORTS                                                  NAMES
    e0594171516b   mysql     "docker-entrypoint.s…"   4 minutes ago   Up About a minute   33060/tcp, 0.0.0.0:3320->3306/tcp, :::3320->3306/tcp   mysql_3320
    b3d8853bea34   redis     "docker-entrypoint.s…"   4 minutes ago   Up About a minute   0.0.0.0:6399->6379/tcp, :::6399->6379/tcp              redis_6399
    

    docker-compose stop關閉構建的多個容器

    [root@woniu test]# docker-compose stop
    [+] Running 2/2? Container mysql_3320  Stopped                                                    1.4s? Container redis_6399  Stopped                                                    0.2s
    
  4. Spring Boot整合docker compose(還加了Dockerfile配合)

    編寫Dockerfile

    image-20231203192429023image-20231203192459454

    編寫docker-compose.yml

    image-20231203192542942image-20231203192605403

    點擊docker-compose.yml里面services:左邊綠色的按鈕運行并進行訪問測試,測試成功

    image-20231203192840943

    當中可能出現報錯,說需要Docker Desktop才能運行,那就去下好了,地址為docker.com/products/docker-desktop/,下載Windows版的(如果你電腦是Windows系統的話)。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/208160.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/208160.shtml
英文地址,請注明出處:http://en.pswp.cn/news/208160.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MIT線性代數筆記-第26講-對稱矩陣及正定性

目錄 26.對稱矩陣及正定性打賞 26.對稱矩陣及正定性 實對稱矩陣的特征值均為實數,并且一定存在一組兩兩正交的特征向量 這對于單位矩陣顯然成立 證明特征值均為實數: ? ???設一個對稱矩陣 A A A,對于 A x ? λ x ? A \vec{x} \lambda…

作業12.8

1. 使用手動連接,將登錄框中的取消按鈕使用qt4版本的連接到自定義的槽函數中,在自定義的槽函數中調用關閉函數。將登錄按鈕使用qt5版本的連接到自定義的槽函數中,在槽函數中判斷ui界面上輸入的賬號是否為"admin",密碼是…

Matlab simulink PLL學習筆記

本文學習內容:【官方】2022小邁步之 MATLAB助力芯片設計系列(一):電路仿真與模數混合設計基礎_嗶哩嗶哩_bilibili 時域模型 testbench搭建 菜單欄點擊simulink 創建空白模型 點擊庫瀏覽器 在PLL里面選擇一種架構拖拽到畫布。 如…

一文理解什么是交叉熵損失函數以及它的作用

今天看一個在深度學習中很枯燥但很重要的概念——交叉熵損失函數。 作為一種損失函數,它的重要作用便是可以將“預測值”和“真實值(標簽)”進行對比,從而輸出 loss 值,直到 loss 值收斂,可以認為神經網絡模型訓練完成。 那么這…

【Java用法】Hutool樹結構工具-TreeUtil快速構建樹形結構的兩種方式 + 數據排序

Hutool樹結構工具-TreeUtil快速構建樹形結構的兩種方式 數據排序 一、業務場景二、Hutool官網樹結構工具2.1 介紹2.2 使用2.2.1 定義結構2.2.2 構建Tree2.2.3 自定義字段名 2.3 說明 三、具體的使用場景3.1 實現的效果3.2 業務代碼3.3 實現自定義字段的排序 四、踩過的坑4.1 坑…

策略產品經理常用的ChatGPT通用提示詞模板

產品策略:請幫助我制定一個策略產品的產品策略。 市場調研:如何進行策略產品的市場調研? 競爭分析:如何進行策略產品的競爭分析? 用戶畫像:如何構建策略產品的用戶畫像? 產品定位&#xff1…

交換排序(冒泡排序)(快速排序(1))

目錄 1.交換排序 (1)冒泡排序 (2)快速排序 1.交換排序 基本思想:所謂交換,就是根據序列中兩個記錄鍵值的比較結果來對換這兩個記錄在序列中的位置,交換排序的特點是:將鍵值較大的…

ambari hive on Tez引擎一直卡住

hive on tez使用./bin/hive啟動后一直卡住,無法進入命令行 使用TEZ作為Hive默認執行引擎時,需要在調用Hive CLI的時候啟動YARN應用,預分配資源,這需要花一些時間,而使用MapReduce作為執行引擎時是在執行語句的時候才會…

iPaaS架構深入探討

在數字化時代全面來臨之際,企業正面臨著前所未有的挑戰與機遇。技術的迅猛發展與數字化轉型正在徹底顛覆各行各業的格局,不斷推動著企業邁向新的前程。然而,這一數字化時代亦衍生出一系列復雜而深奧的難題:各異系統之間數據孤島、…

基于SuperMap iObjects Java生成地圖瓦片

作者:dongyx 前言 在GIS領域,地圖瓦片技術作為GIS領域的關鍵技術,是提高地圖服務性能的關鍵手段之一。通過預先生成地圖的瓦片數據,可以顯著提升用戶訪問地圖時的響應速度和體驗。SuperMap iObjects for Java作為一款強大的GIS開…

Docker, Docker-compose部署Sonarqube

參考文檔 鏡像地址: https://hub.docker.com/_/sonarqube/tags Docker部署文檔地址 Installing from Docker | SonarQube Docs Docker-compose文檔部署地址: Installing from Docker | SonarQube Docs 部署鏡像 2.1 docker部署 # 宿主機執行 $. vi /etc/sysctl.conf…

Java注解詳解

概述 注解是對程序代碼進行標注和解釋的一種方式。在Java中,注解提供了一種元數據形式,能夠在程序中嵌入有關程序的信息,以便進行進一步的處理。注解通過使用符號來聲明,如Override、Deprecated等。 注解和注釋的區別 注釋&…

Unity中Batching優化的GPU實例化(4)

文章目錄 前言一、構建需要實例化的額外數據二、在頂點著色器,將實例化 ID 從 appdata 存入 v2f 傳給片元著色器三、在片斷著色器中訪問具體的實例化變量三、使用代碼修改Shader材質屬性,實現GPU實例化后不同對象顏色不同的效果1、在C#測試腳本生成小板凳…

ReactJs筆記摘錄

前言 以前2018年搞過一段時間react antd開發&#xff0c;兜兜轉轉又回到react世界。 TODO中 Hook函數 JSX語法 根元素與斜杠 注意局部的jsx片段也要加根元素: return (<div>{items.map((item) > (// 此處只能有一個根元素!!!<>...<div className&quo…

要求CHATGPT高質量回答的藝術:提示工程技術的完整指南—第 23 章:命名實體識別提示

要求CHATGPT高質量回答的藝術&#xff1a;提示工程技術的完整指南—第 23 章&#xff1a;命名實體識別提示 命名實體識別&#xff08;NER&#xff09;是一種允許模型對文本中的命名實體&#xff08;如人物、組織、地點和日期&#xff09;進行識別和分類的技術。 要在 ChatGPT…

微前端介紹

目錄 微前端概念 微前端特性 場景演示 微前端方案 iframe 方案 qiankun 方案 micro-app 方案 EMP 方案 無界微前端 方案 無界方案 成本低 速度快 原生隔離 功能強大 總結 前言&#xff1a;微前端已經是一個非常成熟的領域了&#xff0c;但開發者不管采用哪個現…

Leetcode—290.單詞規律【簡單】

2023每日刷題&#xff08;五十一&#xff09; Leetcode—290.單詞規律 實現代碼 class Solution { public:bool wordPattern(string pattern, string s) {unordered_map<char, string> m1;unordered_map<string, char> m2;stringstream stro(s);string tmp;for(a…

(env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序

應公司需求&#xff0c;在特定情況下需要修改ip 在開發過程中出現的小插曲 1、第一種情況&#xff1a;重復聲明 2、第二種情況&#xff1a; 應官方要求&#xff0c;需要跳轉的 tabBar 頁面的路徑&#xff08;需在 pages.json 的 tabBar 字段定義的頁面&#xff09;&#xff0…

React中使用TypeScript代替prop-types

原文鏈接 公眾號-React中使用TypeScript代替prop-types 個人公眾號&#xff0c;嗚嗚嗚&#xff0c;求各位大佬們關注下&#xff0c;本人的公眾號主要寫React 跟NodeJs的 ?關于prop-types 對于部分的同學&#xff0c;不大了解為什么我們的代碼里面要用到prop-types這個庫&a…

ArkTS快速入門

一、概述 ArkTS是鴻蒙生態的應用開發語言。它在保持TypeScript&#xff08;簡稱TS&#xff09;基本語法風格的基礎上&#xff0c;對TS的動態類型特性施加更嚴格的約束&#xff0c;引入靜態類型。同時&#xff0c;提供了聲明式UI、狀態管理等相應的能力&#xff0c;讓開發者可以…