docker的基本概念


docker的基本概念

提到docker容器化技術,不由自主就會想到虛擬機技術。容器化技術和虛擬機有哪些區別呢

  • 容器和宿主機共享kernel,容器的kernel版本與宿主機一致
  • 虛擬機能夠模擬輸入輸出,讓guest os能夠起來,也叫hypervisor,啟動很慢
  • docker容器化不模擬輸入輸出,只是做宿主機輸入輸出的搬運工。(前提鏡像和宿主機架構一致,x86上不能模擬arm)
  • 虛擬機有獨立的文件系統,進程系統,內存系統,而容器只是做了隔離。

Docker的架構圖

私服/mirror

搭建私服鏡像的操作方式

私服用來存放和拉取程序的打包image

mirror用來拉取網絡上的docker image:

DaoCloud

阿里雲docker

network

host模式

host 模式,在run鏡像時以net=host啟動,容器和宿主機共用network space,不會虛擬network space。與宿主機共用ip,性能較優。

container模型

該模型是container之間共享一個network space。

bridge模式

bridge模式的容器,每個皆有獨立的network space,有獨立的ip,並將一個宿主機上的容器鏈接到一個虛擬bridge上。

overlay模式

overlay模式是一種跨宿主機的容器通信方案。二層VLAN也可以實現跨節點的容器之間網絡互通,但是需要改造現有網絡,二層vlan支持的節點有限制,不超過4000,另外一個廣播數據,在整個集群內都會傳播,浪費帶寬。overlay恰恰是針對以上問題,孕育而生的解決方案,約定通信協議,把二層報文進行封裝分發,報文中采用隔離的標識位,突破節點限制。

overlay創建的要素:

  • 存儲服務(ectd/consul/zk);
  • swarm集群。master和agent token注冊。swarm和consul的配合使用;
  • 創建overlay類型的network;
  • 啟動容器指定overlay網絡。

container net model自定義網絡模型

docker 發布了libnetwork項目,並退出了CNM模型,方便二次開發。

none模式

container容器優獨立的network space,但是沒有網卡,需要手動配置網卡,ip

image和container

基本介紹

image

鏡像是一堆只讀層的集合,但是對外是一個統一的文件系統

docker鏡像,根據鏡像的需要,base鏡像要小。RUN的命令能合成一行,不要拆成多行,每一行都會加一層layer。
另外安裝完,要刪除程序包。

docker image trees可以查看鏡像的繼承關系。

當base鏡像不斷升級,子鏡像如何切換不同的父鏡像,修改image的graph的json信息和aufs的鏡像層次描述文件,這是個小tricky,哈哈。

container

container 是鏡像的啟動實例。從結構上與image類型,但是最上層多了一個可讀寫層。

Dockerfile

是用來構建鏡像的配置文件,文件使用說明

注意幾點:

  • ENV 命令配置的變量,只生效於 docker exec進行
  • CMD和ENTRYPOINT,相互覆蓋。
  • CMD命令中,命令不支持ENV變量
  • CMD不支持多條命令。
  • CMD可以用sh -c 的shell進程來執行多條命令,命令之間采用分號隔開。同事支持ENV環境變量

端口映射及磁盤映射

容器中的端口可以用 -p 宿主機端口:容器端口 映射出來。

容器文件持久化,可以參數 -v來映射宿主機上, -v 宿主機文件夾:容器文件夾。

通過目錄映射也可以配置信息共享。

container編排

利用docker-compose可以實現docker容器的集群啟動。需要編寫compose yaml文件。
可以參考compose的文件格式

常用命令

docker命令:http://blog.chinaunix.net/uid-10915175-id-4443127.html
docker-compose命令:http://blog.csdn.net/zhiaini06/article/details/45287663

安裝

環境:centos 7

docker-engine安裝

sudo yum -y remove docker docker-common container-selinux
sudo yum -y remove docker-selinux
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://docs.docker.com/engine/installation/linux/repo_files/centos/docker.repo

sudo yum makecache fast
yum -y install docker-engine
docker --version

docker-compse安裝

yum -y install epel-release
yum -y install python-pip
pip --version
pip install docker-compose

增加私服

編輯 /usr/lib/systemd/system/docker.service
--insecure-registry 172.16.74.150

修改docker配置后,重啟
systemctl daemon-reload
service docker restart


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM