【玩轉Docker容器 1】Docker的詳解及安裝


推薦個人Docker文章,講的非常詳細

【玩轉Docker容器 1】Docker的詳解及安裝
【玩轉Docker容器 2】基於Docker一分鐘搭建完 Jdk、Mysql、Nginx、Redis、Tomcat環境
【玩轉Docker容器 3】基於Docker部署SpringBoot項目
【玩轉Docker容器 4】基於Docker搭建Docker私服,以及如何使用Docker私服詳解
【玩轉Docker容器 5】基於Docker搭建Maven私服,以及項目如何使用Maven私服詳解
【玩轉Docker容器 6】基於Docker構建GitLab管理代碼
【玩轉Docker容器 7】基於Docker安裝Jenkins實現自動化構建、部署、測試、監控項目

1.Docker-簡介

Docker官方網址: https://docs.docker.com/ 英文地址
Docker中文網址: http://www.docker.org.cn/ 中文地址

Docker是基於Go語言實現的雲開源項目,誕生於2013年初,最初發起者是dotClouw公司。Docker 自開源後受到廣泛的關注和討論,目前已有多個相關項目,逐斷形成了圍Docker的生態體系。dotCloud 公司後來也改名爲Docker Ine。
在這裏插入圖片描述
Docker是一個開源的容器引擎,它有助於更快地交付應用。 Docker可將應用程序和基礎設施層隔離,並且能將基礎設施當作程序一樣進行管理。使用 Docker可更快地打包、測試以及部署應用程序,並可以縮短從編寫到部署運行代碼的週期。

2.爲什麼要使用Docker

在我們開發和運維的過程中,我們經常要給Linux服務器上安裝各種各樣的環境,比如我們要安裝MySQL、Redis、Tomcat等環境,那麼以及我們是如何給Linux服務器安裝這些環境呢?如果安裝MySQL我們就要去MySQL官網下載MySQL的linux版安裝包,安裝好後再進行相關的環境配置,然後使用類似的方式安裝Redis、Tomcat等環境,如此Linux中環境的搭建就暫告一段落。有一天,如果我們又要去另外一臺linux服務器上安裝MySQL、Redis、Tomcat等環境,那麼我們又要老路子走一遍,這樣還是太麻煩了。那麼有沒有更便捷的方式呢?有,那就是使用Docker。

Docker它是支持將你已經安裝並配置好後的環境(如MySQL),打包進行一個鏡像文件如MySQL-Docker鏡像。比如張三將自己安裝並配置好的MySQL打包成一個鏡像文件,如果李四想給自己的Linux服務器安裝MySQL,那麼他只要在自己的Linux服務器安裝了Docker,然後使用Docker運行張三打包的MySQL鏡像文件,最後產生MySQL容器。使用這種方式我們就可以快速將Linux服務器的環境給搭建好。

3.總結

Docker支持將軟件編譯成一個鏡像;然後在鏡像中各種軟件做好配置,將鏡像發佈出去,其他使用者可以直接使用這個鏡像;

運行中的這個鏡像稱爲容器,容器啓動是非常快速的。而且現在各大雲計算平臺都支持Docker容器技術,如百度雲,阿里雲,騰訊雲。所以我們很有必要將Docker學習一下。

總之Docker實現可以方便快捷安裝環境,以及快捷的打包、測試以及部署應用程序

例如使用Docker可實現秒級的安裝mysql、jdk等環境,例如我之前的文章安裝mysql等是非常複雜的,要配置各種東西,使用Docker可完全簡化安裝(自定義的配置就需要自己動手啦)

4.Docker-核心概念

在這裏插入圖片描述
1.docker主機(Host):安裝了Docker程序的機器(Docker直接安裝在操作系統之上);

如上圖所示,local host是本機,即在本機安裝Docker程序,這個本機就爲docker主機,另外我們也可以在remote host遠程機器上安裝Docker程序。Docker主機是可以運行Docker鏡像生成Docker容器。

2.docker客戶端(Client):客戶端通過命令行或其他工具連接docker主機進行操作;類似於我們使用SQLyog客戶端連接MySQL服務器進行操作MySQL。

3.docker倉庫(Registry):用來保存各種打包好的軟件鏡像;

4.docker鏡像(Images):軟件打包好的鏡像;放在docker倉庫中;

5.docker容器(Container):鏡像啓動後的實例稱爲一個容器;容器是獨立運行的一個或一組應用。

基本流程:如Docker倉庫中有張三配置好後的MySQL、Nginx、Tomcat、Redis鏡像,這時我們把這些個鏡像下載到local host本機,然後使用Docker命令去行動這些個鏡像,鏡像運行完後就會生成對應的容器。比如我們到Docker倉庫中下載MySQL鏡像,到local host本機,然後再使用Docker命令運行這個MySQL鏡像,運行完後就會啓動一個MySQL容器(就好比啓動了一個MySQL)。
docker容器(Container):鏡像啓動後的實例稱爲一個容器;容器是獨立運行的一個或一組應用。

5.Docker的使用步驟

  1. 安裝Docker

  2. 去Docker倉庫找到這個軟件對應的鏡像(等於應用市場,下載安裝包)
    (可以是公共鏡像也可以是自己私有的鏡像文件);

  3. 使用Docker運行這個鏡像,這個鏡像就會生成一個Docker容器(等於安裝軟件)
    (每個容器是獨立的,等於每個軟件都是獨立的)

  4. 對容器的啓動停止就是對軟件的啓動停止;

  5. 或者創建自定義項目鏡像,上傳至Docker Bub倉庫去,給自己或別人下次使用

總之Docker的目的就是一次構造處處運行

6.Docker架構

在這裏插入圖片描述
DOCKER-HOST(宿主機,一般爲Linux)
可通與 Docker客戶端之間進行通信。

Client( Docker客戶端)
Docker客戶端是 Docker的用戶界面,它可以接受用戶命令與 Docker daemon通信。圖中, docker build、docker pull、docker run等都是 Docker的相關命令。

Images( Docker鏡像)
Docker鏡像是一個只讀模板,它包含創建 Docker容器的說明。它和系統安裝光盤有點像,使用系統安裝光盤可以安裝系統,同理,使用Docker鏡像可以運行 Docker鏡像中的程序。

Containers(容器集合,裏面包含多個容器)
容器是鏡像的運行實例,一個容器可以稱爲一個應用程序

Registry
Docker Registry是一個集中存儲與分發鏡像的服務。可以稱之爲應用市場,構建完 Docker鏡像後,就可在當前宿主機上運行。但如果想要在其他機器上運行這個鏡像,就需要手動複製。此時可藉助 Docker Registry來避免鏡像的手動複製。

一個 Docker Registry可包含多個 Docker倉庫,每個倉庫有可包含多個鏡像(Images)標籤,每個鏡像(Images)又可運行成一個容器示例。


2.Linux上安裝docker

Docker 是一個開源的商業產品,有兩個版本:社區版(Community Edition,縮寫爲 CE)和企業版(Enterprise Edition,縮寫爲 EE)。企業版包含了一些收費服務,個人開發者一般用不到

Docker 要求 CentOS 系統的內核版本在 3.10以上 ,查看本頁面的前提條件來驗證你的CentOS 版本是否支持 Docker 。

1、通過 uname -r 命令查看你當前的內核版本

uname -r

在這裏插入圖片描述

2、 使用 root 權限登錄,一定要是root權限。確保 yum 包更新到最新

yum -y update

這個有可能要等一會 問題不大
在這裏插入圖片描述

3、 如果安裝過舊版本的話,先卸載舊版本(沒有跳過)

yum remove docker docker-common docker-selinux docker-engine

4、 安裝依賴

爲了防止報錯,yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的

yum install -y yum-utils device-mapper-persistent-data lvm2

在這裏插入圖片描述

5、 設置yum源

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

在這裏插入圖片描述

6、 可以查看所有倉庫中所有docker版本,並選擇特定版本安裝

yum list docker-ce --showduplicates | sort -r

在這裏插入圖片描述

7、 安裝docker

sudo yum install -y docker-ce    		#安裝的是最新穩定版

在這裏插入圖片描述

8、 啓動並加入開機啓動

systemctl start docker
systemctl enable docker

在這裏插入圖片描述

9、 驗證安裝是否成功(有client和service兩部分表示docker安裝啓動都成功了)

docker version

在這裏插入圖片描述
成功!

3.Docker常用命令

Docker基本命令

docker version (查看版本)
systemctl start docker (啓動Docker)
systemctl restart docker (重啓Docker)
systemctl stop docker (停止Docker)

卸載docker
1、查詢docker安裝過的包:
yum list installed | grep docker
2、刪除安裝包
yum remove docker-ce.x86_64 docker-ce-cli.x86_64 -y
3、刪除鏡像/容器等
rm -rf /var/lib/docker
在這裏插入圖片描述

Docker鏡像基本命令

docker search 鏡像名稱(搜索鏡像,去docker hub上檢索鏡像的詳細信息)
docker pull 鏡像名:tag (拉去鏡像,:tag是可選的,tag爲版本,默認是latest)
docker images (查看鏡像文件)
docker rmi 鏡像id (刪除鏡像)

Docker容器基本命令

docker ps (查看正在運行的容器)
docker ps –a (查看所有的容器)
docker rm 容器id (刪除容器)
docker logs 容器id/容器名稱 (查看容器運行日誌)
docker exec -it 容器id bash (進入容器)
exit (退出容器)

Docker的啓動命令,docker run 與docker start的區別

註釋:docker run相當於執行了兩步操作:將鏡像放入容器中(docker create),然後將容器啓動,使之變成運行時容器(docker start)。

docker run --name 自定義容器名 -d 鏡像模板
(示例:docker run --name redis -d redis。 -d 表示爲後臺運行,不加-d默認爲前臺啓動)
docker stop 容器id 或者容器名稱 (停止當前你運行的容器)
docker start 容器id 或者容器名稱(啓動容器)

Docker 的端口映射

端口映射,因爲Docker容器和Linux系統的端口一個在內一個在外,所以要映射到外部Linux系統的端口上,如果不映射就只能在容器中使用

-p 6379:6379
示例:docker run -d -p 6379:6379 --name redis

第一個端口號爲Linux的端口號,第二個端口號爲容器內部的端口號

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章