關(guān)于Docker的基礎(chǔ)概念分享
簡介
如官方文檔所說,docker是一個自動將應(yīng)用打包成輕量可移植自包涵的容器的引擎。開發(fā)者構(gòu)建的應(yīng)用可以一次構(gòu)建全平臺運行,包括本地開發(fā)機,生產(chǎn)環(huán)境,虛擬機和云等。目前處于開發(fā)階段,不可用于生產(chǎn)環(huán)境。在你啟動一條命令時docker會調(diào)用lcx等其他一個組建為這條命令構(gòu)建一個container,包含了進程運行的所有資源。但是官方文檔以說明,docker處于開發(fā)階段目前還不能用于生產(chǎn)環(huán)境。
特性
Go語言編寫
基于lxc的進程級隔離,而lxc基于cgroup,輕量級
通過cgroup做到文件系統(tǒng),網(wǎng)絡(luò)和資源的隔離
使用aufs文件系統(tǒng)存儲,寫時復(fù)制,相同數(shù)據(jù)只保存一份,節(jié)省空間
源機制,可相互分享,搜索等
概念
cgroups
cgroups全稱control groups,是linux內(nèi)核提供的一種限制、記錄和隔離進程組所使用物理資源的一種機制。在2.6.24之后的內(nèi)核中都已經(jīng)支持cgroups。詳細的介紹請參考cgroups詳解。
lxc
lxc全稱是linux container,是基于cgroups和chroot等內(nèi)核特性的一組工具,用于構(gòu)建虛擬環(huán)境。通過一系列的命令行工具可以創(chuàng)建,修改,刪除虛擬環(huán)境。具體用法可參考ubuntu官方文檔。
aufs
aufs全稱是advance(another) union file system,是一種聯(lián)合文件系統(tǒng)。這種文件系統(tǒng)最重要的一個特性就是有一個層的概念和復(fù)制時拷貝,可以做到當(dāng)文件系統(tǒng)改變時只影響其中一層,其他層保持不變。舉個例子,整個文件系統(tǒng)就像由一層一層的玻璃組成的,你從上往下看能看到所有的圖案(如果上下層的玻璃完全重合則只能看見上層的玻璃對應(yīng)的圖案),而當(dāng)你需要新增或者修改圖案時就只能在最上層的玻璃上操作。具體的一些操作例子可參考geekstuff的aufs演示
安裝
注意: docker要求內(nèi)核在3.8以上,所以建議的安裝系統(tǒng)為ubuntu。
ubuntu
curl -s https://get.docker.io/ubuntu/ | sudo sh
centos
安裝epel rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
安裝docker yum install -y docker-io
啟動 service docker start chkconfig docker on
使用
命令行
獲取base image
docker pull ubuntu
這條命令會從docker index上獲取ubuntu鏡像,它是運行其他進程的基礎(chǔ)。
運行命令
docker run -i -t ubuntu yum install -y vim
提交改變
docker images docker commit id user/name docker push user/name
再次運行
docker pull user/name docker run -i -t image vim
注意: 這里的再次運行是指你所構(gòu)建的環(huán)境可以再其他任何平臺上運行起來,不需要額外的配置,沒有依賴。
Dockerfile
dockerfile通過一些指令來描述了一個image的方方面面。
# Memcached # # VERSION 2.2 # use the ubuntu base image provided by dotCloud FROM ubuntu MAINTAINER Victor Coisne victor.coisne@dotcloud.com # make sure the package repository is up to date RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list RUN apt-get update # install memcached RUN apt-get install -y memcached # Launch memcached when launching the container ENTRYPOINT ["memcached"] # run memcached as the daemon user USER daemon # expose memcached port EXPOSE 11211
其中的一些指令解釋:
FROM指定此image的base image
MAINTAINER指定image的維護者
RUN指定在當(dāng)前的image下運行的命令,相當(dāng)于docker run image command
ENTRYPOINT指定在運行image時觸發(fā)的命令
USER指定運行出發(fā)命令的用戶名
EXPOSE指定對外提供的端口號
以上就是本文的全部內(nèi)容了,希望對大家了解docker能夠有所幫助
相關(guān)文章
docker倉庫登錄及配置insecure-registries的方法
這篇文章主要介紹了docker倉庫登錄配置insecure-registries的方法,docker客戶端如果配置中添加了insecure-registary配置,就不需要在docker 客戶端配置上對應(yīng)證書,如果不配置要在/etc/docker/certs.d/目錄中添加對應(yīng)證書才能正常登錄,感興趣的朋友跟隨小編一起看看吧2022-07-07Docker配置MySql環(huán)境的實現(xiàn)步驟
通過使用Docker,開發(fā)人員可以更容易地構(gòu)建、測試和交付應(yīng)用程序,同時減少了環(huán)境配置和依賴項管理的復(fù)雜性,本文主要介紹了Docker配置MySql環(huán)境的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,感興趣的可以了解一下2024-02-02docker部署Macvlan實現(xiàn)跨主機網(wǎng)絡(luò)通信的實現(xiàn)
這篇文章主要介紹了docker部署Macvlan實現(xiàn)跨主機網(wǎng)絡(luò)通信的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10詳解使用export/import導(dǎo)出和導(dǎo)入docker容器
本篇文章主要介紹了詳解使用export/import導(dǎo)出和導(dǎo)入docker容器,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07docker-compose安裝db2數(shù)據(jù)庫操作
這篇文章主要介紹了docker-compose安裝db2數(shù)據(jù)庫操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12Docker啟動容器報錯:Ports are not available的解決方案
這篇文章主要介紹了Docker啟動容器報錯:Ports are not available的解決方案,Docker 將容器程序的端口號映射到宿主機的端口號,是一個 NAT 過程,這個過程可能會因為與 Windows NAT 服務(wù)沖突而失效,文中有詳細的解決方案,需要的朋友可以參考下2024-03-03Docker安裝LNMP環(huán)境的詳細過程(可部署TP項目)
這篇文章主要介紹了Docker安裝LNMP環(huán)境的詳細過程(可部署TP項目),主要包括安裝docker,安裝nginx,安裝php的命令詳解,需要的朋友可以參考下2022-06-06