共計(jì) 3975 個(gè)字符,預(yù)計(jì)需要花費(fèi) 10 分鐘才能閱讀完成。
這篇文章給大家分享的是有關(guān) python 中 docker 系統(tǒng)管理的示例分析的內(nèi)容。丸趣 TV 小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨丸趣 TV 小編過(guò)來(lái)看看吧。
(一)什么是 docker hub
Docker Hub 是一個(gè)倉(cāng)庫(kù)
https://hub.docker.com/
如果頁(yè)面打不開(kāi),那就需要×××。
倉(cāng)庫(kù)是集中存放鏡像文件的場(chǎng)所。
倉(cāng)庫(kù)為公開(kāi)倉(cāng)庫(kù)(Public)和私有倉(cāng)庫(kù)(Private)兩種形式。
最大的公開(kāi)倉(cāng)庫(kù)就是 https://hub.docker.com/
用戶也可以在本地網(wǎng)絡(luò)搭建私有倉(cāng)庫(kù)。
用戶可以選擇性的將鏡像上傳到私有和公有倉(cāng)庫(kù)中。其他用戶使用鏡像只需要 pull 命令,上傳是通過(guò) push 命令
注意
下載不需要賬號(hào),上傳是需要進(jìn)行賬號(hào)注冊(cè)的
vagrant 安裝 docker
源碼:https://github.com/limingios/dockerpython.git(「docker 實(shí)戰(zhàn)篇」python 的 docker-docker 系統(tǒng)管理 - 基礎(chǔ)概念(27))
vagrant 的使用參見(jiàn)
mac 安裝 vgarant:https://idig8.com/2018/07/29/docker-zhongji-07/
window 安裝 vgarant:https://idig8.com/2018/07/29/docker-zhongji-08/
通過(guò) vagrant 安裝 centos7
Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.require_version = 1.6.0
boxes = [
{
:name = docker-vagrant-centos ,
:mem = 2048 ,
:cpu = 2
}
Vagrant.configure(2) do |config|
config.vm.box = centos/7
boxes.each do |opts|
config.vm.define opts[:name] do |config|
config.vm.hostname = opts[:name]
config.vm.provider vmware_fusion do |v|
v.vmx[memsize] = opts[:mem]
v.vmx[numvcpus] = opts[:cpu]
end
config.vm.provider virtualbox do |v|
v.customize [modifyvm , :id, --memory , opts[:mem]]
v.customize [modifyvm , :id, --cpus , opts[:cpu]]
end
config.vm.network :private_network, auto_config: true, ip: 192.168.70.100 , bridge: ens1f0 , bootproto: static , gateway: 192.168.70.1
end
end
config.vm.provision shell , privileged: true, path: ./setup.sh
end
setup.sh
#/bin/sh
sudo yum install -y yum upgrade yum-utils device-mapper-persistent-data wget
sudo yum install -y net-tools
sudo yum install -y curl policycoreutils openssh-server openssh-clients
sudo systemctl enable sshd
sudo systemctl start sshd
sudo yum install -y postfix
sudo systemctl enable postfix
sudo systemctl start postfix
sudo firewall-cmd --permanent --add-service=http
sudo systemctl reload firewalld
sudo curl -sSL https://get.docker.com/ | sh
sudo curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://b81aace9.m.daocloud.io
sudo systemctl restart docker
sudo yum -y install epel-release
sudo yum -y install python-pip
sudo yum clean all
sudo pip install docker-compose
vagrant 安裝命令
vagrant up
mac 安裝 vgarant:https://idig8.com/2018/07/29/docker-zhongji-07/
window 安裝 vgaranthttps://idig8.com/2018/07/29/docker-zhongji-08/
系統(tǒng)類型 IP 地址節(jié)點(diǎn)角色 CPUMemoryHostnameCentos7192.168.70.100gitlab22Gdocker-vagrant-centos
(1). 虛擬機(jī) vagrant 講述安裝的步驟
vagrant up
(2). 機(jī)器 window/mac 開(kāi)通遠(yuǎn)程登錄 root 用戶下
su -
# 密碼
vagrant
#設(shè)置 PasswordAuthentication yes
vi /etc/ssh/sshd_config
sudo systemctl restart sshd
docker 登錄
通過(guò)網(wǎng)頁(yè)的方式登錄
虛擬機(jī) linux 登錄 docker 官網(wǎng),輸入的是用戶名和密碼。不是在官網(wǎng)登錄的郵箱
docker login
搜索鏡像
官網(wǎng)方式
linxu 命令的方式
下載鏡像
1. 先配置加速器
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
sudo systemctl restart docker
2. 下載 centos 鏡像
# 默認(rèn)下載最后一個(gè)版本
docker pull centos
docker images
3. 才 75MB 的 centos 鏡像,這是為啥啊?平時(shí)下載 centos 的 ios 都幾個(gè) G,怎么可能如此的小。如果老鐵是初學(xué)者肯定會(huì)問(wèn)這類的問(wèn)題。
解釋下為什么鏡像如此小
linux 操作系統(tǒng)是由內(nèi)核空間和用戶空間組成的,內(nèi)核空間就是 kernel,linux 剛啟動(dòng)的時(shí)候會(huì)加載這個(gè) bootfs 文件系統(tǒng),之后這個(gè) bootfs 會(huì)卸載掉,用戶文件系統(tǒng)就是 rootfs,包含 dev,bin 等目錄,對(duì)于剛下載的 centos 這個(gè)鏡像來(lái)說(shuō),底層會(huì)使用 docker 的內(nèi)核,自己只需要提供用戶空間就可以了,對(duì)于精簡(jiǎn)的系統(tǒng)用戶空間可以很小,只需要包括最基本的命令和程序庫(kù)就可以了,我們平時(shí)安裝的 centos 除了最基本的還會(huì)安裝很多的軟件,服務(wù),圖形桌面等等,需要好幾個(gè) g 也不足為奇了。
什么是鏡像
Docker 鏡像是一個(gè)特殊的文件系統(tǒng),除了提供容器運(yùn)行時(shí)所需的程序,庫(kù),資源,配置等文件外,還包含了一些為運(yùn)行時(shí)準(zhǔn)備的一些配置參數(shù)(如匿名卷,環(huán)境變量,用戶等)。鏡像不包含任何動(dòng)態(tài)數(shù)據(jù),其內(nèi)容在構(gòu)建之后也不會(huì)被改變。docker 鏡像只需要一個(gè)基礎(chǔ)的 base Image,按照需求不斷的疊加就可以了。共享一份基礎(chǔ)的。一個(gè)基礎(chǔ)鏡像出現(xiàn)多個(gè)容器,如果容器內(nèi)的 etc 文件被修改,但是基礎(chǔ)鏡像的是不會(huì)被改變的。修改只會(huì)在單個(gè)的容器內(nèi)。例如要安裝一個(gè) tomcat 鏡像,新的鏡像是在基礎(chǔ)的 linux 下一層一層疊加上來(lái)的。
Docker 的 copy-on-write 特性
所有的修改,添加,刪除,只會(huì)發(fā)生在容器層中,鏡像層都是只讀的。
什么是容器
容器是一種輕量級(jí),可移植,自包含的軟件打包技術(shù),是一種應(yīng)用程序,可以在幾乎任何地方以相同的方式運(yùn)行。
開(kāi)發(fā)人員在自己筆記本創(chuàng)建并測(cè)試好的容器,無(wú)需任何修改就能夠在生產(chǎn)系統(tǒng)的虛擬機(jī),物理放服務(wù)器或公有云主機(jī)上運(yùn)行。
為什么需要容器,以及為什么被稱為容器
集裝箱,無(wú)論你是什么貨物,鋼琴,香蕉,保時(shí)捷,他都會(huì)放置在各自的集裝箱里面了,它都會(huì)密封,只有到達(dá)目的地才會(huì)被打開(kāi),標(biāo)準(zhǔn)的集裝箱會(huì)被高效的裝卸重疊,長(zhǎng)途運(yùn)輸。docker 就將集裝箱的思想運(yùn)用在了打包軟件上面。它為代碼提供了容器的標(biāo)準(zhǔn)化的運(yùn)輸系統(tǒng),docker 會(huì)將任何應(yīng)用打包成為一個(gè)輕依賴,可移植,自包含的容器,這個(gè)容器幾乎可以運(yùn)行在任何的操作系統(tǒng)上,其實(shí)集裝箱和容器對(duì)應(yīng)的單詞都叫 container,docker 的圖標(biāo)就是一個(gè)鯨魚頂著多個(gè)集裝箱。
docker 容器的優(yōu)勢(shì)
容器的優(yōu)勢(shì),對(duì)于開(kāi)發(fā)人員來(lái)說(shuō),創(chuàng)建一次,可以在任何地方運(yùn)行,對(duì)于運(yùn)維人員來(lái)說(shuō),配置一次,可以運(yùn)行所有應(yīng)用。
docker 服務(wù)
docker 最核心的后臺(tái)進(jìn)程,它負(fù)責(zé)響應(yīng)來(lái)自 Docker client 的請(qǐng)求,然后將這些請(qǐng)求翻譯成系統(tǒng)調(diào)用完成容器管理操作。該進(jìn)程會(huì)在后臺(tái)啟動(dòng)一個(gè) API Server,負(fù)責(zé)接收由 Docker client 發(fā)送的請(qǐng)求;接收到的請(qǐng)求將通過(guò) Docker 服務(wù)內(nèi)部的一個(gè)路由分發(fā)調(diào)度,再由具體的函數(shù)來(lái)執(zhí)行請(qǐng)求。
感謝各位的閱讀!關(guān)于“python 中 docker 系統(tǒng)管理的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!