Linux Docker的環境配置與簡單使用

參考資料

  1. Windows Docker Desktop設置中文
  2. 【Docker 】Docker Desktop for Windows(WSL 2)安裝
  3. WSL 2 上的 Docker 遠程容器入門

目錄

  • 一. 環境配置
    • 1.1 安裝WSL
    • 1.2 安裝配置 Docker Desktop
    • 1.3 VS Code 插件安裝
    • 1.4 下載項目,配置Dockerfile
  • 二. 常用Docker命令簡介
    • 2.1 Dockerfile打包鏡像
    • 2.2 image鏡像
      • 2.2.1 `docker image ls` 查看所有鏡像
      • 2.2.2 `docker image rm 鏡像ID` 刪除指定鏡像
    • 2.3 container容器
      • 2.3.1 `docker run` 創建并啟動容器
      • 2.3.2 `docker container ls --all` 查看所有容器
      • 2.3.3 容器的停止
        • 2.3.3.1 `docker stop`
        • 2.3.3.2 `docker container stop`
      • 2.3.4 容器的刪除
        • 2.3.4.1 `docker rm`
        • 2.3.4.2 `docker container rm`
      • 2.3.5 `docker exec`進入容器內部
      • 2.3.6 `docker container start` 啟動一個既存的容器
      • 2.3.7 `docker container logs` 查看 docker 容器的輸出
      • 2.3.8 `docker container cp` 復制容器內的文件到本地
    • 2.4 registry倉庫
      • 2.4.1 `docker pull` 鏡像拉取
      • 2.4.2 `docker push` 鏡像推送
  • 三. docker-compose
    • 3.1 遇到的問題
    • 3.2 `docker-compose.yml` 配置文件
    • 3.3 `docker-compose build` 構建鏡像
    • 3.4 數據遷移
    • 3.5 `docker-compose up` 運行容器


一. 環境配置

1.1 安裝WSL

?詳情請參考下面這篇博客
Linux Windows之wsl安裝使用簡介

1.2 安裝配置 Docker Desktop

?從官網下載安裝Docker Desktop

  • ※因為Docker Desktop依賴于wsl,所以需要先安裝wsl
  • https://www.docker.com/products/docker-desktop/

?安裝完成之后,進行如下配置

  • 指定Docker鏡像的磁盤存儲位置
  • 指定對應的wsl

在這里插入圖片描述

?當我們的wsl和docker都配置完成之后,使用下面的命令應該能看到docker的版本和wsl的掛載目錄

apluser@FengYeHong-HP:~$ docker --version
Docker version 28.1.1, build 4eba377
apluser@FengYeHong-HP:~$
apluser@FengYeHong-HP:~$ ls -l /mnt/wsl/
drwxr-xr-x 4 root root 100 Jun 11 20:06 docker-desktop
drwxr-xr-x 3 root root  60 Jun 11 20:06 docker-desktop-bind-mounts
-rw-r--r-- 1 root root 198 Jun 11 20:06 resolv.conf

1.3 VS Code 插件安裝

?Docker擴展

  • 提供對Dockerfile的語法檢測,代碼高亮,自動補全
  • 可以通過菜單運行各種Docker命令
  • 可以在左側面板中看到我們創建的所有鏡像,容器等

在這里插入圖片描述

?Dev Containers擴展

  • 支持在容器中打開代碼項目
  • 自動配置開發環境,通過 .devcontainer 目錄定義語言版本、依賴、插件等
  • 調試支持,支持容器內調試(Node.js、Python、C++ 等)

在這里插入圖片描述

1.4 下載項目,配置Dockerfile

?執行下面的git命令,下載示例項目

  • git clone https://github.com/mattwojo/helloworld-django.git

?下載完成之后,移動到示例項目的根目錄,應該會看到這樣的目錄

apluser@FengYeHong-HP:helloworld-django$ ls -l
total 148
-rw-r--r-- 1 apluser apluser    483 Jun 11 20:48 Dockerfile
-rw-r--r-- 1 apluser apluser 131072 Jun  7 16:56 db.sqlite3
drwxr-xr-x 4 apluser apluser   4096 Jun  7 09:38 hello
-rwxr-xr-x 1 apluser apluser    667 Jun  7 09:38 manage.py
-rw-r--r-- 1 apluser apluser     16 Jun  7 09:38 requirements.txt
drwxr-xr-x 3 apluser apluser   4096 Jun  7 09:38 web_project

二. 常用Docker命令簡介

?所有的命令都可以通過docker --help查看

2.1 Dockerfile打包鏡像

?在項目的根目錄下手動創建一個Dockerfile文件,創建之后的目錄如下

apluser@FengYeHong-HP:helloworld-django$ ls -l
total 148
-rw-r--r-- 1 apluser apluser    196 Jun  7 16:54 Dockerfile
-rw-r--r-- 1 apluser apluser 131072 Jun  7 16:56 db.sqlite3
drwxr-xr-x 4 apluser apluser   4096 Jun  7 09:38 hello
-rwxr-xr-x 1 apluser apluser    667 Jun  7 09:38 manage.py
-rw-r--r-- 1 apluser apluser     16 Jun  7 09:38 requirements.txt
drwxr-xr-x 3 apluser apluser   4096 Jun  7 09:38 web_project
apluser@FengYeHong-HP:helloworld-django$
apluser@FengYeHong-HP:helloworld-django$ cat Dockerfile
# 安裝python環境, 指定基礎鏡像
FROM python:3.11-slim
# 創建一個名為 app 的工作目錄
WORKDIR /app
# 將當前目錄下的 requirements.txt 復制到app工作目錄中
COPY requirements.txt .# 運行pip命令, 安裝python項目所需的依賴
RUN pip install --no-cache-dir -r requirements.txt
# 將當前目錄下的所有內容都復制到app工作目錄中
COPY . /app# 指定8000端口
EXPOSE 8000
# 啟動python項目
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
  • -t參數用來指定 image 文件的名字,后面還可以用冒號指定標簽。如果不指定,默認的標簽就是latest
  • 最后的那個.表示Dockerfile文件所在的路徑,因為當前路徑在Dockerfile文件所在的目錄,所示是一個.
docker image build -t helloworld-django .
# 或者
docker image build -t helloworld-django:0.0.1 .

2.2 image鏡像

2.2.1 docker image ls 查看所有鏡像

apluser@FengYeHong-HP:~$ docker image ls
REPOSITORY          TAG       IMAGE ID       CREATED        SIZE
helloworld-django   latest    51fedeaf85ff   2 days ago     363MB
hello-world         latest    0b6a027b5cf3   4 months ago   20.4kB

2.2.2 docker image rm 鏡像ID 刪除指定鏡像

apluser@FengYeHong-HP:~$ docker image rm 51fedeaf85ff
Untagged: helloworld-django:latest
Deleted: sha256:51fedeaf85ffdc569edae785cce00602eb90b4a7a12766c6f671a517f0c4f199
apluser@FengYeHong-HP:~$
apluser@FengYeHong-HP:~$ docker image ls
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    0b6a027b5cf3   4 months ago   20.4kB

2.3 container容器

2.3.1 docker run 創建并啟動容器

  • -it:容器的 Shell 映射到當前的 Shell,然后你在本機窗口輸入的命令,就會傳入容器
  • --rm:容器一旦停止就會自動刪除(僅在臨時測試時使用)
  • -p:容器的 8000 端口映射到本機的 8100 端口
  • helloworld-django:latest:指定要啟動的容器
apluser@FengYeHong-HP:~$ docker run -it --rm -p 8100:8000 helloworld-django:latest
Watching for file changes with StatReloader
Performing system checks...System check identified no issues (0 silenced).You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
June 14, 2025 - 00:12:19
Django version 3.2.25, using settings 'web_project.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.

?容器啟動之后,在瀏覽器中就可以看到如下所示的界面

在這里插入圖片描述

2.3.2 docker container ls --all 查看所有容器

  • docker container ls:查看正在運行的容器
  • docker container ls --all:查看正在所有容器,包括已經停止運行的容器

在這里插入圖片描述

?docker ps 的作用和docker container相同,只不過從語義化上看來,docker container更好。

在這里插入圖片描述

2.3.3 容器的停止

2.3.3.1 docker stop

?docker stop 容器ID:停止正在運行的容器。注意:停止運行的容器并不會被刪除。

  • docker stop <容器ID或名稱> 會向容器發送 SIGTERM 信號,讓其優雅退出,如果在默認的 10 秒內還沒退出,則發送 SIGKILL 強制終止。
  • docker kill <容器ID或名稱> 會立即強制終止容器(不等待)
apluser@FengYeHong-HP:~$ docker container ls
CONTAINER ID   IMAGE                      COMMAND                  CREATED          STATUS          PORTS                    NAMES
d32995d7a305   helloworld-django:latest   "python manage.py ru…"   22 minutes ago   Up 22 minutes   0.0.0.0:8100->8000/tcp   kind_bassi
apluser@FengYeHong-HP:~$
apluser@FengYeHong-HP:~$ docker stop d32995d7a305
d32995d7a305
2.3.3.2 docker container stop
apluser@FengYeHong-HP:~$ docker container ls
CONTAINER ID   IMAGE                      COMMAND                  CREATED          STATUS          PORTS                    NAMES
783e1ad29407   helloworld-django:latest   "python manage.py ru…"   16 minutes ago   Up 16 minutes   0.0.0.0:8100->8000/tcp   reverent_lalande
apluser@FengYeHong-HP:~$
apluser@FengYeHong-HP:~$ docker container stop 783e1ad29407
783e1ad29407

2.3.4 容器的刪除

2.3.4.1 docker rm

?如果你不只是要停止容器,還想連容器一起刪除(比如臨時容器),可以用docker rm -f-f 相當于先 stoprm

apluser@FengYeHong-HP:~$ docker container ls
CONTAINER ID   IMAGE                      COMMAND                  CREATED          STATUS         PORTS                    NAMES
4c07319bbebc   helloworld-django:latest   "python manage.py ru…"   11 seconds ago   Up 9 seconds   0.0.0.0:8100->8000/tcp   infallible_sammet
apluser@FengYeHong-HP:~$
apluser@FengYeHong-HP:~$ docker rm -f 4c07319bbebc
4c07319bbebc
2.3.4.2 docker container rm

?語義化更好

apluser@FengYeHong-HP:~$ docker container ls --all
CONTAINER ID   IMAGE                      COMMAND                  CREATED          STATUS                      PORTS                    NAMES
6380b917ff0c   helloworld-django:latest   "python manage.py ru…"   44 seconds ago   Up 42 seconds               0.0.0.0:8100->8000/tcp   determined_boyd
f0e58479ba3d   helloworld-django          "python manage.py ru…"   54 minutes ago   Exited (0) 54 minutes ago                            vigorous_leavitt
cca37d72e4ba   helloworld-django          "python manage.py ru…"   54 minutes ago   Exited (0) 54 minutes ago                            musing_franklin
f51614fe80d9   helloworld-django:latest   "python manage.py ru…"   55 minutes ago   Exited (0) 54 minutes ago                            unruffled_franklin
bb11c3bbaf5f   helloworld-django          "python manage.py ru…"   56 minutes ago   Exited (0) 56 minutes ago                            relaxed_banach
apluser@FengYeHong-HP:~$
apluser@FengYeHong-HP:~$ docker container rm bb11c3bbaf5f
bb11c3bbaf5f
apluser@FengYeHong-HP:~$

2.3.5 docker exec進入容器內部

apluser@FengYeHong-HP:~$ docker container ls
CONTAINER ID   IMAGE                      COMMAND                  CREATED          STATUS          PORTS                    NAMES
783e1ad29407   helloworld-django:latest   "python manage.py ru…"   12 seconds ago   Up 11 seconds   0.0.0.0:8100->8000/tcp   reverent_lalande
apluser@FengYeHong-HP:~$
apluser@FengYeHong-HP:~$ docker exec -it 783e1ad29407 bash
root@783e1ad29407:/app# ls -l
total 20
-rw-r--r-- 1 root root  483 Jun 11 11:48 Dockerfile
-rw-r--r-- 1 root root    0 Jun 13 23:58 db.sqlite3
drwxr-xr-x 4 root root 4096 Jun  7 00:38 hello
-rwxr-xr-x 1 root root  667 Jun  7 00:38 manage.py
-rw-r--r-- 1 root root   16 Jun  7 00:38 requirements.txt
drwxr-xr-x 3 root root 4096 Jun  7 00:38 web_project

2.3.6 docker container start 啟動一個既存的容器

?docker run的方式會創建并啟動一個容器,同樣的命令運行兩次,就會生成兩個一模一樣的容器文件。
如果希望重復使用容器,就要使用docker container start命令,它用來啟動已經生成、已經停止運行的容器文件。

在這里插入圖片描述

2.3.7 docker container logs 查看 docker 容器的輸出

?docker 容器的輸出,即容器里面 Shell 的標準輸出。如果

  • docker run 命令運行容器的時候,沒有使用-it參數
  • docker container start 直接啟動既存容器時

就要用這個命令查看輸出。

在這里插入圖片描述

2.3.8 docker container cp 復制容器內的文件到本地

?將容器內的requirements.txt文件復制到本地的指定路徑中

apluser@FengYeHong-HP:~$ docker exec -it f0e58479ba3d bash
root@f0e58479ba3d:/app#
root@f0e58479ba3d:/app# ls -l
total 20
-rw-r--r-- 1 root root  483 Jun 11 11:48 Dockerfile
-rw-r--r-- 1 root root    0 Jun 13 23:58 db.sqlite3
drwxr-xr-x 4 root root 4096 Jun  7 00:38 hello
-rwxr-xr-x 1 root root  667 Jun  7 00:38 manage.py
-rw-r--r-- 1 root root   16 Jun  7 00:38 requirements.txt
drwxr-xr-x 3 root root 4096 Jun  7 00:38 web_project
root@f0e58479ba3d:/app#
root@f0e58479ba3d:/app# exit
exit
apluser@FengYeHong-HP:~$ docker container cp f0e58479ba3d:/app/requirements.txt /home/apluser/work/
Successfully copied 2.05kB to /home/apluser/work/
apluser@FengYeHong-HP:~$
apluser@FengYeHong-HP:~$ ls -l /home/apluser/work/requirements.txt
-rw-r--r-- 1 apluser apluser 16 Jun  7 09:38 /home/apluser/work/requirements.txt

2.4 registry倉庫

?Docker Registry 是 Docker 提供的鏡像倉庫服務,用于 存儲、分發和管理 Docker 鏡像。可使用 Docker Registry 來

  • 上傳(push)鏡像
  • 下載(pull)鏡像
  • 搭建私有鏡像倉庫

Docker Registry 常與 docker login, docker push, docker pull 命令配合使用。

2.4.1 docker pull 鏡像拉取

?鏡像拉取語法:docker pull <registry>/<倉庫>:<標簽>

# 從docker的官網倉庫拉取nginx鏡像
docker pull nginx:latest
# 從私人倉庫拉取鏡像
docker pull myregistry.com:5000/myimage:latest

2.4.2 docker push 鏡像推送

?在推送鏡像之前,你需要為鏡像添加倉庫地址和標簽。

# docker tag <本地鏡像ID或名稱> <registry>/<鏡像名稱>:<標簽>
docker tag myapp:latest myregistry.com:5000/myapp:latest

?向指定的倉庫推送鏡像

# docker push <registry>/<鏡像名稱>:<標簽>
docker push myregistry.com:5000/myapp:latest

三. docker-compose

3.1 遇到的問題

💦當我們直接使用docker run -it --rm -p 8100:8000 helloworld-django:latest命令創建并運行容器的時候,django工程會出現下面的提示,原因就在于我們在并沒有進行數據遷移。

You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

?我們可以通過下面的方式進行數據遷移

docker run -it \
-v $(pwd)/db.sqlite3:/app/db.sqlite3 \
-w /app \
helloworld-django \
python manage.py migrate

💥注意,在此案例中數據遷移之后的有數據的db.sqlite3文件并不在容器中,而是在本地的路徑下。
因此,之后真正啟動容器的時候,必須要將本地目錄下的db.sqlite3文件掛載到容器中才行,也就是說容器中的程序讀取的是本地目錄中的db.sqlite3文件

在這里插入圖片描述

?使用掛載的數據的同時,啟動容器

  • -v /主機路徑文件:/容器路徑文件 這會讓容器內部使用主機上的文件,從而讓 db.sqlite3 的內容得以持久保存。
  • -w /app 設置容器內的工作目錄是 /app,這個要與你 Dockerfile 中 WORKDIR 設置一致(通常也是 /app
docker run -it -p 8100:8000 \
-v $(pwd)/db.sqlite3:/app/db.sqlite3 \
-w /app \
helloworld-django

在這里插入圖片描述

💦但是輸入這么長的命令,不僅繁瑣,還很容器出錯,有沒有什么更好的辦法?

3.2 docker-compose.yml 配置文件

?將命令行中的配置命令,通過yml文件的方式簡化到配置文件中

apluser@FengYeHong-HP:helloworld-django$ ls -l
total 152
-rw-r--r-- 1 apluser apluser    483 Jun 11 20:48 Dockerfile
-rw-r--r-- 1 apluser apluser 131072 Jun 14 14:49 db.sqlite3
-rw-r--r-- 1 apluser apluser    259 Jun 14 15:14 docker-compose.yml
drwxr-xr-x 4 apluser apluser   4096 Jun  7 09:38 hello
-rwxr-xr-x 1 apluser apluser    667 Jun  7 09:38 manage.py
-rw-r--r-- 1 apluser apluser     16 Jun  7 09:38 requirements.txt
drwxr-xr-x 3 apluser apluser   4096 Jun  7 09:38 web_project
apluser@FengYeHong-HP:helloworld-django$
apluser@FengYeHong-HP:helloworld-django$ cat docker-compose.yml
services:web:image: helloworld-djangobuild:context: .dockerfile: Dockerfileports:- "8100:8000"volumes:- ./db.sqlite3:/app/db.sqlite3working_dir: /appcommand: python manage.py runserver 0.0.0.0:8000

3.3 docker-compose build 構建鏡像

在這里插入圖片描述

3.4 數據遷移

?docker-compose run web python manage.py migrate

  • 執行命令進行數據遷移
  • 此處的web應當和docker-compose.yml文件中的services對應的名稱相同

在這里插入圖片描述

💥需要注意的是,這種 docker-compose run 會啟動一個一次性容器,它不會被 docker-compose up 管理到。

在這里插入圖片描述

3.5 docker-compose up 運行容器

# --remove-orphans 在啟動的時候,刪除被遺漏的容器
docker-compose up --remove-orphans
# 在后臺啟動容器
docker-compose up -d

?如下圖所示,容器啟動成功,頁面也能正常訪問。

在這里插入圖片描述

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

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

相關文章

函數指針與指針函數:本質區別與高級應用

目錄 一、概念本質解析 1. 函數指針&#xff08;Function Pointer&#xff09; 2. 指針函數&#xff08;Pointer Function&#xff09; 二、函數指針深度剖析 1. 基礎用法示例 2. 高級應用&#xff1a;回調函數 3. 函數指針數組 三、指針函數深入探討 1. 基礎實現模式 …

【python】基于pycharm的海康相機SDK二次開發

海康威視二次開發相機管理 這段代碼基于python開發的&#xff0c;用了opencv的一些庫函數。實現了一個完整的海康機器人相機管理工具&#xff0c;支持多相機連接、參數配置、圖像采集和實時顯示功能。目前USB相機測試無誤&#xff0c;除了丟一些包。 1. 主要類結構 HKCameraM…

HTTP 協議各個主要版本的功能特點、核心原理、使用場景總結

我們來系統總結一下 HTTP 協議各個主要版本的功能特點、核心原理&#xff08;用圖示輔助說明&#xff09;以及典型使用場景。 核心演進目標&#xff1a; 提升性能、安全性、效率和靈活性。 1. HTTP/0.9 (1991) - 遠古雛形 功能特點: 極其簡單&#xff1a; 只支持 GET 方法。無…

Linux編程:3、進程通信-信號

一、進程通信概述 &#xff08;一&#xff09;進程通信的目的 在企業開發中&#xff0c;一個項目常常需要多個進程共同協作&#xff0c;而這些進程之間需要進行通信&#xff08;交換信息&#xff09;以便協作。本章內容主要圍繞信號講解&#xff0c;其它進程通信的常用方式請…

深度解析Vue.js組件開發與實戰案例

一、Vue.js組件化思想 Vue.js的核心思想之一就是組件化開發。組件系統是Vue的一個重要概念,它允許我們使用小型、獨立和通常可復用的組件構建大型應用。在Vue中,組件本質上是一個擁有預定義選項的Vue實例。 1.1 為什么需要組件化 代碼復用:避免重復造輪子,提高開發效率可…

TensorFlow 2.0 與 Python 3.11 兼容性

TensorFlow 2.0 與 Python 3.11 兼容性 TensorFlow 2.0 官方版本對 Python 3.11 的支持有限&#xff0c;可能出現兼容性問題。建議使用 TensorFlow 2.10 或更高版本&#xff0c;這些版本已適配 Python 3.11。若需強制運行&#xff0c;可通過以下方式解決依賴沖突&#xff1a; …

MyBatisPlus 全面學習路徑

MyBatisPlus 全面學習路徑 學習目錄 第一部分&#xff1a;MyBatisPlus 基礎 MyBatisPlus 簡介與核心特性快速入門與環境搭建核心功能&#xff1a;BaseMapper 與 CRUD 接口條件構造器&#xff08;Wrapper&#xff09;詳解ActiveRecord 模式主鍵策略與通用枚舉 第二部分&…

React16,17,18,19更新對比

文章目錄 前言一、16更新二、17更新三、18更新四、19更新總結 前言 總結react 16&#xff0c;17&#xff0c;18&#xff0c;19所更新的內容&#xff0c;并且部分會涉及到原理講解。 一、16更新 1、在16.8之前更新&#xff0c;還是基于class組件的升級和維護更新。并且更新了一…

【git】有兩個遠程倉庫時的推送、覆蓋、合并問題

當你執行 git pull origin develop(或默認的 git pull)時,Git 會把遠端 origin/develop 的提交合并到你本地的 develop,如果遠端已經丟掉(或從未包含)你之前在私庫(priv)里提交過的改動,那這些改動就會被「覆蓋」,看起來就像「本地修改沒了」。 要解決這個問題,分…

Spring Boot 集成國內AI,包含文心一言、通義千問和訊飛星火平臺實戰教程

Spring Boot 集成國內AI&#xff0c;包含文心一言、通義千問和訊飛星火平臺實戰教程 一、項目結構二、添加Maven依賴三、配置API密鑰 (application.yml)四、配置類1. AI配置類 (AiProperties.java)2. 啟用配置類 (AiConfig.java) 五、服務層實現1. 文心一言服務 (WenxinService…

Elastic Search 學習筆記

1. Elasticsearch 是什么&#xff1f;有哪些應用場景&#xff1f; Elasticsearch 整體原理流程&#xff1f; Elasticsearch 是一個為海量數據提供近實時搜索和分析能力的分布式搜索引擎&#xff0c;廣泛應用于全文檢索、日志分析和大數據處理場景中。 Elasticsearch 整體原理…

動態規劃之斐波那契數(一)

解法一&#xff1a;遞歸 class Solution { public:int fib(int n) {if(n<2) return n;return fib(n-1)fib(n-2);} }; 解法二&#xff1a;dp class Solution { public:int fib(int N) {if (N < 1) return N;int dp[2];dp[0] 0;dp[1] 1;for (int i 2; i < N; i) {…

如何設置爬蟲的訪問頻率?

設置爬蟲的訪問頻率是爬蟲開發中的一個重要環節&#xff0c;尤其是在爬取大型網站&#xff08;如1688&#xff09;時&#xff0c;合理的訪問頻率可以避免對目標網站造成過大負擔&#xff0c;同時也能降低被封禁的風險。以下是一些常見的方法和建議&#xff0c;幫助你合理設置爬…

前端面試六之axios

一、axios簡介 Axios 是一個基于 Promise 的 HTTP 客戶端&#xff0c;用于瀏覽器和 Node.js 環境。在瀏覽器端&#xff0c;Axios 的底層實現是基于原生的 XMLHttpRequest&#xff08;XHR&#xff09;。它對 XHR 進行了封裝&#xff0c;增加了 Promise 支持、自動轉換 JSON 數據…

模板方法模式Template Method Pattern

模式定義 定義一個操作中算法的骨架&#xff0c;而將一些步驟延遲到子類中&#xff0c;模板方法使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟 類行為型模式 模式結構 AbstractClass&#xff1a;抽象類ConcreteClass&#xff1a;具體子類 只有類之間的繼…

【行云流水AI筆記】游戲里面的強化學習使用場景

強化學習在游戲中的應用已從早期的棋類博弈擴展到現代復雜游戲的全流程優化&#xff0c;以下是結合最新技術進展的核心應用場景及典型案例&#xff1a; 一、競技游戲的策略突破 1. 策略博弈類游戲 代表案例&#xff1a;AlphaGo/AlphaZero&#xff08;圍棋&#xff09;、Alph…

使用Python和PyTorch框架,基于RetinaNet模型進行目標檢測,包含數據準備、模型訓練、評估指標計算和可視化

下面是一個完整的實現方案,使用Python和PyTorch框架,基于RetinaNet模型進行目標檢測,包含數據準備、模型訓練、評估指標計算和可視化。 import os import numpy as np import matplotlib.pyplot as plt import torch import torchvision from torchvision.models.detection…

springboot服務如何獲取pod當前ip方案及示例

在 Kubernetes 集群中&#xff0c;Spring Boot 服務獲取 Pod 當前 IP 的方案主要有兩種&#xff1a;通過環境變量注入 或 通過 Java 代碼動態獲取網絡接口 IP。以下是兩種方案的詳細說明及示例&#xff1a; 方案一&#xff1a;通過 Kubernetes Downward API 注入環境變量 原理…

1.MySQL三層結構

1.所謂安裝的Mysql數據庫&#xff0c;就是在電腦上安裝了一個數據庫管理系統&#xff08;【DBMS】database manage system&#xff09;&#xff0c;這個管理程序可以管理多個數據庫。 2.一個數據庫中可以創建多個表&#xff0c;以保存數據&#xff08;信息&#xff09;。【數據…

[深度學習]目標檢測基礎

目錄 一、實驗目的 二、實驗環境 三、實驗內容 3.1 LM_BoundBox 3.1.1 實驗代碼 3.1.2 實驗結果 3.2 LM_Anchor 3.2.1 實驗代碼 3.2.2 實驗結果 3.3 LM_Multiscale-object-detection 3.3.1 實驗代碼 3.3.2 實驗結果 四、實驗小結 一、實驗目的 了解python語…