吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一文帶你讀懂Docker容器 1

jf_78858299 ? 來源:碳峰博客 ? 作者: Tanyongfeng ? 2023-02-03 15:33 ? 次閱讀

Docker 是一個開源軟件,用于開發應用、交付應用、運行應用。 Docker允許用戶將基礎設施中的應用單獨分割出來,形成更小的顆粒(容器),從而提高交付軟件的速度。

一、Docker初識

1.什么是Docker

  • Docker 是一個開源的應用容器引擎,基于Go 語言實現并遵從 Apache2.0 協議開源。
  • Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然后發布到任何流行的 Linux 機器上,也可以實現虛擬化。
  • 容器是完全使用沙箱機制,相互之間不會有任何接口(類似 iPhone 的 app),更重要的是容器性能開銷極低。

2.Docker vs VM

圖片

docker與vm比較

  • 傳統的虛擬機模擬出一套硬件來運行操作系統,也就是在硬件層面實現虛擬化,通常啟動速度比較忙,資源消耗比較大。
  • Docker容器化技術則是在操作系統層面實現虛擬化,直接復用本地主機的操作系統,而傳統虛擬機則是在硬件實現虛擬化。

3.Docker組成

Docker基本組成主要包括以下三部分內容:

  • 鏡像(image) —> 類模板
  • 容器(container)—> 對象
  • 倉庫(repository)—> 鏡像倉庫

Docker image:鏡像是只讀的,鏡像中包含有需要運行的文件。鏡像用來創建container,一個鏡像可以運行多個container;鏡像可以通過commit命令、Dockerfile等方式創建,也可以從Docker hub/registry上下載。

Docker container:容器是可寫的,也是Docker的運行組件,啟動一個鏡像就是一個容器,容器是一個隔離環境,多個容器之間不會相互影響,保證容器中的程序運行在一個相對安全的環境中。

Docker repository: 存儲鏡像的倉庫,用戶通過它來共享和管理Docker鏡像,用戶可以上傳或者下載上面的鏡像,官方地址為https://registry.hub.docker.com/,也可以搭建自己私有的Docker registry。

4.Docker優點

應用架構上 ,就比如那一個訂購系統來舉例子,本來是一個基本的靜態網頁用來電話訂購,現在需要網絡訂購了,那么我們就需要引入DB,再然后為了提升性能,引入了類似Redis、Memcached、MQ緩存等中間件,到項目后期,發現單機不能滿足性能要求了,然后引入了Nginx作為反向代理,總之,隨著系統功能的日趨復雜,那么應用依賴就會逐漸復雜,不同組件的配置方法各不相同,運維人員進行應用配置可能會耗費大量時間。

應用部署上 ,Dockerfile的存在使得開發人員僅僅需要修改其配置文件就可以輕松構建具有不同依賴的鏡像。同時保障了從開發、構建、測試、生成的一整套流程。

集群角度上 ,隨著流量的逐漸增大,這個時候就要引入集群了,服務器由原來的一臺變成兩臺,那么相同的配置在另一臺主機進行相同的配置時間開銷比較大,因此可以通過鏡像來一鍵打包部署即可。

關于Docker優點,總結如下:

  • 快速的應用部署和維護
  • 更便捷的升級和擴縮容
  • 更簡單的系統運維
  • 更高效的計算資源利用
  • 支持多種操作系統,Windows、Mac和Debian等

5.Docker架構

關于官方文檔中解釋:Docker Architecture

Docker引擎 (Docker Engine)是一個服務端-客戶端結構的應用,主要有這些部分:Docker守護進程、Docker Engine API、Docker客戶端。

  • Docker守護進程 (Docker daemons),也叫 dockerd ,是一個持久化的進程,用戶管理容器。守護進程會監聽Docker Engine API 的請求。
  • Docker Engine API是用于與Docker守護進程交互用的的API。它是一個RESTful API,因此它不僅可以被Docker客戶端調用,也可以被wgetcurl等命令調用。
  • Docker客戶端 ,也叫docker,是大部分用戶與Docker交互的主要方式。用戶通過客戶端將命令發送給守護進程。命令會遵循Docker Engine API

6.Docker生態

Docker生態中還有一個非常重要的容器管理工具–Kubernetes,它是Google開源的用于在集群環境中管理、維護、自動擴展容器,通過Kubernetes可以很方便地在多個機器上管理和部署容器服務。現在已經得到IBM、Microsoft、RedHat等多個大公司的支持。

Docker現在出現了一個特殊的模式——swarm模式——可以用來管理容器集群。Docker Swarm允許使用Docker CLI運行swarm命令,因而很容易初始化一組容器,并向組中添加或刪除容器。除了Docker Swarm,還有幾個其他的容器協調管理器:

  • Kubernetes,一個容器集群管理器。可以在你自己的服務器上或是在云上運行。
  • DC/OS,一個特別的項目,提供了高級用戶界面管理Docker容器。
  • Nomad Project,一個部署和管理應用的軟件,運行在Amazon ECS,DigitalOcean,Azure Container Service或Google云平臺。

二、Docker安裝

1. 命令行安裝

這里測試環境是 Centos Linux 8版本,安裝使用 yum命令安裝。

yum -y install docker-ce docker-ce-cli #下載Docker
docker version #查看docker版本號
docker images #存在的鏡像

圖片

圖片

image-20220614152303600

  • TAG:版本號(默認最新)
  • REPOSITORY: 鏡像名字
  • IMAGET ID : 鏡像全局唯一ID
  • CREATED: 鏡像創建時間
  • SIZE:鏡像大小

2. 設置加速倉庫

注冊阿里云開發者賬戶,進入倉庫鏡像模塊,獲取倉庫加速域名。

倉庫(Repository)、注冊服務器(Registry)、注冊索引(Index)有何關系?

首先,倉庫是存放一組關聯鏡像的集合,比如同一個應用的不同版本的鏡像,注冊服務器是存放實際的鏡像的地方,注冊索引則負責維護用戶的賬號,權限,搜索,標簽等管理。注冊服務器利用注冊索引來實現認證等管理。

3. 配置普通用戶管理Docker

由于需要使用普通用戶對Docker進行管理,因此需要給普通用戶配置Docker權限,根據 官方文檔來進行配置。具體命令行如下:

sudo groupadd docker #加入Docker用戶組
 sudo usermod -aG docker $USER #將用戶添加到用戶組
  newgrp docker  #刷新權限
  id $USER #查看用戶情況
  docker run hello-world #運行hello world測試

圖片

image-20220615190215061

圖片

三、Docker基本使用

  • 獲取鏡像 docker pull REPOSITORY:TAG
  • 運行鏡像 docker run IMAGE_ID
  • 刪除鏡像 docker rmi IMAGE_ID
  • 暫停容器 docker stop CONTAINER_ID
docker run -i 鏡像ID #交互模式啟動容器


## 常用參數
 -i, --interactive                    Keep STDIN open even if not attached
      --ip string                      IPv4 address (e.g., 172.30.100.104)
      --ip6 string                     IPv6 address (e.g., 2001:db8::33)
      --ipc string                     IPC mode to use
      --isolation string               Container isolation technology
      --kernel-memory bytes            Kernel memory limit
-p : 宿主機端口Docker運行端口
-P : 隨機宿主機端口
-t : 命令終端

圖片

image-20220614154748840

Docker虛懸鏡像:倉庫名、標簽都為的鏡像。建議刪除

前臺啟動和后臺啟動

docker run -d #守護式啟動
docker run -i  #前臺式啟動


#重新進入命令交互界面
docker exec -it 容器ID bashshell
docker attach 容器ID

區別:

  • accatch 不會重新創建一個新的進程,使用exec會導致終端停止
  • exec 會重新創建一個新的進程,不會導致終端停止,此種方法也是工作常用的

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 開源軟件
    +關注

    關注

    0

    文章

    210

    瀏覽量

    15966
  • 編程
    +關注

    關注

    88

    文章

    3637

    瀏覽量

    93981
  • Docker
    +關注

    關注

    0

    文章

    492

    瀏覽量

    11962
收藏 人收藏

    評論

    相關推薦

    帶你搞懂Docker容器的核心基石Cgroups

    可以限制、記錄任務組所使用的物理組員(比如 CPU、Memory、IO等),為容器實現虛擬化提供了基本保證,是構建 Docker些列虛擬化管理工具的基石。今天我們就來詳細介紹
    發表于 11-24 09:54 ?623次閱讀

    帶你入門Docker容器

    docker不是個值得投入的領域,它解決的問題是Unix系統最初設計的個疏忽。從個不會用docker的小白,自己
    發表于 06-05 14:44 ?565次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>帶你</b>入門<b class='flag-5'>Docker</b><b class='flag-5'>容器</b>

    如何使用 Docker容器化技術

    對于開發人員來說,Docker肯定都不陌生,今天小編帶大家重新學習Docker。 什么是 Docker 官話: Docker
    的頭像 發表于 09-30 11:24 ?1.6w次閱讀

    ARM平臺實現Docker容器技術

    本帖最后由 Tronlong創龍科技 于 2024-7-19 16:50 編輯 什么是Docker? (1Docker的架構Docker
    發表于 07-17 11:05

    ARM平臺實現Docker容器技術

    本帖最后由 Tronlong創龍科技 于 2024-7-26 08:51 編輯 什么是Docker? (1Docker的架構Docker
    發表于 07-25 14:36

    如何在Docker中創建容器

    Docker個開源的引擎,可以輕松的為任何應用創建個輕量級的、可移植的、自給自足的容器。開發者在筆記本上編譯測試通過的容器可以批量地在
    發表于 01-03 15:58

    理解Docker容器并暢玩docker

    ,完全不影響其他容器的正常運作)。這樣描述,還是不大明白,我們可以實際操作下。先打開兩個命令行,在其中個命令行執行以下命令:docker run -it --name a
    發表于 11-05 09:54

    讀懂什么是NEC協議

    讀懂什么是NEC協議?
    發表于 10-15 09:22

    Docker容器管理命令()

    1Docker容器管理命令的使用方法查看當前主機本地docker鏡像:啟動容器必須依賴鏡像,所以要獲取到鏡像的唯
    發表于 04-20 17:55

    Docker容器管理命令(二)

    1Docker容器管理命令的使用方法批量刪除docker 容器docker cp命令
    發表于 04-21 11:31

    帶你讀懂Docker容器 2

    Docker** 是個開源軟件,用于開發應用、交付應用、運行應用。 Docker允許用戶將基礎設施中的應用單獨分割出來,形成更小的顆粒(容器),從而提高交付軟件的速度。
    的頭像 發表于 02-03 15:33 ?721次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>帶你</b><b class='flag-5'>讀懂</b><b class='flag-5'>Docker</b><b class='flag-5'>容器</b> 2

    帶你讀懂Docker容器 3

    Docker** 是個開源軟件,用于開發應用、交付應用、運行應用。 Docker允許用戶將基礎設施中的應用單獨分割出來,形成更小的顆粒(容器),從而提高交付軟件的速度。
    的頭像 發表于 02-03 15:34 ?638次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>帶你</b><b class='flag-5'>讀懂</b><b class='flag-5'>Docker</b><b class='flag-5'>容器</b> 3

    讀懂,什么是BLE?

    讀懂,什么是BLE?
    的頭像 發表于 11-27 17:11 ?2508次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>讀懂</b>,什么是BLE?

    docker容器容器之間通信

    Docker種輕量級容器化技術,能夠將應用程序及其依賴項封裝在個獨立、可移植的容器中。而容器
    的頭像 發表于 11-23 09:36 ?1620次閱讀

    docker進入容器的方法有哪些

    Docker種流行的容器化平臺,它能夠快速構建、交付和運行應用程序。在使用Docker時,我們經常需要進入容器進行調試、管理和運行命令等
    的頭像 發表于 11-23 09:45 ?1.1w次閱讀
    天博百家乐官网的玩法技巧和规则| 威尼斯人娱乐城网站| 布加迪百家乐官网的玩法技巧和规则| 百家乐官网网娱乐城| 腾飞国际娱乐城| 全讯网a3322| 百家乐赌场群| 百家乐视频官网| 百家乐官网详解| 买车| 88娱乐城天上人间| 新全讯网carrui| 威尼斯人娱乐平台官网| 百家乐买对子技巧| 百家乐大转轮真人视讯| 百家乐讯特| 网站百家乐假| 百家乐新注册送彩金| 百家乐浴盆博彩通排名| 百利宫百家乐现金网| 澳门百家乐必杀技| 澳门百家乐玩法心得技巧| 百家乐开户最快的平台是哪家 | 百家乐官网怎样概率大| 圣淘沙百家乐官网现金网| 百家乐官网最低压多少| 百家乐官网庄闲局部失衡| 百家乐官网游戏网站| 百家乐官网真人娱乐平台| 找真人百家乐官网的玩法技巧和规则 | 百家乐官网博彩策略论坛| 百家乐官网翻天快播粤语| 作弊百家乐官网赌具| 休闲百家乐官网的玩法技巧和规则 | 百家乐官网庄牌闲牌| 大赢家百家乐官网娱乐| 八卦罗盘24山图| 百家乐网上真钱娱乐网| 百家乐官网用品| 百家乐最好的平台是哪个| 百家乐常用公式|