一談到容器,我們都會想到 docker。
docker 現在幾乎是容器的代名詞。確實,是 docker 將容器技術發揚光大。同時,我們也需要知道圍繞 docker 還有乙個生態系統。docker 是這個生態系統的基石,但完善的生態系統才是保障 docker 以及容器技術能夠真正健康發展的決定因素。
docker是通過核心虛擬化技術(namespaces及cgroups cpu、記憶體、磁碟io等)來提供容器的資源隔離與安全保障等。由於docker通過作業系統層的虛擬化實現隔離,所以docker容器在執行時,不需要類似虛擬機器(vm)額外的作業系統開銷,提高資源利用率。
build once, configure once and run anywhere(譯者注:這個就不翻譯了,翻譯出來味道就沒了)
docker 將貨櫃思想運用到軟體打包上,為**提供了乙個基於容器的標準化輸出系統。docker 可以將任何應用及其依賴打包成乙個輕量級,可移植,自包含的容器。容器可以執行在幾乎所有的作業系統上
構建:做乙個docker映象
運輸:docker pull
執行:啟動乙個容器
每乙個容器,他都有自己的檔案系統rootfs.
docker的核心元件包括
● docker 客戶端:clientview code● docker 伺服器:docker daemon
● docker 映象: image
● registry
● docker 容器 :container
docker 架構如圖:
docker 採用的是 client/server 架構。客戶端向伺服器傳送請求,伺服器負責構建,執行和分發容器。客戶端和伺服器可以執行在同乙個host上,客戶端也可以通過 socket 或 restapi 與遠端的伺服器通訊。
最常用的docker客戶端是docker命令。通過docker我們可以方便地在 host上構建和執行容器。
docker支援很多操作(子命令)
除了docker命令列工具,使用者也可以通過 rest api 與伺服器通訊
docker daemon 是伺服器元件,以linux後台服務的方式執行,如圖
docker daemon 執行在docker host 上,負責建立,執行,監控容器,構建,儲存映象。
預設情況下,docker守護程序會生成乙個socket(/var/run/docker.sock)檔案來進行本地程序通訊,而不會監聽任何埠,因此只能在本地使用docker客戶端或者使用docker api進行操作。
如果想在其他主機上操作docker主機,就需要讓docker守護程序監聽乙個埠,這樣才能實現遠端通訊。
預設配置下,docker daemon 只能響應來自本地host 的客戶端請求。如果要允許遠端客戶端請求,需要在配置檔案中開啟tcp監聽,步驟如下
(1). vim /usr/lib/systemd/system/docker.service
execstart=/usr/bin/dockerd -h unix:///var/run/docker.sock -h tcp: >>>> ps 2375埠會引發漏洞
(2). 重啟 docker daemon
systemctl daemon-reload
systemctl restart docker.service
修改以後可以遠端連線docker
如在另一台伺服器檢視10.0.0.11上docker的資訊
docker -h 10.0.0.11 info
可將docker映象看成唯讀模板,通過它可以建立docker容器。
映象有多種生成方法:
(1.)從無到有開始建立映象;
(3.)在現有映象上建立新的映象。
可以將映象的內容和建立步驟描述在乙個文字檔案中,這個檔案被稱為dockerfile,通過執行docker build 命令可以構建出docker映象。
ps:build
build命令docker容器就是docker映象的執行例項usage:docker build [options] path | url | -options:
-t ,--tag list #構建後的映象名稱
-f, --file string
#指定dockerfiile檔案位置
示例:1
,docker build .
2,docker build -t nginx:v10 .
3,docker build -t nginx:v10 -f /path/dockerfile /path
使用者可以通過cli(docker)或是api啟動,停止,移動或刪除容器。可以這麼認為,對於應用軟體,映象是軟體
生命週期的構建和打包階段,而容器則是啟動和執行階段
容器是通過 image 建立的,需要有乙個倉庫來統一存放 image,這個倉庫就叫做 registry
registry是存放docker映象的倉庫,registry分私有和公有兩種。
出於對速度或安全的考慮,使用者也可以建立自己的私有registry。
環境:[root@docker1 ~]# cat /etc/redhat-release
centos linux release 7.5.1804 (core)
[root@docker1 ~]# uname -r
3.10.0-862.2.3.el7.x86_64
yum install epel-release -y
wget -o /etc/yum.repos.d/docker-ce.repo
sed -i 's#download.docker.com#mirrors.ustc.edu.cn/docker-ce#g
' /etc/yum.repos.d/docker-ce.repo
yum install docker-ce -y
(5).修改docker啟動檔案
docker啟動檔案
/usr/lib/systemd/system/docker.service
systemd詳解:
vim /usr/lib/systemd/system/docker.service
execstart=/usr/bin/dockerd -h unix:///var/run/docker.sock -h tcp:
修改以後可以遠端連線docker
如在另一台伺服器檢視10.0.0.11上docker的資訊
docker -h 10.0.0.11 info
#啟動docker
systemctl daemon-reload
systemctl restart docker.service
至此配置完成
Docker入門教程(一)介紹
docker入門教程 一 介紹 docker入門教程 二 命令 docker入門教程 三 dockerfile docker入門教程 四 docker registry docker入門教程 五 docker安全 docker入門教程 六 另外的15個docker命令 docker入門教程 七 do...
Hadoop入門 一 介紹Hadoop
the apache hadoop project develops open source software for reliable,scalable,distributed computing.hadoop是做可靠的 可擴充套件的 分布式計算,說白了就是處理海量資料問題的解決方案。海量資料的儲...
OpenCV學習教程入門篇 一 介紹
opencv,是inter公司開發的免費開源專門因為影象處理和機器視覺的c c 庫,英文全稱是open source computer vision。1.視覺化語言matlab與opencv都能夠用於影象處理,學哪種比較好?matlab是主要面對高校做科研的一種視覺化數學處理工具箱。opencv在有...