Docker入門

1. Docker簡介:

docker是一個基于LXC的高級容器引擎。簡單地說,docker是一個輕量級的虛擬解決方案,或者說它是一個超輕量級的虛擬機(容器)。

Docker是一個開源的引擎,可以輕松的為任何應用創建一個輕量級的、可移植的、自給自足的容器。
Docker 的理念為“Build, Ship and Run Any App, Anywhere”

  • 基本概念

    • Docker Client:Docker提供給用戶的客戶端。
    • Docker Daemon:Docker服務的守護進程。
    • Docker Images:Docker的鏡像,一張 “只讀” 的系統CD。
    • Docker Container:Docker的容器,Docker Images運行實例。
    • Docker Registry : Docker Images的倉庫,Dock Hub https://www.dockerhub.com。
  • 架構

clipboard.png

  • AUFS聯合文件系統

AUFS 是一種 Union File System(聯合文件系統),又叫 Another UnionFS,后來叫Alternative UnionFS,再后來叫成高大上的 Advance UnionFS。所謂 UnionFS,就是把不同物理位置的目錄合并mount到同一個目錄中。UnionFS的一個最主要的應用是,把一張CD/DVD和一個硬盤目錄給聯合 mount在一起,然后,你就可以對這個只讀的CD/DVD上的文件進行修改(當然,修改的文件存于硬盤上的目錄里)

clipboard.png

  • LXC

LXC 就是 Linux Container。 LXC 也是一種輕量的虛擬技術,Linux 原生支持的容器。可以說 docker 就是基于 LXC 發展起來的,提供 LXC 的高級封裝,發展標準的配置方法。

LXC可以在操作系統層次上為進程提供的虛擬的執行環境,一個虛擬的執行環境就是一個容器。可以為容器綁定特定的cpu和memory節點,分配特定比例的cpu時間、IO時間,限制可以使用的內存大小(包括內存和是swap空間),提供device訪問控制,提供獨立的namespace(網絡、pid、ipc、mnt、uts),主要使用了cgroup技術。

CGroup是Control Groups的縮寫,是Linux內核提供的一種可以限制、記錄、隔離進程組所使用的硬件資源的機制。

  • 與虛擬機對比

clipboard.png

2. Docker安裝

brew cask install docker
或到官網下載
https://store.docker.com/editions/community/docker-ce-desktop-mac

3. Docker使用

  • 基本命令

    • 查詢docker版本: docker version
    • 查看docker環境信息:docker info
    • 列出所有鏡像:docker images
    • 列出運行狀態的容器實例:docker ps
    • 從遠程摘取docker鏡像:docker pull [鏡像名:版本號/tag]
    • 提交docker修改內容:docker commit [containerId] tag
    • 交互模式啟動容器:docker run -it -p 8080:8080 -v /usr/local:/var/jenkins_home --name jenkins jenkins:latest
    • 后臺模式啟動容器:docker run -d -p 8080:8080 -v /usr/local:/var/jenkins_home --name jenkins jenkins:latest
    • 查看容器日志:docker logs [containerId]
    • 連接到docker容器終端上:docker attach [containerId]
    • 查看容器或鏡像詳細信息:docker inspect [containerId/imageId]
    • 在容器上執行命令:docker exec [containerId] COMMAND [ARG...]

4. Dockerfile

Dockerfile是由一系列命令和參數構成的腳本,這些命令應用于基礎鏡像并最終創建一個新的鏡像。它們簡化了從頭到尾的流程并極大的簡化了部署工作。Dockerfile從FROM命令開始,緊接著跟隨者各種方法,命令和參數。其產出為一個新的可以用于創建容器的鏡像

clipboard.png

5. 容器編排

DockerCompse

Compose是用于定義和運行復雜Docker應用的工具。你可以在一個文件中定義一個多容器的應用,然后使用一條命令來啟動你的應用,然后所有相關的操作都會被自動完成。

clipboard.png

DockerSwarm

Swarm是Docker官方提供的一款集群管理工具,其主要作用是把若干臺Docker主機抽象為一個整體,并且通過一個入口統一管理這些Docker主機上的各種Docker資源。Swarm和Kubernetes比較類似,但是更加輕,具有的功能也較kubernetes更少一些。

Kubernetes

Kubernetes(通常寫成“k8s”)是最開始由google設計開發最后貢獻給Cloud Native Computing Foundation的開源容器集群管理項目。它的設計目標是在主機集群之間提供一個能夠自動化部署、可拓展、應用容器可運營的平臺。Kubernetes通常結合docker容器工具工作,并且整合多個運行著docker容器的主機集群。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/253896.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253896.shtml
英文地址,請注明出處:http://en.pswp.cn/news/253896.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

樂器庫的混合

每臺微機一個聲卡,也就是一片D/A,驅動按波特率、采樣位數、采樣通道傳輸給D/A,輸出模擬音頻。播放時僅一種與硬件支持格式對應,其他需驅動(有損)變換到硬件支持格式。每個應用都可單獨播放聲音,…

kafka認知--(1)

文檔參考:http://kafka.apache.org/documentation.html 下載代碼: tar -xzf kafka_2.11-0.11.0.0.tgz cd kafka_2.11-0.11.0.0 啟動 bin/zookeeper-server-start.sh config/zookeeper.properties 創建topic(主題為test,只有一個分…

帶頭尾指針的list的C實現

一、緣起 很早寫了一個帶頭尾指針的list,該list支持從尾部插入元素,在任意位置刪除元素,最近用這個list時發現一個bug,修正了,并加了幾個接口函數。貼出來,希望對C的初學者有用。 二、基本說明 2.1、數據結…

Gmapping——從原理到實踐

概述 在SLAM中,機器人位姿和地圖都是狀態變量,我們需要同時對這兩個狀態變量進行估計,即機器人獲得一張環境地圖的同時確定自己相對于該地圖的位置。我們用x表示機器人狀態,m表示環境地圖,z表示傳感器觀測情況&#xf…

關于git分支

1.關于git分支 git的“分支”乍一聽是一個特別容易讓人產生錯覺的概念,以為它和樹枝一樣是分叉的枝節,其實Git中的分支本質上是個指向commit對象的指針,每次commit,git都把它們串成一條時間線,這條時間線就是一個分支。 2.直接切換…

【機器學習經典算法源碼分析系列】-- 邏輯回歸

1.邏輯回歸(Logistic Regression)又常被成為“邏輯斯蒂回歸”,實質上是一個二元分類問題。 邏輯回歸代價函數: 代價函數導數: Matlab實現: 采用matlab中自帶的無約束最小化函數fminunc來代替梯度下降法&…

求特殊自然數

總時間限制: 1000ms 內存限制: 65536kB 描述一個十進制自然數,它的七進制與九進制表示都是三位數,且七進制與九進制的三位數碼表示順序正好相反。編程求此自然數,并輸出顯示。 輸入無。輸出三行:第一行是此自然數的十進制表示;第一行是此自然…

ROS——不同版本間ROS進行通信

在相同版本間的ROS進行通信不在贅述了,修改/etc/hosts文件即可。 最近項目遇到在Ubuntu16.04 與Ubuntu18.04兩個系統間進行ROS通信,ROS版本分別為Kinetic和Melodic。配置網絡后,兩邊都能夠ping通,但是在獲取ros數據是&#xff0c…

大數據開發實戰:數據流圖及相關數據技術

1、大數據流程圖 2、大數據各個環節主要技術 2.1、數據處理主要技術 Sqoop:(發音:skup)作為一款開源的離線數據傳輸工具,主要用于Hadoop(Hive) 與傳統數據庫(MySql,PostgreSQL)間的數據傳遞。它…

oracle 中時間類型 date 與 long 互轉

我們在保存時間到數據庫時,有時候會保存long型的數據,固定長度是13位,是用當前時間減去1970-01-01,再換算成毫秒得到的結果。 但是要考慮到時區問題中國的時區時8區所以時間要加上8小時 oracle中的實現方式: ---------…

Linux對包管理闡述

Centos/Redhat/Fedora的軟件包,都是rpm后綴的文件。包管理器rpm(Redhat packages manager) linux的哲學思想是簡單命令解決復雜任務,因此每個軟件的功能較單一,所以各種包之間有著復雜的依賴關系,為了解決這種可以使用前端工具&am…

跨時鐘域電路設計——亞穩態及雙鎖存器

一、同步電路 定義:電路中所有受時鐘控制的單元,全部由一個統一的時鐘控制。 優點:在同步設計中,EDA工具可以保證電路系統的時序收斂,避免電路設計中的競爭冒險。 缺點:時鐘樹綜合需要加入大量延遲單元&…

linux setsockopt詳解

1.closesocket(一般不會立即關閉而經歷TIME_WAIT的過程)后想繼續重用該socket: BOOL bReuseaddrTRUE; setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL)); 2. 如果要已經處于連接狀態的soket在調用closes…

[TOOLS] 移動端調試進行時 - whistle

1、本地安裝、啟動whistle 安裝實操請查看官方文檔不贅述 復制代碼 2、手機設置代理 實操請查看官方文檔 !!!注意:代理ip填寫whistle右上角online選項中的ip 復制代碼 3、whistle上設置對應rules、weinre whistle設置代理(!!!注意支持tunnel協議): rules…

函數動態參數實現format

變量賦值一種是字符串格式化,一種是通過format的方式 1.字符串格式化 s"i am %s,age %d"%(Jasper,23)print(s)打印輸出:i am Jasper,age 232.format格式化 s"i am {name},age {age}".format(namejasper,age23)print(s)或 s2"i …

跨時鐘域電路設計——單bit信號

前面提到了簡單的雙電平鎖存器,下面是一些單bit同步電路。 一、慢時鐘域向快時鐘域 邊沿檢測同步器 將慢時鐘域的脈沖搬移并縮小為快時鐘域的脈沖。 既可以檢測上升沿,也可以檢測下降沿。 如上圖,慢時鐘下一個有效脈沖的最短周期為慢時鐘的…

數據同步 rsync+notify架構

rsync 同步命令,非常好用 notify是監控本地文件的變化的 、安裝配置 1. 安裝rsync,inotify-tools sudo apt-get install rsync inotify-tools 2. 拷貝rsync配置文件 mkdir /etc/rsync cp /usr/share/doc/rsync/examples/rsyncd.conf /etc/rsync/ 3. 服…

OC_KVC與KVO簡單介紹

KVC KVC概述 KVC 即 Key-value coding 鍵值編碼,是指iOS的開發中,可以允許開發者通過Key名直接訪問對象的屬性,或者給對象的屬性賦值。 KVC案例 interface Person : NSObjectproperty (nonatomic,assign) int age; property (nonatomic,copy)…

C語言100例01 PHP版(練習)

題目:有1、2、3、4個數字,能組成多少個互不相同且無重復數字的三位數?都是多少? 程序分析:可填在百位、十位、個位的數字都是1、2、3、4。組成所有的排列后再去 掉不滿足條件的排列。 代碼: 1 for($i1;$i&l…

嵌入式根文件系統制作

1:文件系統分類: 基于flash的文件系統:flash有兩種,一種是NOR,另一種NAND。NOR型 FLASH主要用于存放程序。NAND型 FLASH主要用于存放數據。NOR的特點是可在芯片內執行。這樣應用程序可以直接在flash內存內運行,不必再把代碼讀到…