個(gè)人博客:haichenyi.com。感謝關(guān)注
簡(jiǎn)介
??Docker 是一個(gè)開(kāi)源的應(yīng)用容器引擎,基于 Go 語(yǔ)言 并遵從Apache2.0協(xié)議開(kāi)源。
Docker 可以讓開(kāi)發(fā)者打包他們的應(yīng)用以及依賴包到一個(gè)輕量級(jí)、可移植的容器中,
然后發(fā)布到任何流行的 Linux 機(jī)器上,也可以實(shí)現(xiàn)虛擬化。
??容器是完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口,更重要的是容器性能開(kāi)銷極低。
??我們spring boot項(xiàng)目,什么地方需要用到dockers呢?我們最后項(xiàng)目發(fā)布,發(fā)到服務(wù)器上面,環(huán)境怎么搭建?如果就用Linux命令會(huì)很麻煩,用Docker,簡(jiǎn)單的幾行命令就可以了。
??服務(wù)器其實(shí)就是一個(gè)操作系統(tǒng),我們的項(xiàng)目跑在上面也是需要環(huán)境的,我們本地是windows系統(tǒng),跑項(xiàng)目需要環(huán)境,服務(wù)器現(xiàn)在一般都是centOS系統(tǒng),當(dāng)然也需要環(huán)境。
核心概念
- docker鏡像(images):Docker鏡像用于創(chuàng)建Docker容器的模板
- docker容器(container):Docker容器是獨(dú)立運(yùn)行的一個(gè)或者一組應(yīng)用
- docker客戶端(client):客戶端通過(guò)命令或者其他工具一起使用docker api與docker守護(hù)進(jìn)程
- docker主機(jī)(host):一個(gè)物理或者虛擬的機(jī)器用于執(zhí)行docker守護(hù)進(jìn)程和容器
- docker倉(cāng)庫(kù)(registry):docker倉(cāng)庫(kù)用來(lái)保存鏡像,可以理解為代碼控制中的代碼倉(cāng)庫(kù)。docker hub提供了龐大的鏡像集合供使用
??舉個(gè)例子,我們一般操作流程是這樣的:
- 先用VirtualBox啟動(dòng)一個(gè)虛擬機(jī),啟動(dòng)的是centOS系統(tǒng),裝上docker程序(docker主機(jī))。這個(gè)對(duì)應(yīng)的就是我們項(xiàng)目最后發(fā)布的服務(wù)器。
- 然后,用SecureCRT連上我們這個(gè)虛擬機(jī)。(docker客戶端)。
- 接著,通過(guò)docker從docker 倉(cāng)庫(kù)中下載我們需要的鏡像,比方說(shuō):mysql鏡像,redis鏡像等等。
- 最后,啟動(dòng)這個(gè)鏡像,就相當(dāng)于創(chuàng)建一個(gè)容器。啟動(dòng)鏡像,就相當(dāng)于配置好了環(huán)境。比方說(shuō):?jiǎn)?dòng)一個(gè)mysql鏡像,就相當(dāng)于創(chuàng)建了一個(gè)mysql容器,就可以用mysql數(shù)據(jù)庫(kù)了??梢詥?dòng)的那個(gè)多個(gè)鏡像,并且,每個(gè)鏡像都是獨(dú)立運(yùn)行的,互不干擾(沙箱機(jī)制)。
Docker安裝
查看centOS版本:
//docker要求CentOS系統(tǒng)內(nèi)核版本要高于3.10
uname -r
升級(jí)軟件包及內(nèi)核:
//因?yàn)?,我們安裝的docker是最新版本的
//但是,內(nèi)核版本低可能不兼容,所以,要更新
//如果,后面安裝成功之后,啟動(dòng)的時(shí)候出錯(cuò),那么就先卸載docker,更新內(nèi)核
//重啟之后,再重新安裝docker就行了
yum update
安裝docker
yum install docker
卸載docker
yum remove docker-*
啟動(dòng)docker
systemctl start docker
將docker作為開(kāi)機(jī)啟動(dòng)
systemctl enable docker
常用操作
| 名稱 | 命令 | 說(shuō)明 |
|---|---|---|
| 檢索 | docker search 關(guān)鍵字(eg:docker search redis) | 我們經(jīng)常去docker hub上檢索鏡像的詳細(xì)信息,不用再本地敲命令搜索。如鏡像的TAG |
| 拉取 | docker pull 鏡像名:tag | :tag是可選的,tag表示標(biāo)簽,多為軟件的版本,默認(rèn)是latest版本 |
| 列表 | docker images | 查看所有本地鏡像 |
| 刪除 | docker rmi image-id | 刪除指定的本地鏡像,鏡像id可以通過(guò)列表查看 |
| 運(yùn)行 | docker run -d --name 自定義名字 安裝的容器名字(eg:docker run –d –name myredis redis) | --name:自定義容器名 -d:后臺(tái)運(yùn)行 |
| 列表 | docker ps(查看運(yùn)行中的容器) | 加上-a;可以查看所有容器 |
| 停止 | docker stop container-name/container-id | 停止當(dāng)前你運(yùn)行的容器 |
| 啟動(dòng) | docker start container-name/container-id | 啟動(dòng)容器 |
| 刪除 | docker rm container-id | 刪除指定容器 |
| 端口映射 | -p 6379:6379 | -p: 主機(jī)端口(映射到)容器內(nèi)部的端口 |
| 容器日志 | docker logs container-name/container-id |
PS:我們docker run的時(shí)候一般都是跟上端口映射,不然訪問(wèn)不到。