小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Docker基礎知識

 imnobody2001 2023-09-04 發(fā)布于黑龍江

全文預計閱讀時間: 15分鐘

圖片

目錄

1、什么是Docker

2、Docker的架構

3、Docker基礎操作

4、Docker使用實例


圖片

什么是Docker

PART 01

1.1

Docker

Docker是dotCloud公司開源的一個基于LXC的高級容器引擎,源碼托管在Github上,基于go語言并且遵從Apache2.0協(xié)議開源。Docker是一個開源的應用容器引擎,可以輕松的為任何應用創(chuàng)建一個輕量級的、可移植的、自給自足的容器。開發(fā)者在筆記本上編譯測試通過的容器可以批量地在生產環(huán)境中部署,包括VMs(虛擬機)、 bare metal、OpenStack 集群和其他的基礎應用平臺。 


1.2

Docker運用場景

  • web應用的自動化打包和發(fā)布;
  • 自動化測試和持續(xù)集成、發(fā)布;
  • 在服務型環(huán)境中部署和調整數(shù)據(jù)庫或其他的后臺應用;
  • 從頭編譯或者擴展現(xiàn)有的OpenShift或Cloud Foundry平臺來搭建自己的PaaS環(huán)境;
  • ......

1.3

Docker和虛擬機VM的區(qū)別

  • Docker

圖片

  • 虛擬機
圖片
Docker和虛擬機是兩種不同的虛擬化技術。
虛擬機(Virtual Machine,簡稱VM)是一種完全模擬硬件的虛擬化技術,它在物理服務器上創(chuàng)建一個完整的操作系統(tǒng)實例,包括操作系統(tǒng)內核和應用程序。每個虛擬機都有自己的內存、處理器、磁盤和網絡等資源,它們是相互隔離的,并且可以運行不同的操作系統(tǒng)。虛擬機通常需要較多的資源和啟動時間較長。
Docker是一種容器化平臺,它利用操作系統(tǒng)級虛擬化技術,在物理服務器上創(chuàng)建一個或多個獨立的容器。容器與宿主機共享操作系統(tǒng)內核,但是在容器內部可以運行獨立的應用程序和文件系統(tǒng),實現(xiàn)了進程級別的隔離。相比虛擬機,Docker容器更輕量級、啟動快速,并且占用更少的資源。
總結來說,虛擬機提供了完整的操作系統(tǒng)虛擬化,而Docker提供了應用程序級別的虛擬化。虛擬機更適合運行不同的操作系統(tǒng)和需要完全隔離的應用場景,而Docker更適合部署和管理分布式應用、快速擴展和遷移應用等場景。
圖片

Docker的架構

PART 02

2.1

Docker整體架構

Docker是一種開源的容器化平臺,它采用了客戶端-服務器(C/S)架構模式,使用遠程API來管理和創(chuàng)建Docker容器。Docker架構分為四個部分:Docker主機、Docker客戶端、Docker守護進程和Docker鏡像倉庫。

  • Docker主機是運行Docker守護進程的機器。
  • Docker客戶端是用戶與Docker進行交互的工具,包括命令行工具和RESTful API。
  • Docker守護進程是負責管理Docker對象(如鏡像、容器)的核心組件,它包括多個子系統(tǒng),如鏡像管理子系統(tǒng)、網絡管理子系統(tǒng)、文件系統(tǒng)子系統(tǒng)等,它負責管理Docker對象,如鏡像、容器和網絡。
  • Docker鏡像倉庫是用來保存Docker鏡像的地方,用戶可以通過Docker Hub或者私有倉庫來存儲和管理自己的鏡像。
圖片

2.2

Docker三大組成要素

Docker的三大組成要素是鏡像、容器和倉庫:
  • 鏡像:是一個只讀的模板,它可以是一個可運行軟件(如tomcat、mysql),也可以是一個配置文件(如nginx、redis)等。鏡像是由Dockerfile文件生成的,Dockerfile文件包含了構建鏡像所需的指令和參數(shù)。
  • 容器:是鏡像的一個運行實例(和編程的面向對象相似,鏡像為類、容器為對象),可以在容器中運行應用程序。每個容器都是相互隔離的,擁有自己的文件系統(tǒng)、網絡棧和進程空間。
  • 倉庫:用于存放鏡像和容器的地方。Docker Hub是一個公共的鏡像倉庫,用戶可以上傳自己的鏡像或者下載別人公開的鏡像。
圖片

Docker基礎操作

PART 03

3.1

Docker常用命令

# 查看已安裝的Docker版本
docker version

# 搜索Docker鏡像
docker search <關鍵詞>

# 拉取Docker鏡像
docker pull <鏡像名稱>

# 列出所有本地的Docker鏡像
docker images

# 創(chuàng)建一個新的容器
docker create <鏡像名稱>

# 啟動一個容器
docker start <容器ID或名稱>

# 停止一個運行中的容器
docker stop <容器ID或名稱>

# 重新啟動一個容器
docker restart <容器ID或名稱>

# 進入容器的命令行終端
docker exec -it <容器ID或名稱> /bin/bash

# 列出所有正在運行的容器
docker ps

# 列出所有容器(包括運行中和已停止的)
docker ps -a

# 刪除一個容器
docker rm <容器ID或名稱>

# 查看容器日志
docker logs <容器ID或名稱>

3.2

Docker運行一個鏡像流程

圖片

3.3

容器使用(ubuntu鏡像為例)

  • 獲取鏡像

docker pull ubuntu

圖片

  • 新建容器并啟動
docker run [可選參數(shù)] image
# 參數(shù)可選說明
# --name='name' 容器名字:用來區(qū)分容器
# -d 后臺方式運行:相當于nohup
# -it 使用交互式運行:進入容器查看內容
# -p 指定容器的端口(四種方式)小寫字母p:
#    1、-p ip:主機端口:容器端口
#    2、-p 主機端口:容器端口
#    3、-p 容器端口
#    4、容器端口
# -P 隨機指定端口(大寫字母P)

案例:
docker run -it ubuntu /bin/bash
# 參數(shù)說明:
# -i: 交互式操作
# -t: 終端
# ubuntu: ubuntu鏡像
# /bin/bash:放在鏡像名后的是命令,這里我們希望有個交互式Shell,因此用的是/bin/bash
# exit:退出終端
圖片
  • 查看所有容器
# 列出當前正在運行的容器
docker ps
# 參數(shù)可選說明
# 列出當前正在運行的容器+歷史運行過的容器
   -a
# 顯示最近創(chuàng)建的容器(可以指定顯示幾條,比如-n=1)
   -n=?
# 只顯示容器的編號
   -q

# 案例:
docker ps -a

圖片

  • 啟動已暫停的容器
docker start <容器ID>

# 開啟暫停容器案例
docker start 27e32be85b0e
圖片
  • 停止容器
docker stop <容器ID>

# 停止容器案例
docker stop 27e32be85b0e
圖片

  • 重啟容器
docker restart <容器ID>

# 重啟容器案例
docker restart 27e32be85b0e
圖片

  • 進入容器
啟動容器時如果使用-d參數(shù),容器啟動后會進入后臺。此時想要進入容器,可以通過docker attach或者docker exec命令。
docker attach <容器ID>
docker exec -it <容器ID>

# 進入容器案例
docker attach 27e32be85b0e
docker exec -it 27e32be85b0e /bin/bash
圖片
注:如果使用docker attach命令從這個容器退出,會導致容器的停止。

圖片
注:如果使用docker exec命令從這個容器退出,容器不會停止,推薦使用這個命令進入容器。

  • 導出容器
docker export [容器ID] > 導出文件名

# 導出容器快照到本地文件ubuntu.tar案例
docker export 27e32be85b0e > ubuntu.tar
圖片

  • 導入容器
cat 本地快照文件 | docker import - 鏡像名:tag

# 將快照文件ubuntu.tar導入到鏡像test/ubuntu:v1
cat ubuntu.tar | docker import - test/ubuntu:v1

圖片


  • 查看容器日志
docker logs
# 參數(shù)可選說明
# 顯示日志
   -tf
# 要顯示的日志條數(shù)
   --tail number

# 案例:
docker logs -tf 5f5c92a0c964
docker logs -tf --tail 5 5f5c92a0c964

圖片

圖片

  • 查看容器進程信息

docker top <容器ID>

# 查看容器的進程信息
docker top 27e32be85b0e
圖片

  • 刪除容器

docker rm <容器ID>
# 刪除容器(不能刪除正在運行的容器)如果要強制刪除,如下命令:
docker rm -f <容器id>

# 刪除容器案例:
docker rm -f 5f5c92a0c964
圖片

3.4

鏡像使用

  • 查看鏡像列表

docker images

# 各個選項說明:
# REPOSITORY:表示鏡像的倉庫源
# TAG:鏡像的標簽
# IMAGE ID:鏡像ID
# CREATED:鏡像創(chuàng)建時間
# SIZE:鏡像大小
圖片
  • 獲取鏡像

docker pull

# 獲取ubuntu13.10版本的鏡像
docker pull ubuntu:13.10
圖片
  • 查找鏡像

docker search

# 各個選項說明:
# NAME: 鏡像倉庫源的名稱
# DESCRIPTION: 鏡像的描述
# OFFICIAL: 是否 docker 官方發(fā)布
# stars: 類似 Github 里面的 star,表示點贊、喜歡的意思。
# AUTOMATED: 自動構建。

# 查詢鏡像案例
docker search ubuntu
圖片
  • 刪除鏡像

docker rmi <鏡像名:版本>

# 刪除鏡像案例:
docker rmi test/ubuntu:v1
圖片
  • 創(chuàng)建鏡像

當docker 鏡像倉庫中下載的鏡像不能滿足需求時,可以通過以下兩種方式對鏡像進行更改:

1、從已經創(chuàng)建的容器中更新鏡像,并且提交這個鏡像
# 更新鏡像之前,需要使用鏡像來創(chuàng)建一個容器
docker run -t -i ubuntu:15.10 /bin/bash
# 在運行的容器內進行我們需要的修改
xxx
# 在完成操作后,輸入exit命令退出容器
exit
# 通過命令docker commit來提交容器副本
docker commit -m='我的更新' -a='th' ca34bd7196b5 test/ubuntu:v1
# 各個參數(shù)說明:
# -m: 提交的描述信息
# -a: 指定鏡像作者
# ca34bd7196b5:容器 ID
# test/ubuntu:v2: 指定要創(chuàng)建的目標鏡像名
圖片
2、使用Dockerfile指令來創(chuàng)建一個新的鏡像
# 零開始來創(chuàng)建一個新的鏡像
docker build
# 1、需要創(chuàng)建一個Dockerfile文件,內容如下
FROM nginx
Run echo '<h1>hello, docker!</h1>' > /usr/share/nginx/html/index.html
# FROM:指定使用哪個鏡像源
# RUN:指令告訴docker在鏡像內執(zhí)行命令

# 2、通過docker build命令創(chuàng)建鏡像
docker build -t test/nginx .
# 參數(shù)說明:
# -t :指定要創(chuàng)建的目標鏡像名
# . :Dockerfile文件所在目錄,可以指定Dockerfile的絕對路徑
圖片
Dockerfile文件的指令(詳細Dockerfile文件編寫還需要單獨學習):
Dockerfile指令說明
FROM指定基礎鏡像,用于后續(xù)的指令構建。
MAINTAINER指定Dockerfile的作者/維護者。(已棄用,推薦使用LABEL指令)
LABEL添加鏡像的元數(shù)據(jù),使用鍵值對的形式。
RUN在構建過程中在鏡像中執(zhí)行命令。
CMD指定容器創(chuàng)建時的默認命令。(可以被覆蓋)
ENTRYPOINT設置容器創(chuàng)建時的主要命令。(不可被覆蓋)
EXPOSE聲明容器運行時監(jiān)聽的特定網絡端口。
ENV在容器內部設置環(huán)境變量。
ADD將文件、目錄或遠程URL復制到鏡像中。
COPY將文件或目錄復制到鏡像中。
VOLUME為容器創(chuàng)建掛載點或聲明卷。
WORKDIR設置后續(xù)指令的工作目錄。
USER指定后續(xù)指令的用戶上下文。
ARG定義在構建過程中傳遞給構建器的變量,可使用 'docker build' 命令設置。
ONBUILD當該鏡像被用作另一個構建過程的基礎時,添加觸發(fā)器。
STOPSIGNAL設置發(fā)送給容器以退出的系統(tǒng)調用信號。
HEALTHCHECK定義周期性檢查容器健康狀態(tài)的命令。
SHELL覆蓋Docker中默認的shell,用于RUN、CMD和ENTRYPOINT指令。
  • 設置鏡像標簽

docker tag <鏡像id> 用戶名稱/鏡像源名:新標簽

# 鏡像添加新標簽案例:
docker tag 21e3943d27ac test/nginx:dev
圖片

3.5

倉庫管理

Docker Hub是全球最大的容器鏡像庫,有超過100,000個容器鏡像。您可以在Docker Hub上找到各種類型的鏡像,包括官方鏡像、第三方鏡像和企業(yè)鏡像。此外,您還可以使用Docker Hub來管理和共享您的鏡像。
# 登錄遠程倉庫命令
docker login [OPTIONS] [SERVER]
# [OPTIONS]說明:
# -u:登陸的用戶名
# -p:登陸的密碼
# [SERVER]為倉庫服務器地址,不指定默認為官方倉庫Docker Hub

# 推送本地倉庫鏡像到連接的遠程倉庫
docker push 本地鏡像名

# 退出遠程倉庫命令
docker logout



圖片

Docker使用實例

PART 04

4.1

docker安裝nginx

# 1、拉取最新版的Nginx鏡像
docker pull nginx:latest
# 2、查看nginx是否拉取成功
docker images
# 3、運行nginx容器
docker run --name nginx-test -p 8080:80 -d nginx
# 參數(shù)說明
# --name nginx-test:容器名稱。
# -p 8080:80:端口進行映射,將本地8080端口映射到容器內部的80端口。
# -d nginx:設置容器在在后臺一直運行
圖片
圖片

4.2

docker安裝mysql


# 1、拉取最新版的Mysql鏡像
docker pull mysql:latest
# 2、查看mysql是否拉取成功
docker images
# 3、運行mysql容器
docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
# 參數(shù)說明
# --name nginx-test:容器名稱
# -p 3306:3306:映射容器服務的3306端口到宿主機的3306端口,外部主機可以直接通過宿主機ip:3306 訪問到MySQL的服務
# MYSQL_ROOT_PASSWORD=123456:設置MySQL服務root用戶的密碼
圖片
圖片
圖片

4.3

docker安裝Tomcat

# 1、拉取最新版的Tomcat鏡像
docker pull tomcat
# 2、查看tomcat是否拉取成功
docker images|grep tomcat
# 3、運行tomcat容器
docker run -d -p 8080:8080 --name tomcat tomcat:latest
# 參數(shù)說明
# -p:設置端口映射,宿主機端口:容器端口
# -P(大寫):隨機分配端口
# -i:前臺交互式啟動,通常與-t配合使用
# -t:啟動容器內的偽終端,通常與-i配合使用
# -d:后臺守護式啟動
# –name:為容器命名

圖片

圖片

(docker還有許多深層的知識需要學習,這篇文章只介紹了簡單的應用!



圖片

END

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多