欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

云原生之docker命令詳解

 更新時(shí)間:2023年06月05日 09:34:59   作者:山河亦問(wèn)安  
Docker是一個(gè)開(kāi)源的應(yīng)用容器引擎,基于Go語(yǔ)言并遵從Apache2.0協(xié)議開(kāi)源,Docker 可以讓開(kāi)發(fā)者打包他們的應(yīng)用以及依賴包到一個(gè)輕量級(jí)、可移植的容器中,然后發(fā)布到任何流行的 Linux 機(jī)器上,也可以實(shí)現(xiàn)虛擬化,本文就給大家介紹了云原生中的docker命令

1.云原生概念

1.1 云原生定義

云原生”顧名思義,就是“生在云上、長(zhǎng)在云上”。
云原生是一種以云計(jì)算技術(shù)為基礎(chǔ),利用容器、微服務(wù)、DevOps 和自動(dòng)化等技術(shù)實(shí)現(xiàn)敏捷開(kāi)發(fā)、快速部署的應(yīng)用程序架構(gòu),這就是云原生。

云原生是面向“云”而設(shè)計(jì)的應(yīng)用,因此技術(shù)部分依賴于傳統(tǒng)云計(jì)算的 3 層概念,基礎(chǔ)設(shè)施即服務(wù)(IaaS)、平臺(tái)即服務(wù)(PaaS)和軟件即服務(wù)(SaaS)。

1.2 云原生元素

云原生元素如下圖:

1.2.1 微服務(wù)

微服務(wù)解決的是我們軟件開(kāi)發(fā)中一直追求的低耦合+高內(nèi)聚,記得有一次我們系統(tǒng)的接口出了問(wèn)題,結(jié)果影響了用戶的前臺(tái)操作,于是黎叔拍案而起,靈魂發(fā)問(wèn):“為啥這兩個(gè)會(huì)互相影響?!”

微服務(wù)可以解決這個(gè)問(wèn)題,微服務(wù)的本質(zhì)是把一塊大餅分成若干塊低耦合的小餅,比如一塊小餅專門負(fù)責(zé)接收外部的數(shù)據(jù),一塊小餅專門負(fù)責(zé)響應(yīng)前臺(tái)的操作,小餅可以進(jìn)一步拆分,比如負(fù)責(zé)接收外部數(shù)據(jù)的小餅可以繼續(xù)分成多塊負(fù)責(zé)接收不同類型數(shù)據(jù)的小餅,這樣每個(gè)小餅出問(wèn)題了,其它小餅還能正常對(duì)外提供服務(wù)。

1.2.2 DevOps

DevOps 的意思就是開(kāi)發(fā)和運(yùn)維不再是分開(kāi)的兩個(gè)團(tuán)隊(duì),而是你中有我,我中有你的一個(gè)團(tuán)隊(duì)。我們現(xiàn)在開(kāi)發(fā)和運(yùn)維已經(jīng)是一個(gè)團(tuán)隊(duì)了,但是運(yùn)維方面的知識(shí)和經(jīng)驗(yàn)還需要持續(xù)提高。

1.2.3 持續(xù)交付

持續(xù)交付的意思就是在不影響用戶使用服務(wù)的前提下頻繁把新功能發(fā)布給用戶使用,要做到這點(diǎn)非常非常難。我們現(xiàn)在兩周一個(gè)版本,每次上線之后都會(huì)給不同的用戶造成不同程度的影響。

1.2.4 容器化

容器化的好處在于運(yùn)維的時(shí)候不需要再關(guān)心每個(gè)服務(wù)所使用的技術(shù)棧了,每個(gè)服務(wù)都被無(wú)差別地封裝在容器里,可以被無(wú)差別地管理和維護(hù),現(xiàn)在比較流行的工具是 docker 和 k8s

所以你也可以簡(jiǎn)單地把云原生理解為:云原生 = 微服務(wù) + DevOps + 持續(xù)交付 + 容器化

2. Docker

2.1 Docker概述

2.1.1 Docker 定義

Docker 是一個(gè)開(kāi)源的應(yīng)用容器引擎,基于Go 語(yǔ)言并遵從 Apache2.0 協(xié)議開(kāi)源。 Docker 可以讓開(kāi)發(fā)者打包他們的應(yīng)用以及依賴包到一個(gè)輕量級(jí)、可移植的容器中,然后發(fā)布到任何流行的 Linux 機(jī)器上,也可以實(shí)現(xiàn)虛擬化。容器是完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口,更重要的是容器性能開(kāi)銷極低。

2.1.2 Docker應(yīng)用場(chǎng)景

  • Web 應(yīng)用的自動(dòng)化打包和發(fā)布。

  • 自動(dòng)化測(cè)試和持續(xù)集成、發(fā)布。

  • 在服務(wù)型環(huán)境中部署和調(diào)整數(shù)據(jù)庫(kù)或其他的后臺(tái)應(yīng)用。

  • 解決軟件跨境遷移的問(wèn)題

2.1.3 Docker的架構(gòu)

鏡像(image)

Docker鏡像(Image)就是一個(gè)只讀的模板。鏡像可以用來(lái)創(chuàng)建Docker容器,一個(gè)鏡像可以創(chuàng)建很多容器。

容器(container)

Docker利用容器(Container)獨(dú)立運(yùn)行一個(gè)或一組應(yīng)用。容器是使用鏡像創(chuàng)建的運(yùn)行實(shí)例。它可以被啟動(dòng)、開(kāi)始、停止、刪除。每個(gè)容器都是相互隔離的、保證安全的平臺(tái),容器是一個(gè)簡(jiǎn)易版的Linux環(huán)境和運(yùn)行在其中的應(yīng)用程序。

倉(cāng)庫(kù)(Repository)

倉(cāng)庫(kù)(Repository)是集中存放鏡像文件的場(chǎng)所。倉(cāng)庫(kù)(Repository)和倉(cāng)庫(kù)注冊(cè)服務(wù)器(Registry)是有區(qū)別的。倉(cāng)庫(kù)注冊(cè)服務(wù)器上往往存放著多個(gè)倉(cāng)庫(kù),每個(gè)倉(cāng)庫(kù)中又包含了多個(gè)鏡像,每個(gè)鏡像有不同的標(biāo)簽(tag)。倉(cāng)庫(kù)分為公開(kāi)倉(cāng)庫(kù)(Public)和私有倉(cāng)庫(kù)(Private)兩種形式。最大的公開(kāi)倉(cāng)庫(kù)是Docker Hub(https://hub.docker.com/),存放了數(shù)量龐大的鏡像供用戶下載。國(guó)內(nèi)的公開(kāi)倉(cāng)庫(kù)包括阿里云、網(wǎng)易云等。

2.2 Docker命令

2.2.1 docker進(jìn)程相關(guān)命令

#啟動(dòng)docker
systemctl start docker
#停止docker
systemctl stop docker
#查看docker狀態(tài)
systemctl status docker
#重啟docker
systemctl restart docker
#設(shè)置開(kāi)機(jī)啟動(dòng)
systemctl enable docker

2.2.2 docker鏡像相關(guān)命令

#查看鏡像,查看本地所有的鏡像
docker images
docker images 
    -q #查詢所有鏡像的ID
    -a #列出所有的鏡像
    --help #命令幫助
#查詢?nèi)缦?
#鏡像的倉(cāng)庫(kù)源, 鏡像的標(biāo)簽,鏡像的id,     鏡像的創(chuàng)建時(shí)間,   鏡像的大小
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
hello-world   latest    feb5d9fea6a5   14 months ago   13.3kB
#搜索鏡像:從網(wǎng)絡(luò)中查詢需要的鏡像
docker search 鏡像的名稱
#拉取鏡像:從Docker倉(cāng)庫(kù)下載鏡像到本地,鏡像名稱格式為 名稱:版本號(hào), 如果不指定,則是最新版,如果不知道鏡像的版本號(hào),可以去hub.docker.com去查詢
docker pull 鏡像名稱
#刪除指定鏡像
docker rmi 鏡像id 

2.2.3 docker容器相關(guān)命令

docker run 參數(shù) 鏡像名稱:版本號(hào)

參數(shù)說(shuō)明:
    * -i:保持容器運(yùn)行,通常與-t同時(shí)使用,加上 it 這兩個(gè)參數(shù)后,容器創(chuàng)建后自動(dòng)進(jìn)入容器中,退出容器后,容器自動(dòng)關(guān)閉,
    * -d:以守護(hù)(后臺(tái))模式運(yùn)行容器,創(chuàng)建一個(gè)容器在后臺(tái)運(yùn)行,需要使用docker exec 進(jìn)入容器,退出后,容器不會(huì)關(guān)閉。
    * --name: 為創(chuàng)建的容器命名
    * -p 宿主機(jī)端口:容器端口

#查看正在運(yùn)行容器
docker ps
#查看所有容器
docker ps -a
#創(chuàng)建并啟動(dòng)容器
docker run -d --name nginx1 -p 4200:80 nginx
#進(jìn)入容器
docker exec -it ngnix1 /bin/bash
#停止容器
docker stop 容器名稱或者容器id
#啟動(dòng)容器
docker start 容器名稱或者容器id
#刪除容器:如果是運(yùn)行狀態(tài)則刪除失敗,需要停止容器才能刪除
docker rm 容器名稱或者容器id
#查看容器信息
docker inspect 同期名稱或者容器id

2.2.4 日志進(jìn)程

#查看最近日志
docker logs -f 容器名/容器ID
#最近30分鐘的日志
docker logs
#查看某時(shí)間之后的日志
docker logs -t  --since="2022-08-08T18:08:08" 容器ID
#查看某時(shí)間段日志
docker logs  -t  --since="2022-08-08T18:08:08" --until "2022-08-08T20:08:08" 容器ID
 

2.2.5 數(shù)據(jù)卷容器

卷就是目錄或文件,存在于一個(gè)或多個(gè)容器中,由docker掛載到容器,但不屬于聯(lián)合文件系統(tǒng),因此能夠繞過(guò)Union File System提供一些用于持續(xù)存儲(chǔ)或共享數(shù)據(jù)的特性,卷的設(shè)計(jì)目的就是數(shù)據(jù)的持久化,完全獨(dú)立于容器的生存周期,因此Docker不會(huì)在容器刪除時(shí)刪除其掛載的數(shù)據(jù)卷。數(shù)據(jù)卷可在容器之間共享或重用數(shù)據(jù)并且卷中的更改可以直接實(shí)時(shí)生效,數(shù)據(jù)卷的生命周期一直持續(xù)到?jīng)]有容器使用它為止。

配置數(shù)據(jù)卷

docker run  ... -v 宿主機(jī)目錄(文件):容器內(nèi)目錄(文件)...

注意事項(xiàng)

  • 目錄必須是絕對(duì)路徑
  • 如果目錄不存在,會(huì)自動(dòng)創(chuàng)建
  • 可以掛在多個(gè)數(shù)據(jù)卷
#mysql 同步數(shù)據(jù)
docker run -d -p 3310:3306 -v /www/server/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql1 mysql:5.5

2.2.6 dockerfile構(gòu)建docker鏡像文件

  • Dockerfile 是一個(gè)文本文件
  • 包含了一條條的指令
  • 每一條指令構(gòu)建一層,基于基礎(chǔ)鏡像,最終構(gòu)建出一個(gè)新的鏡像
  • 對(duì)于開(kāi)發(fā)人員:可以為開(kāi)發(fā)團(tuán)隊(duì)提供一個(gè)完全一直的開(kāi)發(fā)環(huán)境
  • 對(duì)于測(cè)試人員:可以直接那開(kāi)發(fā)時(shí)所構(gòu)建的鏡像或者通過(guò)Dockerfile文件構(gòu)建一個(gè)新的鏡像開(kāi)始工作
  • 對(duì)于運(yùn)維人員:在部署時(shí),可以實(shí)現(xiàn)應(yīng)用的無(wú)縫移植

構(gòu)建自己的centos鏡像如下圖

執(zhí)行dockerfile生成鏡像

docker build -f dockerfile文件的路徑 -t 設(shè)置新的鏡像的名稱和版本號(hào) .  # 注意最后的點(diǎn),代表生成的鏡像路徑

 -f 表示dockerfile路徑
  -t 設(shè)備新鏡像的名稱和版本號(hào)
最后的. 表示生成鏡像的路徑,為當(dāng)前路徑

2.2.7 Docker Compose

我們使用 Docker 的時(shí)候,定義 Dockerfile 文件,然后使用 docker build、docker run 等命令操作容器。然而微服務(wù)架構(gòu)的應(yīng)用系統(tǒng)一般包含若干個(gè)微服務(wù),每個(gè)微服務(wù)一般都會(huì)部署多個(gè)實(shí)例,如果每個(gè)微服務(wù)都要手動(dòng)啟停,那么效率之低,維護(hù)量之大可想而知。

Compose 是用于定義和運(yùn)行多容器 Docker 應(yīng)用程序的工具。通過(guò) Compose,您可以使用 YML 文件來(lái)配置應(yīng)用程序需要的所有服務(wù)。然后,使用一個(gè)命令,就可以從 YML 文件配置中創(chuàng)建并啟動(dòng)所有服務(wù)。

Compose 使用的三個(gè)步驟:

  • 使用 Dockerfile 定義應(yīng)用程序的環(huán)境。
  • 使用 docker-compose.yml 定義構(gòu)成應(yīng)用程序的服務(wù),這樣它們可以在隔離環(huán)境中一起運(yùn)行。
  • 最后,執(zhí)行 docker-compose up 命令來(lái)啟動(dòng)并運(yùn)行整個(gè)應(yīng)用程序。

以上就是云原生之docker命令詳解的詳細(xì)內(nèi)容,更多關(guān)于云原生 docker命令的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • docker的卷映射手動(dòng)指定位置的操作方法

    docker的卷映射手動(dòng)指定位置的操作方法

    Docker中手動(dòng)指定卷映射位置通過(guò)綁定掛載實(shí)現(xiàn),使用-v或--mount參數(shù),語(yǔ)法清晰,支持更多選項(xiàng),注意宿主機(jī)目錄存在性、權(quán)限和SELinux限制,本文介紹docker的卷映射手動(dòng)指定位置的操作方法,感興趣的朋友一起看看吧
    2025-02-02
  • Docker鏡像重命名的實(shí)現(xiàn)方法

    Docker鏡像重命名的實(shí)現(xiàn)方法

    本文主要介紹了Docker鏡像重命名的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • Docker之開(kāi)啟遠(yuǎn)程訪問(wèn)的實(shí)現(xiàn)

    Docker之開(kāi)啟遠(yuǎn)程訪問(wèn)的實(shí)現(xiàn)

    這篇文章主要介紹了Docker之開(kāi)啟遠(yuǎn)程訪問(wèn)的實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • Docker啟動(dòng)容器報(bào)錯(cuò):Ports are not available的解決方案

    Docker啟動(dòng)容器報(bào)錯(cuò):Ports are not available的解決方案

    這篇文章主要介紹了Docker啟動(dòng)容器報(bào)錯(cuò):Ports are not available的解決方案,Docker 將容器程序的端口號(hào)映射到宿主機(jī)的端口號(hào),是一個(gè) NAT 過(guò)程,這個(gè)過(guò)程可能會(huì)因?yàn)榕c Windows NAT 服務(wù)沖突而失效,文中有詳細(xì)的解決方案,需要的朋友可以參考下
    2024-03-03
  • docker中mysql開(kāi)啟日志的實(shí)現(xiàn)步驟

    docker中mysql開(kāi)啟日志的實(shí)現(xiàn)步驟

    本文主要介紹了docker中mysql開(kāi)啟日志的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • kali下對(duì)Docker的詳細(xì)安裝教程

    kali下對(duì)Docker的詳細(xì)安裝教程

    這篇文章主要介紹了kali下對(duì)Docker的詳細(xì)安裝,Docker是滲透測(cè)試中必學(xué)不可的一個(gè)容器工具,在其中,我們能夠快速創(chuàng)建、運(yùn)行、測(cè)試以及部署應(yīng)用程序,對(duì)kali安裝docker相關(guān)知識(shí)感興趣的朋友一起看看吧
    2022-05-05
  • 詳解如何將java項(xiàng)目打包成docker鏡像并且可運(yùn)行

    詳解如何將java項(xiàng)目打包成docker鏡像并且可運(yùn)行

    java?項(xiàng)目打包成?Docker?可運(yùn)行的鏡像,其目的是便于運(yùn)用docker容器來(lái)管理項(xiàng)目,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2024-11-11
  • docker部署Prometheus+Cadvisor+Grafana實(shí)現(xiàn)服務(wù)器監(jiān)控

    docker部署Prometheus+Cadvisor+Grafana實(shí)現(xiàn)服務(wù)器監(jiān)控

    這篇文章主要為大家介紹了docker部署Prometheus+Cadvisor+Grafana實(shí)現(xiàn)服務(wù)器監(jiān)控,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • 清理Docker磁盤空間的幾種有效方法

    清理Docker磁盤空間的幾種有效方法

    隨著Docker的廣泛使用,管理Docker占用的磁盤空間變得越來(lái)越重要,長(zhǎng)時(shí)間運(yùn)行Docker環(huán)境,未使用的容器、鏡像、卷和網(wǎng)絡(luò)等會(huì)逐漸積累,占用大量磁盤空間,本文將介紹幾種清理Docker磁盤空間的有效方法,需要的朋友可以參考下
    2024-08-08
  • 讓非root用戶構(gòu)建Docker鏡像的三種方法

    讓非root用戶構(gòu)建Docker鏡像的三種方法

    在默認(rèn)情況下,Docker?需要?root?權(quán)限或?sudo?才能運(yùn)行,這對(duì)于日常開(kāi)發(fā)和?CI/CD?流水線可能不夠方便,那么,如何讓?非?root?用戶?也能構(gòu)建和運(yùn)行?Docker?容器呢?本篇文章將介紹?三種方法?來(lái)實(shí)現(xiàn)這一目標(biāo),需要的朋友可以參考下
    2025-04-04

最新評(píng)論