目錄
1. Docker是什么
2. Docker與虛擬化
3. Docker虛擬化的好處
4. Docker核心概念
? ?4.1.鏡像
? ?4.2.容器
? ?4.3.倉(cāng)庫(kù)
5. CentOS7 安裝docker(在線方式)
? ?5.1.內(nèi)核版本信息檢查??
? ?5.2 卸載可能存在的舊版本
??? ?5.3 安裝必要的系統(tǒng)工具
? ?5.4 添加docker-ce安裝源
? ?5.5 更新yum緩存
? ?5.6 安裝docker-CE? ?
? ?5.7 驗(yàn)證
6. 鏡像
? ?6.1 配置加速器
? ?6.2 搜索鏡像
? ?6.3 下載鏡像
? ?6.4 查看宿主機(jī)上的鏡像
? ?6.5 刪除鏡像
? ?6.6 保存鏡像
? ?6.7 推送鏡像到代碼倉(cāng)庫(kù)(以阿里云docker平臺(tái)為例)
? ?6.8 使用Dockerfile創(chuàng)建新的鏡像(注意:末尾有一個(gè)點(diǎn),表示當(dāng)前路徑)
7. Docker容器
? ?7.1 啟動(dòng)、停止、重啟容器命令
? ?7.2 查看當(dāng)前運(yùn)行的容器
? ?7.3 查看所有容器
? ?7.4 刪除容器
? ?7.5 創(chuàng)建容器(重點(diǎn))
? ?7.6 啟動(dòng)容器(重點(diǎn))
? ?7.7 進(jìn)入容器(重點(diǎn))
? ?7.8 創(chuàng)建\啟動(dòng)\進(jìn)入容器(run=create+start)
? ?7.9 退出容器
? ?7.10 宿主機(jī)和docker容器之間復(fù)制文件
? ? ? ? ? ? ? ?8. 查看Docker容器內(nèi)部信息
? ?8.1 進(jìn)入容器內(nèi)部獲取信息
? ?8.2 在宿主機(jī),執(zhí)行docker exec命令
? ?8.3 在宿主機(jī),使用docker inspect命令
補(bǔ)充
1. Docker是什么
1、Docker 是一個(gè)開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的鏡像中,然后發(fā)布到任何流行的?Linux或Windows操作系統(tǒng)的機(jī)器上,也可以實(shí)現(xiàn)虛擬化。容器是完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口。
??2、Docker是一個(gè)由GO語言寫的程序運(yùn)行的“容器”(Linux containers, LXCs),它是完整的一套容器管理系統(tǒng)?
?3、?Docker提供了一組命令,讓用戶更加方便直接地使用容器技術(shù),而無需要過多關(guān)心底層內(nèi)核技術(shù)
? ?注1:什么是容器
? ? ? ? 一個(gè)容器就相當(dāng)于一個(gè)虛擬機(jī)
? ?注2:docker用途,目前有三大類
? ? ? ? 1.提供一次性的環(huán)境。比如,本地測(cè)試他人的軟件、持續(xù)集成的時(shí)候提供單元測(cè)試和構(gòu)建的環(huán)境
? ? ? ? 2.提供彈性的云服務(wù)。因?yàn)?Docker 容器可以隨開隨關(guān),很適合動(dòng)態(tài)擴(kuò)容和縮容
? ? ? ? 3.組建微服務(wù)架構(gòu)。通過多個(gè)容器,一臺(tái)機(jī)器可以跑多個(gè)服務(wù),因此在本機(jī)就可以模擬出微服務(wù)架構(gòu)
2. Docker與虛擬化
????????傳統(tǒng)來看,虛擬化既可以通過硬件模擬來實(shí)現(xiàn),也可以通過操作系統(tǒng)軟件來實(shí)現(xiàn) 而容器技術(shù)則更為優(yōu)雅,它充分利用了操作系統(tǒng)本身已有的機(jī)制和特性,可以實(shí)現(xiàn)遠(yuǎn)超傳統(tǒng)虛擬機(jī)的輕量級(jí)虛擬化 因此,有人甚至把它稱為
? ?“新一代的虛擬化”技術(shù),并將基于容器打造的云平臺(tái)親切地稱為“容器云”毫無疑問,?
? ?Docker 正是眾多容器技術(shù)中的佼佼者,是容器技術(shù)發(fā)展過程中耀眼的一抹亮色
? ?注1:
?
? ?注2:Docker和一個(gè)正常的虛擬機(jī)有何區(qū)別?
? ? ? ? 當(dāng)前,Docker內(nèi)部使用的是Linux容器技術(shù)(LXC),這是運(yùn)行在與它的宿主機(jī)器同樣的操作系統(tǒng)上。
? ? ? ? 這準(zhǔn)許它可以和宿主機(jī)器共享許多系統(tǒng)資源。它也會(huì)使用AuFS作為文件系統(tǒng),也為你管理網(wǎng)絡(luò)。
3. Docker虛擬化的好處
? ?好處一:應(yīng)用部署方便
? ?舉個(gè)簡(jiǎn)單的例子,假設(shè)用戶試圖基于最常見的 LAMP (Linux+Apache+MySQL+PHP )組
? ?合來構(gòu)建網(wǎng)站 按照傳統(tǒng)的做法,首先需要安裝 Apache MySQL PHP 以及它們各自運(yùn)
? ?行所依賴的環(huán)境;之后分別對(duì)它們進(jìn)行配置(包括創(chuàng)建合適的用戶、配置參數(shù)等);經(jīng)過大量的操作后,還需要進(jìn)行功能測(cè)試,看是否工作正常;如果不正常,則進(jìn)行調(diào)試追蹤,意味著更多的時(shí)間代價(jià)和不可控的風(fēng)險(xiǎn)可以想象,如果應(yīng)用數(shù)目變多,事情會(huì)變得更加難以處理
? ?更為可怕的是, 旦需要服務(wù)器遷移(例如從阿里云遷移到騰訊云),往往需要對(duì)每個(gè)
? ?應(yīng)用都進(jìn)行重新部署和調(diào)試 這些瑣碎而無趣的“體力活”,極大地降低了用戶的工作效率
? ?究其根源,是這些應(yīng)用直接運(yùn)行在底層操作系統(tǒng)上,無法保證同一份應(yīng)用在不同的環(huán)境中行為一致? ?Docker 提供了一種更為聰明的方式,通過容器來打包應(yīng)用、解藕應(yīng)用和運(yùn)行平臺(tái)
? ?這意味著遷移的時(shí)候,只需要在新的服務(wù)器上啟動(dòng)需要的容器就可以了,無論新舊服務(wù)器
? ?是否是同一類型的平臺(tái) 這無疑將幫助我們節(jié)約大量的寶貴時(shí)間,并降低部署過程出現(xiàn)問題的風(fēng)險(xiǎn)?
? ?好處二:服務(wù)器同等配置,性能更優(yōu),利用率更高
????????讓我們假設(shè)你有一個(gè)容器鏡像(image)容量是1GB,如果你想用一個(gè)完整的虛擬機(jī)來裝載,
? ?你得需要容量的大小是1GB乘上你需要虛擬機(jī)的數(shù)量。但使用Linux容器虛擬化技術(shù)(LXC)和AuFS,你可以共享1GB容量,
? ?如果你需要1000個(gè)容器,假設(shè)他們都運(yùn)行在同樣的系統(tǒng)影像上,你仍然可以用稍微比1GB多一點(diǎn)的空間來給容器系統(tǒng)
? ?因此,借助經(jīng)過全面調(diào)優(yōu)的容器系統(tǒng),你就可以在同一硬件上擁有數(shù)量比使用Xen虛擬機(jī)或KVM虛擬機(jī)多出四到六倍的服務(wù)器應(yīng)用實(shí)例。? ?實(shí)際案例:以springcloud微服務(wù)為例
? ? ? ? ? ? ?7個(gè)服務(wù)-7臺(tái)linux服務(wù)器
? ? ? ? ? ? ?7個(gè)服務(wù)-1臺(tái)linux服務(wù)器-docker-7個(gè)鏡像
4. Docker核心概念
? ?Docker大部分的操作都圍繞著它的三大核心概念: 鏡像、容器和倉(cāng)庫(kù)
? ?注冊(cè)服務(wù)器 -> 倉(cāng)庫(kù)(CentOS/RedHat) -> 鏡像 -> 容器(一臺(tái)虛擬機(jī))
(你可以在 https://cloud.docker.com 免費(fèi)注冊(cè)一個(gè) Docker 賬號(hào)。)
??
?
? ?4.1.鏡像
? ? ?Docker 鏡像類似于虛擬機(jī)鏡像,可以將它理解為一個(gè)只讀的模板
? ? ?例如,一個(gè)鏡像可以包含一個(gè)基本的操作系統(tǒng)環(huán)境(例如:CentOS7),可以把它稱為一個(gè) CentOS7 鏡像
注:
CentOS是免費(fèi)的、開源的、可以重新分發(fā)的開源操作系統(tǒng)?[1]??,CentOS(Community Enterprise Operating System,中文意思是社區(qū)企業(yè)操作系統(tǒng))是Linux發(fā)行版之一。
CentOS Linux發(fā)行版是一個(gè)穩(wěn)定的,可預(yù)測(cè)的,可管理的和可復(fù)現(xiàn)的平臺(tái),源于Red Hat Enterprise Linux(RHEL)依照開放源代碼(大部分是GPL開源協(xié)議?[2]??)規(guī)定釋出的源碼所編譯而成。
? ?4.2.容器
? ? ?1.Docker 容器類似于一個(gè)輕量級(jí)的沙箱, Docker利用容器來運(yùn)行和隔離應(yīng)用 ?
? ? ?2.容器是從鏡像創(chuàng)建的應(yīng)用運(yùn)行實(shí)例 它可以啟動(dòng)、開始、停止 刪除,而這些容器都是彼此相互隔離、互不可見的
? ? ?3.可以把容器看作一個(gè)簡(jiǎn)易版的 Linux 系統(tǒng)環(huán)境(包括 root 用戶權(quán)限、進(jìn)程空間、用戶空間和網(wǎng)絡(luò)空間等)
? ? ? ?以及運(yùn)行在其中的應(yīng)用程序打包而成的盒子
? ?4.3.倉(cāng)庫(kù)
? ? ?Docker 倉(cāng)庫(kù)類似于代碼倉(cāng)庫(kù),是 Docker 集中存放鏡像文件的場(chǎng)所。
docker鏡像倉(cāng)庫(kù)有:1、Docker hub共有倉(cāng)庫(kù);2、registry私有倉(cāng)庫(kù);3、harbor企業(yè)私有倉(cāng)庫(kù),它是Docker Registry的更高級(jí)封裝;4、阿里云個(gè)人私有倉(cāng)庫(kù)。
??
? ? ?注1:Docker 倉(cāng)庫(kù)和倉(cāng)庫(kù)注冊(cè)服務(wù)器( Registry)的區(qū)別
? ? ? ? ? 分際上,倉(cāng)庫(kù)注冊(cè)服務(wù)器是存放倉(cāng)庫(kù)的地方,其上往往存放著多個(gè)倉(cāng)庫(kù) 每個(gè)倉(cāng)庫(kù)集中存放某一類鏡像,
? ? ? ? ? 例如存放 CentOS 操作系統(tǒng)鏡像的倉(cāng)庫(kù),其中可能了很多不同版本的鏡像,它則被稱CentOS倉(cāng)庫(kù)
? ? ? ? ?
?
5. CentOS7 安裝docker(在線方式)
#修改網(wǎng)絡(luò)設(shè)置
vi /etc/resolv.conf
nameserver 8.8.8.8
https://blog.csdn.net/Valiners/article/details/107871647
service network restart
#安裝yum-utils軟件包(提供yum-config-manager 實(shí)用程序)并設(shè)置穩(wěn)定的存儲(chǔ)庫(kù)。
#注:在新主機(jī)上首次安裝Docker Engine之前,需要設(shè)置Docker存儲(chǔ)庫(kù)。之后,您可以從存儲(chǔ)庫(kù)安裝和更新Docker)
sudo yum install -y yum-utils
#添加軟件yum源信息,提升國(guó)內(nèi)訪問速度
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#在更新yum源或者出現(xiàn)配置yum源之后,通常都會(huì)使用yum makecache 生成緩存
sudo yum makecache fast
#安裝docker ce (設(shè)置docker存儲(chǔ)庫(kù)并從中進(jìn)行安裝,以便安裝和升級(jí)任務(wù))
sudo yum -y install docker-ce
其它方式還有:
1.下載RPM軟件包并手動(dòng)安裝,并完全手動(dòng)管理升級(jí)。這對(duì)于在無法訪問互聯(lián)網(wǎng)的系統(tǒng)上安裝Docker等情況很有用。
2.使用自動(dòng)便利腳本來安裝Docker。
#設(shè)置docker開機(jī)自啟:
systemctl enable docker
#啟動(dòng)docker
sudo service docker start
docker info
執(zhí)行該命令之后,對(duì)于當(dāng)前的Docker服務(wù)狀況是沒有啟動(dòng)服務(wù)的,需要手動(dòng)啟動(dòng)Docker服務(wù);只有下次服務(wù)器重啟,就無需手動(dòng)啟動(dòng)Docker服務(wù)了
[參考]https://docs.docker.com/install/linux/linux-postinstall/#configure-docker-to-start-on-boot
#檢查docker版本
使用 docker version 命令
#運(yùn)行docker官方的hello world示例image來驗(yàn)證docker是否安裝成功
docker run hello-world
注:上面的命令含義:下載官方提供的用于測(cè)試使用的hello-world鏡像并將其運(yùn)行到容器中,來檢驗(yàn)Docker服務(wù)是否正常安裝并運(yùn)行。
執(zhí)行上面的命令之后,Docker會(huì)自動(dòng)下載hello-world鏡像并自動(dòng)運(yùn)行到容器中,當(dāng)命令行中出現(xiàn)“Hello from Docker!”的字樣,說明已經(jīng)成功運(yùn)行了hello-world鏡像,一切就OK了!
完整圖文示例可參考:http://config.net.cn/server/microservice/c295646a-b68a-48b6-a0a3-a3c829e6a64d-p1.html
? ?
? ?注:Docker支持運(yùn)行CentOS版本:CentOS 7.X
? ?5.1.內(nèi)核版本信息檢查
??$ uname -r
? ?5.2 卸載可能存在的舊版本
? ?$ yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine
? ?注:舊版本的docker叫做docker或者docker-engine,如果有安裝,先卸載其以及其依賴,新版本的docker叫做docker-ce
? ?docker-ce(社區(qū)版,免費(fèi))
? ?docker-ee(專業(yè)版,收費(fèi))
?? ? ?5.3 安裝必要的系統(tǒng)工具
?$ yum install -y yum-utils device-mapper-persistent-data lvm2
? ?
? ?注:安裝依賴軟件(yum-utils提供yum-config-manager包,用來管理yum配置文件;lv2和device-mapper-persistent-data為dockerdevicemapper存儲(chǔ)設(shè)備的必須依賴)
? ?5.4 添加docker-ce安裝源
? ?$ yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
? ?默認(rèn)開啟的是stable穩(wěn)定版?zhèn)}庫(kù),如果想要安裝test測(cè)試版或者是邊緣版本可使用如下命令開啟相關(guān)模式,關(guān)閉的話只需要將--enable參數(shù)換成--disable(可選)
? ?$ yum-config-manager --enable docker-ce-edge
? ?$ yum-config-manager --enable docker-ce-test
? ?5.5 更新yum緩存
? ?$ yum makecache fast
? ?5.6 安裝docker-CE ? ? ? ?$ yum -y install docker-ce
? ?注:
? ?1)默認(rèn)安裝的是最新版本的穩(wěn)定版
? ?2)查看版本列表請(qǐng)使用如下命令:
? ?
? ?$ yum list docker-ce --showduplicates | sort -r
? ?3)如果要安裝特定版本的docker-CE請(qǐng)使用如下命令格式:
??
? ?$ yum install docker-ce-<VERSION STRING>
? ?
? ?5.7 驗(yàn)證
?????5.7.1 查看docker服務(wù)是否啟動(dòng)
? ? ?$ systemctl status docker ? //查看運(yùn)行狀態(tài)
? ? ?5.7.2 啟停服務(wù)
? ? ?$ systemctl start docker ? ?//啟動(dòng)
? ? ?$ systemctl stop docker ? ? //停止
? ? ?$ systemclt restart docker ?//重啟? ? ?5.7.3 運(yùn)行第一個(gè)容器(經(jīng)典的hello world)
? ? ?$ docker run hello-world
? ? ?輸入以上命令后,窗口有輸出,表示docker安裝成功?
??
? ? ?注:查看docker的版本,第二個(gè)命令是詳細(xì)查看
? ? ? ? ?docker --version 或 docker info
6. 鏡像
? ?Docker 運(yùn)行容器前需要本地存在對(duì)應(yīng)的鏡像, 如果鏡像不存在, Docker 會(huì)嘗試先從默認(rèn)鏡像倉(cāng)庫(kù)下載
? (默認(rèn)使用 Docker Hub 公共注冊(cè)服務(wù)器中的倉(cāng)庫(kù)), 用戶也可以通過配置,使用自定義的鏡像倉(cāng)庫(kù)
? ?鏡像相關(guān)操作:
? ?6.1 配置加速器
國(guó)內(nèi)從Docker Hub下載鏡像速度很慢,我們可以配置阿里云專屬加速器來解決
? ? ?
? ? ?6.1.1 瀏覽器訪問并登陸阿里云(淘寶或支付寶帳號(hào)登陸也可以)
? ? ? ?https://www.aliyun.com/
? ?
? ? ?6.1.2 登陸后,進(jìn)入阿里云“控制臺(tái)”,搜索“容器鏡像服務(wù)”,然后點(diǎn)擊菜單:“鏡像中心”-->“鏡像加速器”
? ? ? ?最后,將容器右邊的“加速器地址”復(fù)制下來即可
? ? ? https://eq84exsu.mirror.aliyuncs.com(這里是我的加速器地址)? ? ?6.1.3 設(shè)置容器鏡像服務(wù)的密碼(可選)
? ? ? ?容器鏡像服務(wù)(Container Registry)提供多地域鏡像托管能力,穩(wěn)定的國(guó)內(nèi)外鏡像構(gòu)建服務(wù),便捷的鏡像授權(quán)功能,
? ? ? ?方便用戶進(jìn)行鏡像全生命周期管理。在開通流程中,您需要設(shè)置獨(dú)立于賬號(hào)密碼的Registry登錄密碼,便于鏡像的上傳、下載。
? ? ? ?注1:此步驟為可選,如果需要使用阿里云來管理你的鏡像 ,此步驟必須設(shè)置? ? ?6.1.4 修改docker相關(guān)配置
? ? ? ?
? ? ? ?$ mkdir -p /etc/docker
? ? ? ?添加下面內(nèi)容(地址替換成上面的加速器地址):
? ? ? ?$ tee /etc/docker/daemon.json <<-'EOF'
? ? ? ?{
? ? ? ? ? ?"registry-mirrors": ["我的阿里云專屬加速器地址"]
? ? ? ?}
? ? ? ?EOF
? ? ? ?注:在這里可以先將registry-mirrors換成自己的阿里云專屬加速器地址后,在復(fù)制到工具里面去執(zhí)行(方便)? ? ?6.1.5 重新加載daemon
? ? ? ?$ systemctl daemon-reload? ? ?6.1.6 重啟docker
? ? ? ?$ systemctl restart docker?
? ?6.2 搜索鏡像
? $ docker search 鏡像名稱
? ? ??例如:docker search mysql
? ?6.3 下載鏡像
????????$ docker pull 鏡像名
? ? ?例如, 獲取一個(gè) centos 系統(tǒng)的基礎(chǔ)鏡像可以使用如下的命令
? ? ?## 未指定版本一般會(huì)使用latest(最新的)版本
? ? ?$ docker pull centos
? ? ?## 或者直接指定版本
? ? ?$ docker pull centos:版本號(hào)
? ?6.4 查看宿主機(jī)上的鏡像
? ? ?$ docker images
? ? ?注1:查看image位置
? ? ? ? ?
## /var/lib/docker為docker默認(rèn)安裝目錄
? ? ? ? ? cd /var/lib/docker/containers?
? ? ? ? ? ls
? ?6.5 刪除鏡像
? ? ?$ docker rmi 鏡像ID/標(biāo)簽
? ? ?
? ? ?例如:
? ? ?$ docker rmi 2ca708c1c9cc
? ? ?$ docker rmi centos:latest 或 docker rmi centos:版本號(hào)
? ? ?注1:如果提示鏡像被使用,需要先停止某個(gè)ID的容器,那么要先刪除容器再刪除鏡像?;蛘邚?qiáng)制刪除鏡像
? ? ? ? ? $ docker rmi -f centos:版本號(hào)?
? ? ? ? ? -f, -force: 強(qiáng)制刪除鏡像, 即使有容器依賴它
? ? ? ? ? 注意, 通常并不推薦使用-f參數(shù)來強(qiáng)制刪除一個(gè)存在容器依賴的鏡像。 正確的做法是,
? ? ? ? ? 先刪除依賴該鏡像的所有容器, 再來刪除鏡像
? ?6.6 保存鏡像
? ? ?$ docker commit -m="description about images" --author="author" {container_id} ?{repository/images_name:tag}
? ?6.7 推送鏡像到代碼倉(cāng)庫(kù)(以阿里云docker平臺(tái)為例)
? ? ?$ docker login --username=your_username registry.cn-beijing.aliyuncs.com
? ? ?$ docker tag [ImageId] registry.cn-beijing.aliyuncs.com/[命名空間]/[倉(cāng)庫(kù)名稱]:[鏡像版本號(hào)]
? ? ?$ docker push registry.cn-beijing.aliyuncs.com/[命名空間]/[倉(cāng)庫(kù)名稱]:[鏡像版本號(hào)]
? ?6.8 使用Dockerfile創(chuàng)建新的鏡像(注意:末尾有一個(gè)點(diǎn),表示當(dāng)前路徑)
? ? ?$ docker build -t "repository/images_name:tag" . ?
7. Docker容器
? ?容器是Docker的另一個(gè)核心概念。簡(jiǎn)單來說,容器是鏡像的一個(gè)運(yùn)行實(shí)例。所不同的是,
? ?鏡像是靜態(tài)的只讀文件,而容器帶有運(yùn)行時(shí)需要的可寫文件層,同時(shí),容器中的應(yīng)用進(jìn)程處于運(yùn)行狀態(tài)
? ?如何理解:類->實(shí)例,鏡像->容器
? ?常用操作
? ?7.1 啟動(dòng)、停止、重啟容器命令
? ? ?$ docker start 容器ID或name
? ? ?$ docker stop 容器ID或name
? ? ?$ docker restart 容器ID或name?
? ?7.2 查看當(dāng)前運(yùn)行的容器
? ???$ docker ps
? ?7.3 查看所有容器
? ? ?$ docker ps -a
? ?7.4 刪除容器
? ? ?$ docker rm 容器ID/容器NAME
? ? ?注1:主要支持的選項(xiàng)包括
? ? ? ? ? -f, --force=false 是否強(qiáng)行終止并刪除一個(gè)運(yùn)行中的容器
? ? ? ? ? -1, --link=false :刪除容器的連接 ,但保留容器;
? ? ? ? ? -v, --volumes=false :刪除容器掛載的數(shù)據(jù)卷
? ? ?注2:刪除容器,還可以參考附錄三,可根據(jù)條件刪除
? ?7.5 創(chuàng)建容器(重點(diǎn))
? ? ?$ docker create -it centos:latest?
? ? ?$ docker create -it --name tomcat01 centos:latest
? ? ?注1:命令說明
? ? ? ? ? create:關(guān)鍵字
? ? ? ? ? centos:latest:即鏡像名字:版本(或鏡像ID),將使用指定鏡像創(chuàng)建容器。另外,Docker會(huì)檢查本地是否存在指定的鏡像,
? ? ? ? ? ? ? ? ? ? ? ? ?不存在就從公有倉(cāng)庫(kù)下載
? ? ? ? ? -it:是兩個(gè)參數(shù),-i:interactive容器具有交互功能,-t:容器將提供偽終端
? ? ? ? ? --name:指定生成的容器的名字,允許空,如果不指定會(huì)自動(dòng)生成? ? ?注2:此時(shí),通過如下命令,可以查看到剛剛創(chuàng)建的容器
? ? ? ? ? $ docker ps - a
? ? ?注3:create命令新建的容器處于停止?fàn)顟B(tài),可以使用start命令來啟動(dòng)它
? ? ? ? ? $ docker start 容器ID
? ? ?注4:docker容器狀態(tài)可參考“images/docker容器狀態(tài)轉(zhuǎn)換圖.png”(重點(diǎn)~~~重點(diǎn)~~~重點(diǎn)~~~)
? ?7.6 啟動(dòng)容器(重點(diǎn))
? ? ?$ docker start 容器ID/name
? ? ?
? ? ?注2:docker ps 查看已啟動(dòng)容器,注意:此時(shí)容器狀態(tài)為UP
? ?7.7 進(jìn)入容器(重點(diǎn))
? ? ?$ docker exec -it 容器ID/容器NAME /bin/bash
? ? ?## 簡(jiǎn)寫
? ? ?$ docker exec -it 容器ID/容器NAME bash
??
? ? ?注1:只有在容器啟動(dòng)的時(shí)候即UP狀態(tài)才能進(jìn)入容器終端
? ?7.8 創(chuàng)建\啟動(dòng)\進(jìn)入容器(run=create+start)
? ? ?
? ? ?## 新建->啟動(dòng)->進(jìn)入容器
? ? ?$ docker run -it centos:latest /bin/bash
? ? ?## 指定了端口號(hào)
? ? ?$ docker run -it -p 7001:8001 centos:latest /bin/bash?
? ? ?## 使用 -P 標(biāo)記時(shí),Docker 會(huì)隨機(jī)映射一個(gè) 49000~49900 的端口 ? ??
? ? ?$ docker run -it -P --name tomcat03 centos:latest /bin/bash
? ? ?## 此命令沒有進(jìn)入容器,可以之后再進(jìn)入
? ? ?更多的時(shí)候,需要讓 Docker 容器在后臺(tái)以守護(hù)態(tài)( Daemonized )形式運(yùn)行 此時(shí),可以通過添加-d參數(shù)來實(shí)現(xiàn):
? ? ?$ docker run -it -d --name webapp centos:latest?
? ? ?$ docker exec -it webapp /bin/bash ?
? ? ?參數(shù)說明:
? ? ?-p:端口映射,格式為:主機(jī)(宿主)端口:容器端口
? ? ?-P: 注意是大寫P,使用 -P 標(biāo)記時(shí),Docker 會(huì)隨機(jī)映射一個(gè) 49000~49900 的端口
? ? ?-d:后臺(tái)運(yùn)行模式
? ? ?--name:容器的名字
? ?7.9 退出容器
? ? ?退出時(shí)如果想繼續(xù)運(yùn)行容器:按順序按【ctrl+p】,【ctrl+q】
? ? ?如果不想繼續(xù)運(yùn)行:按【ctrl+d】或輸入exit
? ?7.10 宿主機(jī)和docker容器之間復(fù)制文件
? ? ?$ docker cp 宿主機(jī)絕對(duì)路徑 ?容器id:路徑
? ? ? ? ? ? ? ? 8. 查看Docker容器內(nèi)部信息
? ?8.1 進(jìn)入容器內(nèi)部獲取信息
docker exec -it 容器ID/容器NAME /bin/bash
? ? ?如果此時(shí)已進(jìn)入容器內(nèi)部,可分別執(zhí)行hostname、ip addr、env這三個(gè)命令可以獲取相關(guān)信息
? ?8.2 在宿主機(jī),執(zhí)行docker exec命令
? ? ?獲取容器的hostname:docker exec 容器ID/容器NAME hostname
? ? ?獲取容器ip地址:docker exec 容器ID/容器NAME ip addr
? ? ?獲取容器環(huán)境變量:docker exec 容器ID/容器NAME env
? ?8.3 在宿主機(jī),使用docker inspect命令
? ? ?推薦使用docker inspect來獲取信息,這個(gè)命令會(huì)返回一個(gè)json字符串,里面以key-value的格式準(zhǔn)備了該容器相關(guān)的信息,
? ? ?內(nèi)容十分豐富,可以一次性取得全部?jī)?nèi)容,也可以返回指定key對(duì)應(yīng)的信息
? ? ?docker inspect 容器ID/容器NAME? ? ?如果我們只對(duì)其中的一些感興趣,例如hostname、ip地址、環(huán)境變量,該如何查看呢
? ? ?查看數(shù)據(jù)所在節(jié)點(diǎn),根據(jù)節(jié)點(diǎn)位置編寫命令,例如:
? ? ?hostname位于Config.Hostname這個(gè)節(jié)點(diǎn)位置,所以執(zhí)行命令docker inspect -f {{.Config.Hostname}} tomcat001即可獲取到hostname ?
補(bǔ)充
附錄一:英文
Registry: 登錄;域名注冊(cè)局;注冊(cè)局;注冊(cè)表項(xiàng);注冊(cè)機(jī)構(gòu)
pull:拉
附錄二:如何卸載原先安裝的 docker
1.移除docker:
? $ yum remove docker-ce2.刪除Docker安裝目錄
? $ rm -rf /var/lib/docker3.驗(yàn)證是否刪除成功
? docker info?
??
? bash: /usr/bin/docker: No such file or directory
? 我們可以看到已經(jīng)無法找到 docker 安裝目錄,證明 卸載成功 ?
附錄三:關(guān)于刪除容器
方法一:
#顯示所有的容器,過濾出Exited狀態(tài)的容器,取出這些容器的ID, $ sudo docker ps -a|grep Exited|awk '{print $1}' #查詢所有的容器,過濾出Exited狀態(tài)的容器,列出容器ID,刪除這些容器 $ sudo docker rm `docker ps -a|grep Exited|awk '{print $1}'`
方法二:?#刪除所有未運(yùn)行的容器(已經(jīng)運(yùn)行的刪除不了,未運(yùn)行的就一起被刪除了) $ sudo docker rm $(sudo docker ps -a -q)
方法三:
#根據(jù)容器的狀態(tài),刪除Exited狀態(tài)的容器 $ sudo docker rm $(sudo docker ps -qf status=exited)
方法四:
?文章來源:http://www.zghlxwxcb.cn/news/detail-415793.html#Docker 1.13版本以后,可以使用 docker containers prune 命令,刪除孤立的容器。 $ sudo docker container prune ?(推薦)
附錄四:docker常用命令(不斷補(bǔ)充中)
1.docker查看容器的cpu占用率
? docker stats文章來源地址http://www.zghlxwxcb.cn/news/detail-415793.html
到了這里,關(guān)于Docker三大核心概念(鏡像、容器和倉(cāng)庫(kù))與虛擬化的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!