主頁 >  其他 > Docker 基本管理 very nice!

Docker 基本管理 very nice!

2021-07-25 09:29:53 其他

Docker 基本管理

  • 一.Docker 概述
        • 1.Docker的設計宗旨:
        • 2.容器化越來越受歡迎,因為容器是:
        • 3.Docker與虛擬機的區別:
        • 4.容器在內核中支持2種重要技術:
  • 二.Docker核心概念
  • 三.安裝 Docker
  • 四.Docker 鏡像操作
  • 五.Docker 容器操作

一.Docker 概述

? Docker是一個開源的應用容器引擎,基于go語言開發并遵循了apache2.0協議開源

? Docker是在Linux容器里運行應用的開源工具,是一種輕量級的“虛擬機”

? Docker 的容器技術可以在一臺主機上輕松為任何應用創建一個輕量級的、可移植的、自給自足的容器

Docker的Logo設計為藍色鯨魚,拖著許多集裝箱

鯨魚可看作為宿主機,集裝箱可理解為相互隔離的容器,每個集裝箱中都包含自己的應用程式

1.Docker的設計宗旨:

Build,Ship and Run Any App,Anywhere,
即通過對應用組件的封裝、發布、部署、運行等生命周期的管理,達到應用組件級別的“一次封裝,到處運行”的目的,這里的組件,既可以是一個應用,也可以是一套服務,甚至是一個完整的作業系統

2.容器化越來越受歡迎,因為容器是:

●靈活:即使是最復雜的應用也可以集裝箱化,
●輕量級:容器利用并共享主機內核,
●可互換:可以即時部署更新和升級,
●便攜式:可以在本地構建,部署到云,并在任何地方運行,
●可擴展:可以增加并自動分發容器副本,
●可堆疊:可以垂直和即時堆疊服務,

? 容器是在linux上本機運行,并與其他容器共享主機的內核,它運行的是一個獨立的行程,不占用其他任何可執行檔案的記憶體,非常輕量

? 虛擬機運行的是一個完成的作業系統,通過虛擬機管理程式對主機資源進行虛擬訪問,相比之下需要的資源更多

3.Docker與虛擬機的區別:

特性						Docker容器					虛擬機
啟動速度				    秒級						    分鐘級
計算能力損耗 				幾乎無 						損耗 50%左右
性能						接近原生					    弱于
系統支持量(單機)			上千個						幾十個
隔離性			        資源隔離/限制				    完全隔離

4.容器在內核中支持2種重要技術:

docker本質就是宿主機的一個行程,docker是通過namespace實作資源隔離,通過cgroup實作資源限制,通過寫時復制技術(copy-on-write)實作了高效的檔案操作(類似虛擬機的磁盤比如分配500g并不是實際占用物理磁盤500g)

二.Docker核心概念

● 鏡像
Docker的鏡像是創建容器的基礎,類似虛擬機的快照,可以理解為一個面向 Docker 容器引擎的只讀模板

通過鏡像啟動一個容器,一個鏡像是一個可執行的包,其中包括運行應用程式所需要的所有內容包含代碼,運行時間,庫、環境變數、和組態檔
● 容器
Docker的容器是從鏡像創建的運行實體,它可以被啟動、停止和洗掉,所創建的每一個容器都是相互隔離、互不可見,以保證平臺的安全性

可以把容器看做是要給簡易版的linux環境(包括root用戶權限、鏡像空間、用戶空間和網路空間等)和運行在其中的應用程式,

● 倉庫
Docker倉庫是用來集中保存鏡像的地方,當創建了自己的鏡像之后,可以使用push命令將它上傳到公有倉庫(Public)或者私有倉庫(Private),當下次要在另外一臺機器上使用這個鏡像時,只需從倉庫獲取

Docker 的鏡像、容器、日志等內容全部都默認存盤在 /var/lib/docker 目錄下,

三.安裝 Docker

目前 Docker 只能支持 64 位系統,

systemctl stop firewalld.service
setenforce 0

#安裝依賴包
yum install -y yum-utils device-mapper-persistent-data lvm2 
--------------------------------------------------------------------------------------------
yum-utils:提供了 yum-config-manager 工具,
device mapper: 是Linux內核中支持邏輯卷管理的通用設備映射機制,它為實作用于存盤資源管理的塊設備驅動提供了一個高度模塊化的內核架構,
device mapper存盤驅動程式需要 device-mapper-persistent-data 和 lvm2,
--------------------------------------------------------------------------------------------

#設定阿里云鏡像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 

#安裝 Docker-CE并設定為開機自動啟動
yum install -y docker-ce

systemctl start docker.service
systemctl enable docker.service 

#查看 docker 版本資訊
docker version

在這里插入圖片描述
注:使用在線源安裝

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

四.Docker 鏡像操作

#搜索鏡像
格式:docker search 關鍵字
docker search nginx

#獲取鏡像
格式:docker pull 倉庫名稱[:標簽]
#如果下載鏡像時不指定標簽,則默認會下載倉庫中最新版本的鏡像,即選擇標簽為 latest 標簽,
docker pull nginx

#鏡像加速下載
瀏覽器訪問 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 獲取鏡像加速器配置

mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://6ijb8ubo.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker

#查看鏡像資訊
鏡像下載后存放在 /var/lib/docker 

#查看下載的鏡像檔案資訊
cat /var/lib/docker/image/overlay2/repositories.json

#查看下載到本地的所有鏡像
docker images

REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
nginx        latest    ae2feff98a0c   9 days ago   133MB
--------------------------------------------------------------------------------------------
REPOSITORY:鏡像屬于的倉庫;
TAG:鏡像的標簽資訊,標記同一個倉庫中的不同鏡像;
IMAGE ID:鏡像的唯一ID 號,唯一標識一個鏡像;
CREATED:鏡像創建時間;
VIRTUAL SIZE:鏡像大小;
--------------------------------------------------------------------------------------------

#根據鏡像的唯一標識 ID 號,獲取鏡像詳細資訊
格式:docker inspect 鏡像ID號
docker inspect ae2feff98a0c

#為本地的鏡像添加新的標簽
格式:docker tag 名稱:[標簽] 新名稱:[新標簽]
docker tag nginx:latest nginx:web

docker images | grep nginx

#洗掉鏡像
格式:
docker rmi 倉庫名稱:標簽				#當一個鏡像有多個標簽時,只是洗掉其中指定的標簽
或者
docker rmi 鏡像ID號						#會徹底洗掉該鏡像

注意:如果該鏡像已經被容器使用,正確的做法是先洗掉依賴該鏡像的所有容器,再去洗掉鏡像,

docker rmi nginx:web

#存出鏡像:將鏡像保存成為本地檔案
格式:docker save -o 存盤檔案名 存盤的鏡像
docker save -o nginx nginx:latest			#存出鏡像命名為nginx存在當前目錄下
ls -lh

#載入鏡像:將鏡像檔案匯入到鏡像庫中
格式:
docker load < 存出的檔案
或者
docker load -i 存出的檔案

docker load < nginx

#上傳鏡像
默認上傳到 docker Hub 官方公共倉庫,需要注冊使用公共倉庫的賬號,https://hub.docker.com
可以使用 docker login 命令來輸入用戶名、密碼和郵箱來完成注冊和登錄,
在上傳鏡像之前,還需要先對本地鏡像添加新的標簽,然后再使用 docker push 命令進行上傳,

docker tag nginx:latest nginx:web		#添加新的標簽
docker login								#登錄公共倉庫
Username:
password:
docker push wl/nginx:web					#上傳鏡像

在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述
注:此步驟 往往也是排查鏡像問題的良方

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

五.Docker 容器操作

#容器創建:就是將鏡像加載到容器的程序,
新創建的容器默認處于停止狀態,不運行任何程式,需要在其中發起一個行程來啟動容器,

格式:docker create [選項] 鏡像
常用選項:
-i:讓容器的輸入保持打開
-t:讓 Docker 分配一個偽終端

docker create -it nginx:latest /bin/bash

#查看容器的運行狀態
docker ps -a			#-a 選項可以顯示所有的容器
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS    PORTS     NAMES
8b0a7be0ff58   nginx:latest   "/docker-entrypoint.…"   57 seconds ago   Created             inspiring_swanson

容器的ID號	   加載的鏡像     運行的程式               創建時間       當前的狀態  埠映射  名稱


#啟動容器
格式:docker start 容器的ID/名稱
docker start 8b0a7be0ff58
docker ps -a

#創建并啟動容器
可以直接執行 docker run 命令, 等同于先執行 docker create 命令,再執行 docker start 命令,
注意:容器是一個與其中運行的 shell 命令共存亡的終端,命令運行容器運行, 命令結束容器退出,

當利用 docker run 來創建容器時, Docker 在后臺的標準運行程序是:
(1)檢查本地是否存在指定的鏡像,當鏡像不存在時,會從公有倉庫下載;
(2)利用鏡像創建并啟動一個容器;
(3)分配一個檔案系統給容器,在只讀的鏡像層外面掛載一層可讀寫層;
(4)從宿主主機配置的網橋介面中橋接一個虛擬機介面到容器中;
(5)分配一個地址池中的 IP 地址給容器;
(6)執行用戶指定的應用程式,執行完畢后容器被終止運行,

docker run centos:7 /usr/bin/bash -c ls /
docker ps -a					#會發現創建了一個新容器并啟動執行一條 shell 命令,之后就停止了

#在后臺持續運行 docker run 創建的容器
需要在 docker run 命令之后添加 -d 選項讓 Docker 容器以守護形式在后臺運行,并且容器所運行的程式不能結束,

docker run -d centos:7 /usr/bin/bash -c "while true;do echo hello;done"

docker ps -a					#可以看出容器始終處于 UP,運行狀態
CONTAINER ID   IMAGE      COMMAND                  CREATED          STATUS         PORTS     NAMES
2592d3fad0fb   centos:7   "/usr/bin/bash -c 'w…"   2 seconds ago    Up 2 seconds             peaceful_chatelet

docker run -itd --name test1 centos:7 /bin/bash

#終止容器運行
格式:docker stop 容器的ID/名稱
docker stop 2592d3fad0fb

docker ps -a

#容器的進入
需要進入容器進行命令操作時,可以使用 docker exec 命令進入運行著的容器,

格式:docker exec -it 容器ID/名稱 /bin/bash
-i 選項表示讓容器的輸入保持打開;
-t 選項表示讓 Docker 分配一個偽終端,

docker start 2592d3fad0fb					#進入容器前,確保容器正在運行
docker exec -it 2592d3fad0fb /bin/bash
ls
exit				#退出容器后,容器仍在運行
docker ps -a

#容器的匯出與匯入
用戶可以將任何一個 Docker 容器從一臺機器遷移到另一臺機器,在遷移程序中,可以使用docker export 命令將已經創建好的容器匯出為檔案,無論這個容器是處于運行狀態還是停止狀態均可匯出,可將匯出檔案傳輸到其他機器,通過相應的匯入命令實作容器的遷移,

#匯出格式:docker export 容器ID/名稱 > 檔案名
docker export 2592d3fad0fb > centos7tar

#匯入格式:cat 檔案名 | docker import – 鏡像名稱:標簽
cat centos7tar | docker import - centos7:test			#匯入后會生成鏡像,但不會創建容器

#洗掉容器
格式:docker rm [-f] 容器ID/名稱
docker stop 2592d3fad0fb
docker rm 2592d3fad0fb				#洗掉已經終止狀態的容器

docker rm -f 2592d3fad0fb			#強制洗掉正在運行的容器

docker ps -a | awk 'NR>=2{print "docker stop "$1}' | bash			#批量停止容器

docker ps -a | awk 'NR>=2{print "docker rm "$1}' | bash				#批量洗掉所有容器

docker images | awk 'NR>=2{print "docker rmi "$3}' | bash			#批量洗掉鏡像

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

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

標籤:其他

上一篇:服務器搭建tomcat,通過url訪問視頻

下一篇:Docker網路(不同容器的互通)

標籤雲
其他(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)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more