主頁 > 前端設計 > 【學習筆記】學習Docker,看完這篇超詳細的教程就足夠了

【學習筆記】學習Docker,看完這篇超詳細的教程就足夠了

2020-10-07 14:33:31 前端設計

本文為觀看B站狂神的視頻學習Docker時所整理的筆記,中間加了一些自己的理解,如果對大家有所幫助,還希望點贊支持一下,后續我會繼續將自己遇到的Docker問題以及學習的新的知識全部整理添加到本文后面或者整理發布新的文章,如果感興趣可以關注一波,

目錄

  • Docker的概述
    • 為什么需要Docker?
    • 簡述虛擬機和Docker容器的區別
    • Docker中的DevOps(開發、運維)
    • Docker的基本組成
  • Docker的安裝
    • 前期準備(看看即可)
    • 開始安裝
    • 如何卸載Docker(了解即可)
    • 配置阿里云鏡像加速
    • Run的流程以及Docker原理
  • Docker的常用命令
    • 查看資訊和幫助命令
    • 鏡像命令
    • 容器命令
    • 常用的其他命令
      • 后臺啟動容器
      • 查看系統CPU狀態
      • 查看日志
      • 查看容器中行程資訊
      • 查看鏡像中的元資料
      • 進入當前正在運行的容器
      • 從容器中拷貝檔案到主機上
  • 常用命令小結
  • 練習
    • 練習一:使用Docker安裝Nginx
    • 練習二:使用Docker部署Tomcat
    • 練習三:使用Docker部署Elasticsearch、Kibana

Docker的概述

在這里插入圖片描述
Docker 是一個開源的應用容器引擎,基于 Go 語言 并遵從 Apache2.0 協議開源,
Docker的官網地址:https://www.docker.com/
檔案地址:https://docs.docker.com/
倉庫地址:https://hub.docker.com/

為什么需要Docker?

傳統的開發問題

  • 環境(切換/配置)麻煩
    在開發一個產品的途中,時常會出現的問題就是:“在我的電腦上可以運行,而到了另外一個開發人員的電腦上就不能使用的問題”,或者是因為版本更新導致服務不可用等等,這對于運維人員來說,壓力十分大,而環境配置是一個非常頭疼的問題,每一個機器都需要部署環境(Redis集群、ES…)十分麻煩且費時費力,并且配置的環境不能跨平臺,非常不方便,
  • 應用之間的沖突(隔離性)
    假如我們將開發的兩個應用部署到同一個服務器上,如果一個應用出了問題,導致CPU出問題上升到了100%,那么第二個應用也會受到關聯;并且如果兩個應用分別使用不同的語言或者技術堆疊,當安裝在同一個服務器上的時候可能就會造成各種沖突/無法兼容,到時候除錯就非常頭疼,如下圖所示:

Docker的出現解決以上問題

  • 關于環境問題解決方案
    Docker可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然后發布到任何流行的 Linux 機器上,也可以實作虛擬化,將環境構建打包成一個鏡像發布到網上,想要用這個環境的時候就直接拉取一份就OK了,

  • 解決應用之間隔離問題
    Docker核心思想就是使用容器化技術,打包裝箱,每個箱子是互相隔離的,容器是完全使用沙箱機制,相互之間不會有任何介面(類似 iPhone 的 app),更重要的是容器性能開銷極低,如下圖所示:
    在這里插入圖片描述

簡述虛擬機和Docker容器的區別

這里參考知乎上大佬的說法:https://www.zhihu.com/question/48174633
服務器虛擬化解決的核心問題是資源調配,而容器解決的核心問題是應用開發、測驗和部署,

  • 使用Docker容器和使用虛擬機在運行多個相互隔離的應用時對比,Docker要簡潔很多;
  • Docker守護行程可以直接與主作業系統進行通信,為各個Docker容器分配資源;它還可以將容器與主作業系統隔離,并將各個容器互相隔離,
  • 虛擬機啟動需要數分鐘,而Docker容器可以在數毫秒內啟動,由于沒有臃腫的從作業系統,Docker可以節省大量的磁盤空間以及其他系統資源,
  • 虛擬機更擅長于徹底隔離整個運行環境,例如,云服務提供商通常采用虛擬機技術隔離不同的用戶,而Docker通常用于隔離不同的應用,例如前端,后端以及資料庫,
  • 傳統的虛擬機,首先是虛擬出一條硬體,運行一個完整的作業系統,然后在這個系統上安裝和運行軟體;
  • Docker容器內的應用直接運行在宿主機的內容,容器是沒有自己的內核的,也沒有虛擬我們的硬體,所以就輕巧了很多;

Docker中的DevOps(開發、運維)

(1)應用更快速的交付和部署

  • 傳統:一堆的幫助檔案和安裝程式
  • Docker:打包鏡像發布測驗,一鍵運行

(2)更快捷的升級和擴縮容

  • 使用了Docker以后我們部署應用就像搭積木一樣;
  • 專案打包成一個鏡像

(3)更簡單的系統運維

  • 在容器話之后我們的開發、測驗環境都是高度一致的

(4)更高效的計算資源利用

  • Docker是內核級別的虛擬化,可以再一個物理機上可以運行很多的容器實體!服務器的性能可以被壓榨到極致,

Docker的基本組成

在這里插入圖片描述

  • 鏡像(image):docker鏡像就好比是一個模板,可以通過這個模板來創建容器服務,tomcat鏡像—>run---->tomcat01容器(提供服務),通過這個鏡像可以創建多個容器(最終服務運行或者專案運行就是在容器中運行的),

  • 容器(container):docker利用容器技術,獨立運行一個或者一組應用,通過鏡像來創建的,啟動、停止、洗掉、基本命令,目前就可以把這個容器理解為就是一個簡易的Linux系統,

  • 倉庫(repository):倉庫就是存放鏡像的地方,倉庫分為公有倉庫和私有倉庫,Docker Hub(默認是國外的)、阿里云…都有容器服務器(配置鏡像加速)

Docker的安裝

前期準備(看看即可)

不一樣的話也行,主要是看Centos的版本
運行環境:阿里云服務器 Centos 7
連接工具:XShell 5
需要掌握:Linux的基本命令
由于這里的運行環境是Centos 7,與Centos 6的命令還是有一些區別的,但是區別不大,后面我會將命令詳細的介紹,

查看環境

  • 系統內核是3.10以上的
[root@oldou ~]#  uname -r
3.10.0-957.21.3.el7.x86_64
  • 查看系統的版本:
    cat /etc/os-release
    在這里插入圖片描述

開始安裝

這里可以參考官網的幫助檔案進行安裝
在這里插入圖片描述
在這里插入圖片描述
地址:https://docs.docker.com/engine/install/centos/

第一步:卸載舊版本(運行以下代碼即可)

 yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

在這里插入圖片描述
第二步:安裝yum工具包
命令:yum install -y yum-utils

第三步:設定鏡像倉庫

yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo   
    # 這里默認是國外的,十分的慢,我們用以下阿里云的地址
yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo   
    # 這是阿里云的docker鏡像地址,建議使用這個 

在這里插入圖片描述
更新一下yum索引:
命令:yum makecache fast
在這里插入圖片描述
第四步:安裝Docker
docker-ce:社區版 ee:企業版
命令:yum install docker-ce docker-ce-cli containerd.io
在這里插入圖片描述
注意:以上是安裝Docker最新的版本,如果想要安裝指定的版本,就需要進行以下命令:
yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
這里的<VERSION_STRING>表示版本,
在這里插入圖片描述
第五步:啟動Docker
命令:systemctl start docker
注意:Centos6使用的是service,而Centos7使用的都變成了systemctl

第六步:查看Docker是否安裝成功
命令:docker version
在這里插入圖片描述
查看Docker的狀態: systemctl status docker
在這里插入圖片描述
第七步:測驗hello-word
命令:docker run hello-world
在這里插入圖片描述
第八步:查看一下剛剛下載的hello-word的這個鏡像
命令:docker images
在這里插入圖片描述

如何卸載Docker(了解即可)

官網中有介紹,下面我給出來:
第一步:卸載依賴
命令:yum remove docker-ce docker-ce-cli containerd.io

第二步:洗掉資源 安裝的資源都在/var/lib/docker目錄下
命令:rm -rf /var/lib/docker

這樣就OK了,

配置阿里云鏡像加速

由于我們拉取鏡像的時候,使用國外的下載太慢了,當然我們這里是使用國內阿里云的,所以肯定比國外的訪問和下載快,這個時候再配個加速器就美滋滋,

第一步:登錄我們的阿里云控制臺,然后找到容器鏡像服務
在這里插入圖片描述
第二步:找到鏡像加速器---->鏡像加速地址
在這里插入圖片描述
第三步:配置使用(直接復制命令運行即可)

(1)在服務器中創建一個目錄sudo mkdir -p /etc/docker

(2)編輯組態檔

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://7ih0bv9h.mirror.aliyuncs.com"]
}
EOF

在這里插入圖片描述
(3)將服務重啟:sudo systemctl daemon-reload

(4)啟動docker:sudo systemctl restart docker

這樣就配置完成了,

Run的流程以及Docker原理

回顧hello-word的流程
在這里插入圖片描述
就拿我們運行hello-word來說,一開始我們運行hello-word的時候,Docker會在本機中尋找鏡像,而本機中沒有這個鏡像,所以就回去我們配置的Hub上去下載鏡像,如果找到了就將鏡像下載到本地運行,如果沒有就回傳錯誤,如下所示:
在這里插入圖片描述
底層原理

(1)Docker是怎么作業的?

  • Docker是一個Client-Server結構的系統,Docker的守護行程運行在本機上(運行在后臺,和mysql一樣),通過Socket從客戶端訪問,
  • DockerServer接收到Docker-Client的指令,就會執行這個命令,
    在這里插入圖片描述
    (2)Docker為什么比虛擬機(VM)快?
    在這里插入圖片描述
  • Docker利用的是宿主機的內核,VM需要的是Guest OS
    所以說,新建一個容器的時候,Docker不需要像虛擬機那樣重新加載一個作業系統內核,避免引導,虛擬機是加載Guest OS,是分鐘級別的,而Docker利用的是宿主機的作業系統,省略了這個復雜的程序,
    在這里插入圖片描述

Docker的常用命令

官方幫助檔案:https://docs.docker.com/engine/reference/run/

查看資訊和幫助命令

命令:docker version # 查看docker的版本資訊
在這里插入圖片描述
命令:docker info # 顯示Docker的系統資訊,包括鏡像和容器的數量

命令:docker xxx --help #幫助命令,可以顯示docker的所有命令

鏡像命令

查看鏡像
命令:docker images # 查看所有本地的主機上的鏡像
在這里插入圖片描述

REPOSITORY  :鏡像的倉庫源
TAG					 :鏡像的標簽
IMAGE ID		 :鏡像的ID
CERATED		 :鏡像的創建時間
SIZE				 :鏡像的大小

docker  images  [可選項]
-a    , --all        # 列出所有鏡像
-q	   , --quiet    # 只顯示鏡像的ID

搜索鏡像
命令:docker search 鏡像名 # 搜索鏡像

可選項,通過搜過過濾
 --filter-STARS=3000   #搜索出來的鏡像修飾STARS大于3000的

在這里插入圖片描述
下載鏡像
命令:docker pull 鏡像名 [:tag]# 下載鏡像,默認是下載最新版 latest ,
在這里插入圖片描述
如果是下載指定版本的鏡像,那么就需要指定:版本號,如下所示:
docker pull mysql:5.7 # 指定版本下載 下載mysql5.7

洗掉鏡像

# 洗掉鏡像  -f就是全部洗掉,后面的條件是根據什么來洗掉,這里是根據容器的id進行洗掉
docker  rmi -f  容器id   

# 洗掉多個鏡像
docker  rmi -f  容器id  容器id 容器id    

# 洗掉所有的鏡像 
docker  rmi -f $(docker images -aq)  

容器命令

說明:我們有了鏡像才可以去創建容器,Linux,下載一個centos鏡像來進行學習,

下載centos鏡像
命令:docker pull centos

新建容器并啟動
命令:docker run [可選引數] image

引數說明:
--name="Name" : 容器名字 ,tomcat01、tomcat02,用來區分容器
-d :后臺方式運行                                
-it:使用互動方式運行,進入容器查看內容
-p :指定容器的埠   -p  8080:8080  
        -p     ip:主機埠:容器埠                                
        -p     主機埠:容器埠(常用方式)
        -p     容器埠                                                     
        容器埠                                                             
-p: 隨機指定埠     

測驗,啟動并進入容器
命令:docker run -it centos /bin/bash #啟動容器
命令: ls # 查看容器內的centos,基礎版本,很多命令都是不完善的
命令:exit # 從容器中退回到主機

列出所有運行中的容器
命令:docker ps [可選引數] # 列出當前正在運行的程式

-a             #列出當前正在運行的容器+帶出歷史運行過的容器
-n=?      #顯示最近創建的容器  
-p            #只顯示容器的編號

在這里插入圖片描述

退出容器
命令:

exit                     # 直接停止容器并退出
Ctrl + P + Q             # 容器不停止退出

洗掉容器

docker rm  容器id        # 洗掉指定的容器,不能洗掉正在運行的容器
docker rm -f $(docker ps -aq)       # 洗掉所有的容器   
docker ps -a -q|xargs docker rm     # 洗掉所有的容器

啟動和容器的操作

docker start 容器id                  # 啟動容器
docker restart 容器id                # 重啟容器
docker stop 容器id                   # 停止正在運行的容器
docker kill 容器id                   # 強制停止當前正在運行的容器 

常用的其他命令

后臺啟動容器

命令:docker run -d 鏡像名

docker run -d centos            # 后臺啟動centos
  • 問題:使用docker ps查看,發現 centos停止了

  • 常見的坑:docker容器使用后臺運行的時候就必須要一個前臺執行緒,不然docker發現沒有應用就會自動停止

  • 例如:nginx容器啟動后,發現自己沒有提供服務就會立刻停止,就是沒有程式了,

查看系統CPU狀態

命令:docker stats [容器id]
在這里插入圖片描述

查看日志

命令:docker logs -tf --tail 容器,沒有日志

  • 撰寫一段shell腳本
docker run -d centos /bin/sh -c "while true; do echo oldouTest;sleep 1;done"
  • 使用docker ps去查看
  • 顯示日志 :docker logs -tf --tail number 容器id
-tf                  #顯示日志
--tail number        #要顯示日志條數 

例如:docker logs -tf --tail 10 容器id

查看容器中行程資訊

命令:docker top 容器id

查看鏡像中的元資料

命令:docker inspect 容器id

進入當前正在運行的容器

我們的容器通常都是使用后臺方式運行的,需要進入容器,修改一些配置
方式一:
命令:docker exec -it 容器id bashShell
例如:docker exec -it bb6ddb943ea5 /bin/bash
在這里插入圖片描述
方式二:
命令:docker attach 容器id
在這里插入圖片描述
兩種方式的對比

  • docker exec: 進入容器后開啟一個新的終端,可以在里面操作(常用)
  • docker attach:進入容器正在執行的終端,不會啟動新的行程

從容器中拷貝檔案到主機上

在這里插入圖片描述

# 進入到容器內:
[root@oldou home]# docker exec -it bb6ddb943ea5 /bin/bash  
[root@bb6ddb943ea5 /]# cd home
[root@bb6ddb943ea5 home]# ls

# 創建一個java檔案
[root@bb6ddb943ea5 home]# touch Test.java 
[root@bb6ddb943ea5 home]# ls
Test.java

# 退出容器回到主機
[root@bb6ddb943ea5 home]# exit
exit

#查看當前運行的容器
[root@oldou home]# docker ps

# 將容器內/home目錄下的Test.java檔案拷貝到主機的home目錄下
[root@oldou home]# docker cp bb6ddb943ea5:/home/Test.java /home
[root@oldou home]# ls
Test.java

拷貝只是一個手動的程序,后面學習了 -v 卷的技術時,可以實作同步資料

常用命令小結

在這里插入圖片描述

命令英文描述中文意思
attachAttach to a running container當前shell下attach連接指定運行鏡像
buildBuild an image from a Dockerfile通過Dockerfile定制鏡像
commitCreate a new image from a container changes提交當前容器為新的境像
cpcopy files/folders from the containers filesystem to the host path從容器中拷貝指定檔案或者目錄到宿主機中
createCreate a new container創建一個新的容器,同run.但不啟動容器
diffInspect changes on a container’s filesystem查看docker容器變化
eventsGet real time events from the server從docker服務中獲取容器實時事件
exportStream the contents of a container as a tar archive匯出容器的內容流作為一個 tar歸檔檔案[對應import]
historyShow the history of an image展示一個境像形成歷史
imagesList images列出系統當前所有鏡像
importCreate a new filesystem image from the contents of a tarball從tar包中的內容創建一個新的檔案系統映像[對應export]
infoDisplay system-wide information顯示系統相關資訊
inspectReturn low-level information on a container查看容器詳細資訊
killKill a running containerkill指定docker容器
loadLoad an image from a tar archive從—個 tar包中加載一個鏡像[對應save]
loginRegister or Login to the docker registry server注冊或者登陸一個docker源服務器
logoutLog out from a Docker registry server從當前Docker registry退出
logsFetch the logs of a container輸出當前容器日志資訊
portLookup the public-facing port which is NAT-ed to PRIVATE_PORT查看映射埠對應的容器內部源端
pausePause all processes within a container暫停容器
psList containers列出容器串列
pullPull an image or a repository from the docker registry server從docker鏡像服務器中拉取指定鏡像或者庫鏡像
pushpush an image or a repository to the docker registry server推送指定鏡像或者庫鏡像至docker源服務器
restartRestart a running container重啟運行的容器
rmRemove one or more containers移除—個或者多個容器
rmiRemove one or more images移除一個或多個境像[無容器使用該鏡像才可洗掉,否則需洗掉相關容器才可能繼續或者 -f 強制洗掉
runRun a command in a new container創建—個新的容器并運行一個命令
saveSave an image to a tar arehive保存一個鏡像為—個tar包「對應load]
searchSearch for an image on the Docker Hub在docker hub中搜索鏡像
startstart a stopped containers啟動容器
stopstop a stopped containers停止容器
tagTag an image into a repository給源中鏡像打標簽
topLookup the running processes of a container查看容器中運行的行程資訊
unpauseUnpause a paused container取消暫停容器
versionshow the docker version information查看docker版本號
waitBlock until a container stops,then print its exit code截取容器停止時的退出狀態值

練習

練習一:使用Docker安裝Nginx

官網:https://hub.docker.com/_/nginx

第一步:搜索鏡像(這里建議去docker Hub上查找一下版本資訊,上面還有幫助檔案介紹)
命令:docker search nginx

第二步:下載鏡像
命令:docker pull nginx

第三步:查看鏡像并且啟動
命令:docker images # 查看所有鏡像

**命令:docker run -d --name nginx01 -p 3344:80 nginx

-d 表示后臺運行,--name 表示給容器起名字,而nginx01表示起的名字,
-p 宿主機埠 :容器內部埠

后面的3344表示主機開發的3344埠,80表示容器內部的埠,這里表示將80埠映射到外部的3344,
可以通過公網的3344訪問到docker里面的80埠,后面的nginx表示的是鏡像名字,

在這里插入圖片描述
第四步:查看容器并且運行測驗
命令:docker ps #查看是否啟動
命令:curl localhost:3344
在這里插入圖片描述
關閉防火墻systemctl stop firewalld

到這一步的時候我們就可以使用 公網ip:3344 在瀏覽器訪問了
在這里插入圖片描述
第五步:進入Nginx容器
命令:docker exec -it nginx01 /bin/bash #進入容器

命令:whereis nginx

命令:cd /etc/nginx

命令:ls查看

命令:exit #退出

命令:docker stop 容器id #停止Nginx容器
在這里插入圖片描述
埠暴露的概念:
在這里插入圖片描述
思考問題:我們每次改動nginx組態檔,都需要進入容器內部?十分的麻煩,我要是可以在容器外部提供一個映射路徑,達到在容器修改檔案名,容器內部就可以自動修改?
使用 -v資料卷,

練習二:使用Docker部署Tomcat

官網:https://hub.docker.com/_/tomcat

方式一:

  • 官方給出的命令:
    docker run -it --rm tomcat:9.0 # 下載并啟動
    上面介紹Nginx的啟動都是后臺啟動,停止了容器以后,容器還是可以查到,并且占用著配置的埠,
    使用官方給出的 docker run -it --rm tomcat:9.0 ,一般用于測驗,用完停止就洗掉

方式二:
還是使用之前的方式,

  • 第一步:搜索鏡像(這里建議去docker Hub上查找一下版本資訊,上面還有幫助檔案介紹)
    命令:docker search tomcat

  • 第二步:下載鏡像
    命令:docker pull tomcat # 這是下載最新版的tomcat
    命令: docker pull tomcat:7.0 # 指定版本號

  • 第三步:查看鏡像并且啟動
    命令:docker images # 查看所有鏡像
    命令:docker run -d --name tomcat01 -p 3355:8080 tomcat:7.0

-d 表示后臺運行,--name 表示給容器起名字,而tomcat01表示起的名字,
-p 宿主機埠 :容器內部埠

后面的3355表示主機開發的3355埠,8080表示容器內部的埠,這里表示將8080埠映射到外部的3355,
可以通過公網的3355訪問到docker里面的8080埠,后面的tomcat表示的是鏡像名字,

我們這個時候去瀏覽器訪問發現,報了404例外,那我們進入到tomcat容器內部查看一下原因.

  • 第四步:進入容器查看原因
    命令:docker exec -it tomcat01 /bin/bash
    當我們使用ll命令時竟然不能使用,只能使用ls命令查看,同時進入到webapps目錄下發現這個目錄竟然是空的,

發現問題:
1、Linux的命令少了;
2、webapps目錄下沒有檔案;

原因:
阿里云的鏡像默認是最小的鏡像,它把所有不必要的都剔除掉了,保證最小可運行的環境,

解決辦法:
在tomcat目錄下有一個webapps.dist目錄,這個目錄下有我們所需要的檔案,也就是webapps目錄所需要的檔案,我們將這個檔案中的內容全部拷貝到webapps下,

  • 第五步:拷貝資源
    命令:cp -r webapps.dist/* webapps

這樣我們再去瀏覽器中去訪問就可以訪問到了,

思考問題:我們以后要部署專案,如果每次都要進入容器是不是十分麻煩?要是可以在容器外部提供一個映射路徑,webapps ,我們在外部放置專案,就自動同步到內部就好了!

練習三:使用Docker部署Elasticsearch、Kibana

由于暫時沒有學過Elasticsearch,所以暫時沒有做這個部分的筆記,只是暫時看了一遍,后續補上…

后續筆記待更新中…

轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/161380.html

標籤:其他

上一篇:Hadoop源代碼分析【1-5】

下一篇:node.js連接mysql資料庫,封裝成api。

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • vue移動端上拉加載

    可能做得過于簡單或者比較low,請各位大佬留情,一起探討技術 ......

    uj5u.com 2020-09-10 04:38:07 more
  • 優美網站首頁,頂部多層導航

    一個個人用的瀏覽器首頁,可以把一下常用的網站放在這里,平常打開會比較方便。 第一步,HTML代碼 <script src=https://www.cnblogs.com/szharf/p/"js/jquery-3.4.1.min.js"></script> <div id="navigate"> <ul> <li class="labels labels_1"> ......

    uj5u.com 2020-09-10 04:38:47 more
  • 頁面為要加<!DOCTYPE html>

    最近因為寫一個js函式,需要用到$(window).height(); 由于手寫demo的時候,過于自信,其實對前端方面的認識也不夠體系,用文本檔案直接敲出來的html代碼,第一行沒有加上<!DOCTYPE html> 導致了$(window).height();的結果直接是整個document的高 ......

    uj5u.com 2020-09-10 04:38:52 more
  • WordPress網站程式手動升級要做好資料備份

    WordPress博客網站程式在進行升級前,必須要做好網站資料的備份,這個問題良家佐言是遇見過的;在剛開始接觸WordPress博客程式的時候,因為升級問題和博客網站的修改的一些嘗試,良家佐言是吃盡了苦頭。因為購買的是西部數碼的空間和域名,每當佐言把自己的WordPress博客網站搞到一塌糊涂的時候 ......

    uj5u.com 2020-09-10 04:39:30 more
  • WordPress程式不能升級為5.4.2版本的原因

    WordPress是一款個人博客系統,受到英文博客愛好者和中文博客愛好者的追捧,并逐步演化成一款內容管理系統軟體;它是使用PHP語言和MySQL資料庫開發的,用戶可以在支持PHP和MySQL資料庫的服務器上使用自己的博客。每一次WordPress程式的更新,就會牽動無數WordPress愛好者的心, ......

    uj5u.com 2020-09-10 04:39:49 more
  • 使用CSS3的偽元素進行首字母下沉和首行改變樣式

    網頁中常見的一種效果,首字改變樣式或者首行改變樣式,效果如下圖。 代碼: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, ......

    uj5u.com 2020-09-10 04:40:09 more
  • 關于a標簽的講解

    什么是a標簽? <a> 標簽定義超鏈接,用于從一個頁面鏈接到另一個頁面。 <a> 元素最重要的屬性是 href 屬性,它指定鏈接的目標。 a標簽的語法格式:<a href=https://www.cnblogs.com/summerxbc/p/"指定要跳轉的目標界面的鏈接">需要展示給用戶看見的內容</a> a標簽 在所有瀏覽器中,鏈接的默認外觀如下: 未被訪問的鏈接帶 ......

    uj5u.com 2020-09-10 04:40:11 more
  • 前端輪播圖

    在需要輪播的頁面是引入swiper.min.js和swiper.min.css swiper.min.js地址: 鏈接:https://pan.baidu.com/s/15Uh516YHa4CV3X-RyjEIWw 提取碼:4aks swiper.min.css地址 鏈接:https://pan.b ......

    uj5u.com 2020-09-10 04:40:13 more
  • 如何設定html中的背景圖片(全屏顯示,且不拉伸)

    1 <style>2 body{background-image:url(https://uploadbeta.com/api/pictures/random/?key=BingEverydayWallpaperPicture); 3 background-size:cover;background ......

    uj5u.com 2020-09-10 04:40:16 more
  • Java學習——HTML詳解(上)

    HTML詳解 初識HTML Hyper Text Markup Language(超文本標記語言) 1 <!--DOCTYPE:告訴瀏覽器我們要使用什么規范--> 2 <!DOCTYPE html> 3 <html lang="en"> 4 <head> 5 <!--meta 描述性的標簽,描述一些 ......

    uj5u.com 2020-09-10 04:40:33 more
最新发布
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 07:59:23 more
  • 生產事故-走近科學之消失的JWT

    入職多年,面對生產環境,盡管都是小心翼翼,慎之又慎,還是難免捅出簍子。輕則滿頭大汗,面紅耳赤。重則系統停擺,損失資金。每一個生產事故的背后,都是寶貴的經驗和教訓,都是專案成員的血淚史。為了更好地防范和遏制今后的各類事故,特開此專題,長期更新和記錄大大小小的各類事故。有些是親身經歷,有些是經人耳傳口授 ......

    uj5u.com 2023-04-18 07:55:04 more
  • 記錄--Canvas實作打飛字游戲

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 打開游戲界面,看到一個畫面簡潔、卻又富有挑戰性的游戲。螢屏上,有一個白色的矩形框,里面不斷下落著各種單詞,而我需要迅速地輸入這些單詞。如果我輸入的單詞與螢屏上的單詞匹配,那么我就可以獲得得分;如果我輸入的單詞錯誤或者時間過長,那么我就會輸 ......

    uj5u.com 2023-04-04 08:35:30 more
  • 了解 HTTP 看這一篇就夠

    在學習網路之前,了解它的歷史能夠幫助我們明白為何它會發展為如今這個樣子,引發探究網路的興趣。下面的這張圖片就展示了“互聯網”誕生至今的發展歷程。 ......

    uj5u.com 2023-03-16 11:00:15 more
  • 藍牙-低功耗中心設備

    //11.開啟藍牙配接器 openBluetoothAdapter //21.開始搜索藍牙設備 startBluetoothDevicesDiscovery //31.開啟監聽搜索藍牙設備 onBluetoothDeviceFound //30.停止監聽搜索藍牙設備 offBluetoothDevi ......

    uj5u.com 2023-03-15 09:06:45 more
  • canvas畫板(滑鼠和觸摸)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>canves</title> <style> #canvas { cursor:url(../images/pen.png),crosshair; } #canvasdiv{ bo ......

    uj5u.com 2023-02-15 08:56:31 more
  • 手機端H5 實作自定義拍照界面

    手機端 H5 實作自定義拍照界面也可以使用 MediaDevices API 和 <video> 標簽來實作,和在桌面端做法基本一致。 首先,使用 MediaDevices.getUserMedia() 方法獲取攝像頭媒體流,并將其傳遞給 <video> 標簽進行渲染。 接著,使用 HTML 的 < ......

    uj5u.com 2023-01-12 07:58:22 more
  • 記錄--短視頻滑動播放在 H5 下的實作

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 短視頻已經無數不在了,但是主體還是使用 app 來承載的。本文講述 H5 如何實作 app 的視頻滑動體驗。 無聲勝有聲,一圖頂百辯,且看下圖: 網址鏈接(需在微信或者手Q中瀏覽) 從上圖可以看到,我們主要實作的功能也是本文要講解的有: ......

    uj5u.com 2023-01-04 07:29:05 more
  • 一文讀懂 HTTP/1 HTTP/2 HTTP/3

    從 1989 年萬維網(www)誕生,HTTP(HyperText Transfer Protocol)經歷了眾多版本迭代,WebSocket 也在期間萌芽。1991 年 HTTP0.9 被發明。1996 年出現了 HTTP1.0。2015 年 HTTP2 正式發布。2020 年 HTTP3 或能正... ......

    uj5u.com 2022-12-24 06:56:02 more
  • 【HTML基礎篇002】HTML之form表單超詳解

    ??一、form表單是什么

    ??二、form表單的屬性

    ??三、input中的各種Type屬性值

    ??四、標簽 ......

    uj5u.com 2022-12-18 07:17:06 more