關(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,包含了進(jìn)程運行的所有資源。但是官方文檔以說明,docker處于開發(fā)階段目前還不能用于生產(chǎn)環(huán)境。
特性
Go語言編寫
基于lxc的進(jìn)程級隔離,而lxc基于cgroup,輕量級
通過cgroup做到文件系統(tǒng),網(wǎng)絡(luò)和資源的隔離
使用aufs文件系統(tǒng)存儲,寫時復(fù)制,相同數(shù)據(jù)只保存一份,節(jié)省空間
源機制,可相互分享,搜索等
概念
cgroups
cgroups全稱control groups,是linux內(nèi)核提供的一種限制、記錄和隔離進(jìn)程組所使用物理資源的一種機制。在2.6.24之后的內(nèi)核中都已經(jīng)支持cgroups。詳細(xì)的介紹請參考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鏡像,它是運行其他進(jìn)程的基礎(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的維護(hù)者
RUN指定在當(dāng)前的image下運行的命令,相當(dāng)于docker run image command
ENTRYPOINT指定在運行image時觸發(fā)的命令
USER指定運行出發(fā)命令的用戶名
EXPOSE指定對外提供的端口號
以上就是本文的全部內(nèi)容了,希望對大家了解docker能夠有所幫助
相關(guān)文章
Docker-compose 建立ELK集群的實現(xiàn)方法
這篇文章主要介紹了Docker-compose 建立ELK集群的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
使用Docker配置redis sentinel哨兵的方法步驟
本文主要介紹了Docker配置redis sentinel哨兵的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
Docker部署Laravel應(yīng)用實現(xiàn)隊列&任務(wù)調(diào)度
這篇文章主要介紹了Docker部署Laravel應(yīng)用實現(xiàn)隊列&任務(wù)調(diào)度,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
Docker從零構(gòu)建php-nginx-alpine鏡像的方法
這篇文章主要介紹了Docker從零構(gòu)建php-nginx-alpine鏡像的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-11-11
如何使用?Dockerfile?創(chuàng)建一個簡單容器
這篇文章主要介紹了如何使用?Dockerfile?創(chuàng)建一個簡單容器,Dockerfile?是用于指導(dǎo)?docker?創(chuàng)建自定義?image?的一系列指令,是用于創(chuàng)建?image?的藍(lán)圖,下文更多詳細(xì)介紹需要的小伙伴可以參考一下2022-04-04

