關(guān)于Docker的基礎(chǔ)概念分享
簡介
如官方文檔所說,docker是一個(gè)自動(dòng)將應(yīng)用打包成輕量可移植自包涵的容器的引擎。開發(fā)者構(gòu)建的應(yīng)用可以一次構(gòu)建全平臺(tái)運(yùn)行,包括本地開發(fā)機(jī),生產(chǎn)環(huán)境,虛擬機(jī)和云等。目前處于開發(fā)階段,不可用于生產(chǎn)環(huán)境。在你啟動(dòng)一條命令時(shí)docker會(huì)調(diào)用lcx等其他一個(gè)組建為這條命令構(gòu)建一個(gè)container,包含了進(jìn)程運(yùn)行的所有資源。但是官方文檔以說明,docker處于開發(fā)階段目前還不能用于生產(chǎn)環(huán)境。
特性
Go語言編寫
基于lxc的進(jìn)程級(jí)隔離,而lxc基于cgroup,輕量級(jí)
通過cgroup做到文件系統(tǒng),網(wǎng)絡(luò)和資源的隔離
使用aufs文件系統(tǒng)存儲(chǔ),寫時(shí)復(fù)制,相同數(shù)據(jù)只保存一份,節(jié)省空間
源機(jī)制,可相互分享,搜索等
概念
cgroups
cgroups全稱control groups,是linux內(nèi)核提供的一種限制、記錄和隔離進(jìn)程組所使用物理資源的一種機(jī)制。在2.6.24之后的內(nèi)核中都已經(jīng)支持cgroups。詳細(xì)的介紹請(qǐng)參考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)最重要的一個(gè)特性就是有一個(gè)層的概念和復(fù)制時(shí)拷貝,可以做到當(dāng)文件系統(tǒng)改變時(shí)只影響其中一層,其他層保持不變。舉個(gè)例子,整個(gè)文件系統(tǒng)就像由一層一層的玻璃組成的,你從上往下看能看到所有的圖案(如果上下層的玻璃完全重合則只能看見上層的玻璃對(duì)應(yīng)的圖案),而當(dāng)你需要新增或者修改圖案時(shí)就只能在最上層的玻璃上操作。具體的一些操作例子可參考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
啟動(dòng) service docker start chkconfig docker on
使用
命令行
獲取base image
docker pull ubuntu
這條命令會(huì)從docker index上獲取ubuntu鏡像,它是運(yùn)行其他進(jìn)程的基礎(chǔ)。
運(yùn)行命令
docker run -i -t ubuntu yum install -y vim
提交改變
docker images docker commit id user/name docker push user/name
再次運(yùn)行
docker pull user/name docker run -i -t image vim
注意: 這里的再次運(yùn)行是指你所構(gòu)建的環(huán)境可以再其他任何平臺(tái)上運(yùn)行起來,不需要額外的配置,沒有依賴。
Dockerfile
dockerfile通過一些指令來描述了一個(gè)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下運(yùn)行的命令,相當(dāng)于docker run image command
ENTRYPOINT指定在運(yùn)行image時(shí)觸發(fā)的命令
USER指定運(yùn)行出發(fā)命令的用戶名
EXPOSE指定對(duì)外提供的端口號(hào)
以上就是本文的全部內(nèi)容了,希望對(duì)大家了解docker能夠有所幫助
相關(guān)文章
使用Docker+Nginx部署vue項(xiàng)目詳細(xì)圖文教程
這篇文章主要給大家介紹了關(guān)于使用Docker+Nginx部署vue項(xiàng)目的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-09-09docker倉庫登錄及配置insecure-registries的方法
這篇文章主要介紹了docker倉庫登錄配置insecure-registries的方法,docker客戶端如果配置中添加了insecure-registary配置,就不需要在docker 客戶端配置上對(duì)應(yīng)證書,如果不配置要在/etc/docker/certs.d/目錄中添加對(duì)應(yīng)證書才能正常登錄,感興趣的朋友跟隨小編一起看看吧2022-07-07Docker配置MySql環(huán)境的實(shí)現(xiàn)步驟
通過使用Docker,開發(fā)人員可以更容易地構(gòu)建、測(cè)試和交付應(yīng)用程序,同時(shí)減少了環(huán)境配置和依賴項(xiàng)管理的復(fù)雜性,本文主要介紹了Docker配置MySql環(huán)境的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),感興趣的可以了解一下2024-02-02docker部署Macvlan實(shí)現(xiàn)跨主機(jī)網(wǎng)絡(luò)通信的實(shí)現(xiàn)
這篇文章主要介紹了docker部署Macvlan實(shí)現(xiàn)跨主機(jī)網(wǎng)絡(luò)通信的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10如何使用?docker?搭建一個(gè)?mysql?服務(wù)
這篇文章主要介紹了如何使用?docker?搭建一個(gè)mysql服務(wù),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09詳解使用export/import導(dǎo)出和導(dǎo)入docker容器
本篇文章主要介紹了詳解使用export/import導(dǎo)出和導(dǎo)入docker容器,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-07-07docker-compose安裝db2數(shù)據(jù)庫操作
這篇文章主要介紹了docker-compose安裝db2數(shù)據(jù)庫操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-12-12Docker啟動(dòng)容器報(bào)錯(cuò):Ports are not available的解決方案
這篇文章主要介紹了Docker啟動(dòng)容器報(bào)錯(cuò):Ports are not available的解決方案,Docker 將容器程序的端口號(hào)映射到宿主機(jī)的端口號(hào),是一個(gè) NAT 過程,這個(gè)過程可能會(huì)因?yàn)榕c Windows NAT 服務(wù)沖突而失效,文中有詳細(xì)的解決方案,需要的朋友可以參考下2024-03-03Docker安裝LNMP環(huán)境的詳細(xì)過程(可部署TP項(xiàng)目)
這篇文章主要介紹了Docker安裝LNMP環(huán)境的詳細(xì)過程(可部署TP項(xiàng)目),主要包括安裝docker,安裝nginx,安裝php的命令詳解,需要的朋友可以參考下2022-06-06