關於 dcoker
之前寫了一些關於這一部分的原因,但是感覺都不全面,所以打算重新完整的做個整理,查漏補缺。
現在已經是 2020 年,作為運維人員慢慢繞不過的坎就是容器編排這一塊的內容。相較於傳統運維,容器運維在發展前景和薪資待遇上面還是非常可觀的。這也是學習該技術的目的與動力。
關於 docker 的發展歷史,需要事先簡單了解以下內容:
1. docker 是 dotcloud 公司(成立於 2010 年,2013 年更名為 docker 股份****)開源在 github 上面的乙個專案。
2. 自 2015 年 runc 發布之後,docker 走上了真正跨平台的道路,這也是 docker 的乙個核心思想的由來:一次構建,到處執行。
3. 2016 年開始,docker 拆分成為了社群版docker ce和商業版docker ee,我們都用 docker ce。
4. docker 在 1.13 版本之後,命名方式更改為 年.月 的方式,如 18.06,每月發布前沿版(edge)和三個月發布穩定版(stable)。
5. docker 在老版本 centos 源中叫 docker,ubuntu 源中叫 docker.io,現在已經統一叫做docker-ce。
的高階,效能已能夠和 ubuntu 的aufs相提並論。
關於 docker 的一些概念,需要事先簡單了解以下內容:
1. docker 由go語言開發,屬於典型的 c/s 架構的產品。
2. docker 將容器技術推向了巔峰,但是容器技術並非起源於 docker。
3. docker 屬於 linux container(lxc,核心自帶,一種核心虛擬化技術,提供輕量級程序和資源隔離)的上層封裝,所以並非新技術。
4. docker 並非容器技術的最佳實踐,但是由於名氣大,使用廣,目前仍然是主流學習的目標。
5. 學 docker 不是最終目的,是為學習容器編排工具 kubernetes 做準備。
6. docker 擁有自己的編排工具 docker swarm,但是由於幹不贏 kubernetes 的原因已經快停止維護。
7. docker 是乙個paas
至於其它內容,在後面寫到的時候再說!
docker 的優缺點
在網上可以隨處可見也是官方文件上面隨處可見的一張關於 docker 和 vm 做比較的圖:
可以明顯的發現:
傳統的 vm 的工作過程:
1. 首先,需要一台伺服器,在上面安裝類似於 vmware workstation 這樣的軟體,只不過在伺服器上一般使用的是 vmware esxi 這類。
2. 然後在這個軟體的管理介面上面新建虛擬機器,安裝作業系統,配置 ip 等。
3. 最後再在這個新建的虛擬機器上面安裝想要執行的服務。
容器的工作過程:
1. 給伺服器安裝系統,可以是 linux 也可以是 windows,並安裝上 docker。
2. 執行我們想要執行的服務容器,每個容器以乙個單獨的程序存在與宿主機的系統上面。
兩者做對比可以發現:
1. 傳統的 vm 每次新增虛擬機器就需要重灌系統,並單獨執行系統,這樣會導致 cpu,記憶體,磁碟的額外開銷。但是好處在於隔離效果比較好。
2. 使用容器則不需安裝額外的作業系統,每個服務都以程序的方式跑在宿主機上,且擁有獨立的虛擬網路環境,獨立的磁碟儲存劃分,能節省系統開銷。但相較傳統的 vm 在隔離性上不那麼好,畢竟還在乙個宿主系統下面,如果這個宿主系統掛掉,上面的所有執行的容器都會掛掉。
docker 的核心元件
服務端(server)和客戶端(client):c/s 架構,所有的執行都是通過服務端傳送給客戶端執行。
映象(image):需要執行的服務和執行環境封裝在一起的包。
容器(container):通過映象執行起來的例項。
具體關係可以參照下圖:
安裝部署
docker 在網上的安裝方式一般會看到這幾種:curl 指令碼安裝,原始碼安裝,yum 安裝,rpm 安裝。
通常對於生產環境盡量推薦選擇 rpm 版本安裝,原因在於便於版本控制。不安裝最新的,怕有坑。
1. 安裝準備:
但是可能速度會很慢,所以也可以選擇中科大提供的源:
containerd.io-1.2.6-3.3.el7.x86_64.rpm這裡準備了 4 臺 centos linux release 7.5.1804 的虛擬機器,ip 分別是 192.168.200.101-104,並事先關閉防火牆和 selinux。docker-ce-19.03.6-3.el7.x86_64.rpm
docker-ce-cli-19.03.6-3.el7.x86_64.rpm
為了更好的支援,也可以公升級一下機器的核心,當然如果你的伺服器已經執行其他服務,最好不要公升級,怕出問題。
具體公升級方法可以參照我之前的部落格,裡面有一鍵公升級指令碼:
2. 安裝依賴:
#解除安裝舊版本
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
#安裝依賴
#更新系統
yum update
mkdir docker4. 啟動並設定開機自啟:cd docker/
#上傳檔案到該目錄下面,再執行安裝
yum -y install *
systemctl start docker5. 檢視:systemctl enable docker
systemctl status docker
docker version結果如圖:
6. 映象倉庫優化:
由於 docker 預設的映象倉庫 docker hub 因為某些不可描述的原因訪問及其慢,可以將它換為國內的映象源:
阿里映象源:麻煩,需要專門申請賬戶。
中科大映象源:直接配置即可。(我寫文章時候中科大打不開,注意一下,不行就用阿里的,雖然麻煩一些)
#此時檢視 docker 程序:拷貝啟動檔案
cp /lib/systemd/system/docker.service /etc/systemd/system
#修改配置
sed -i "
s#^execstart=.*#execstart=/usr/bin/dockerd -h fd:// --containerd=/run/containerd/containerd.sock --registry-mirror=
" /etc/systemd/system/docker.service
#重啟docker
chmod 755 /etc/systemd/system/docker.service
systemctl daemon-reload
systemctl restart docker
ps -ef | grep docker到此,docker 安裝完成,接下來是 docker 的使用!
Docker01 容器 映象
3 映象 倉庫 repository 集中存放映象檔案的場所。倉庫和倉庫註冊伺服器是有區別的。倉庫註冊器上往往存放著多個倉庫,每個倉庫又包含了多個映象,每個映象有不同的標籤 tag 倉庫也分為公開倉庫和私有倉庫兩種形式。docker run options image command arg.opt...
Docker01 重要概念
docker是什麼 docker是以容器技術為核心的一套應用的構建,分發,執行的體系和生態。docker 的優點 對開發和運維來說,最希望的是一次構建或配置,可以在任意地方正常執行。例如 開發者可以使用乙個標準的映象來構建一套開發容器,開發完成之後,運維人員可以直接使 用這個容器來部署 docker...
docker安裝說明
環境 centos 7 第一步 解除安裝老版本 sudo yum remove docker docker client docker client latest docker common docker latest docker latest logrotate docker logrotate...