Docker:第一章:Docker入門和深入理解
- 一、Docker 入門
- 1.1、軟體開發面臨的問題
- 1.2、docker
- 1.3、應用場景及理念
- 1.4、Docker架構
- 1.5 、 Docker 組 件 or Base Concepts
- 1.5.1、What is Image?
- 1.5.2、Where is Images?
- 1.5.3、What is Container?
- 1.5.4 、 Relation between image and container
- 1.5.5 、View from docs
- 1.5.6 、Repository 與 Registry(倉庫注冊中心)
- 1.6 、CentOS7 安裝 docker
- 1.6.1 、安裝需要的軟體包
- 1.6.2 、設定 docker 下載鏡像
- 1.6.3 、更新 yum 軟體包索引
- 1.6.4 、安裝 DOCKER CE
- 1.6.5、啟動 docker
- 1.6.6、版本驗證
- 1.7、docker卸載
- 1.8、容器鏡像服務
- 1.8.1 、什么是容器鏡像服務
- 1.8.2 、登錄阿里云
- 1.8.3 、開通容器鏡像服務
- 1.8.4 、獲取加速地址
- 1.9 、hello-world
- 1.9.1 、運行 hello-world 程式
- 1.9.2 、運行流程如下
一、Docker 入門
1.1、軟體開發面臨的問題
我們的程式首先在開發環境開發,然后需要部署到測驗環境交給測驗人員測驗, 最后需要由運維人員部署到生產環境正式運行,在這個程序中任何一個環境如果和其他環境不一致,則會出現開發階段能運行的程式在測驗階段或生產階段不能夠正常運行,這就是軟體跨環境遷移問題,

JavaEE 程式依賴的基礎環境:JDK、tomcat、資料庫、中間件、作業系統、組態檔(代碼配置、JDK 配置、tomcat 配置、作業系統配置)…
Docker 可以讓開發者構建應用程式時,將應用程式與其所依賴的環境一起打包到一個容器中,然后交付整個環境而不僅僅是代碼,這樣一個帶環境的程式包就是一個容器,容器可以解決軟體跨環境遷移的問題,

1.2、docker

![]() | |
Docker 借鑒了標準集裝箱的概念,標準集裝箱將貨物運往世界各地,Docker 將這個模型運用到自己的設計中,唯一不同的是:集裝箱運輸貨物,而 Docker 運輸軟體,
Docker 是基于 Go 語言實作的開源容器引擎,供開發人員和系統管理員 使用容器構建,運行和共享應用程式的平臺,使用容器來部署應用程式稱為容器化,容器并不是新事物,但用于輕松部署應用程式的容器卻是新事物,簡而言之,Docker 就是為了解決開發、運維、測驗人員環境不一致、簡化環境搭建、遷移、部署而提出的:容器化技術,
怎么理解 Docker 是容器化技術呢?

容器化技術的特點:
標準化:每個容器都是標準化、可移植的,因為他們直接運行在宿主機的內核上隔離:容器互相隔離,互不干擾,獨立運行
高性能:容器性能開銷極低,可以實作分鐘級甚至秒級的部署和啟動
版本:CE(Community Edition:社區版)和 EE(Enterprise Edition:企業版)
1.3、應用場景及理念
微服務領域:有助于 Microservices 的落地和部署
隔離應用: 充分利用物理機資源,同時能夠整合服務器資源(隔離應用、在同一硬體上運行更多作業負載)
快速、一致地交付您的應用程式:提高開發效率,測驗效率,部署效率,有利于
DevOps 的落地,CICD
Docker 理念:Build,Ship and Run Any App,Anywhere,在任何地方構建、發布并運行任何應用程式(一次封裝,到處運行)
1.4、Docker架構

docker 由三部分組成:Client 客戶端、docker 主機、Registry 鏡像倉庫服務器
? docker 主機:
docker daemon:docker 安裝后,會以后臺運行、守護行程的形式存在
images 鏡像: 鏡像可以用來創建 docker 容器,一個鏡像可以創建很多容器
containers: 鏡像和容器的關系類似面向物件設計中的類和物件, 鏡像是容器的模板,容器是基于鏡像創建出來的,容器可以被創建、啟動、停止、洗掉等等,
注意:Docker 鏡像(Image)就是一個只讀的模板!即不可以修改鏡像,
? Registry:鏡像注冊服務器 https://hub.docker.com
一個 docker Registry(倉庫注冊服務器) 中可以包含多個 Repository(倉庫);每個倉庫可以包含多個標簽/版本(Tag);每個標簽對應一個鏡像,
倉庫分為公開倉庫(Public)和私有倉庫(Private)兩種形式,公開倉庫就是
docker 官方倉庫,私有倉庫是自己搭建的 docker 私服
? Client:docker 終端
安裝好 docker 中,同時包含了 docker 客戶端,客戶端負責執行 docker 命令, 發送給 docker 主機中的 docker 守護行程,例如:從倉庫下載鏡像,通過鏡像創建 容 器 等 等 ,
1.5 、 Docker 組 件 or Base Concepts
1.5.1、What is Image?
A Docker container image is a lightweight, standalone, executable package of software that includes everything needed to run an application: code, runtime, system tools, system libraries and settings.
鏡像是構建在 Docker 的基石,用戶基于鏡像來運行自己的容器,也可以將鏡像當做容器的”源代碼”,鏡像是由一系列指令一步一步 構建出來,Docker 鏡像
(Image)就是一個只讀的模板,鏡像可以用來創建 Docker 容器,一個鏡像可以創建很多容器,Docker 鏡像可以看作是一個特殊的檔案系統,除了提供容器運行時所需的程式、庫、資源、配置等檔案外,還包含了一些為運行時準備的一些配置引數(如匿名卷、環境變數、用戶等),鏡像不包含任何動態資料,其內容在構建之后也不會被改變,
1.5.2、Where is Images?

docker pull 在哪拉取的鏡像? 默認是在 hub.docker.com
docker pull tomcat 拉取的版本是?默認是最新的版本,可以在后面指定版本
1.5.3、What is Container?

A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another.
Docker 利用容器(Container)獨立運行的一個或一組應用,容器是用鏡像創建的運行實體,它可以被啟動、開始、停止、洗掉,每個容器都是相互隔離的、保證安全的平臺,
![]() |
官方檔案參考: https://www.docker.com/resources/what-container
1.5.4 、 Relation between image and container
Container images become containers at runtime and in the case of Docker containers- images become containers when they run on Docker Engine.

1.5.5 、View from docs
A container is launched by running an image. An image is an executable package that includes everything needed to run an application–the code, a runtime, libraries, environment variables, and configuration files. A container is a runtime instance of an image–what the image becomes in memory when executed (that is, an image with state, or a user process). You can see a list of your running containers with the command, docker ps, just as you would in Linux.
1.5.6 、Repository 與 Registry(倉庫注冊中心)
倉庫(Repository)是集中存放鏡像檔案的場所,倉庫(Repository)和倉庫注冊中心(Registry)是有區別的,倉庫注冊中心服務器上往往存放著多個倉庫,每個倉庫中又包含了多個鏡像,每個鏡像有不同的標簽(tag),標簽就是對應軟體的各個版本,
倉庫注冊中心分為公開倉庫(Public)注冊中心和私有倉庫(Private)注冊中心 兩 種 形 式 , 最 大 的 公 開 倉 庫 注 冊 中 心 是 Docker
Hub(https://hub.docker.com/),存放了數量龐大的鏡像供用戶下載,國內的公開倉庫注冊中心包括阿里云 、網易云等

1.6 、CentOS7 安裝 docker
官 網 : [http://www.docker.com]
安裝手冊:https://docs.docker.com/install/linux/docker-ce/centos(CE-社區版)
1.6.1 、安裝需要的軟體包
yum-utils 提 供 了 yum-config-manager 相 關 功能,device-mapper-persistent-data 和 lvm2 是設備映射器驅動程式所需要的,
yum install -y yum-utils device-mapper-persistent-data lvm2
1.6.2 、設定 docker 下載鏡像
docker 官方下載地址:
yum-config-manager \
--add-repo https://download.docker.com/linux/centos/docker-ce.repo
推薦阿里云下載地址(推薦)
yum-config-manager \
--add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
1.6.3 、更新 yum 軟體包索引
我們在更新或配置 yum 源之后,通常都會使用 yum makecache 生成快取,這個命令是將軟體包資訊提前在本地快取一份,用來提高搜索安裝軟體的速度
yum makecache fast
1.6.4 、安裝 DOCKER CE
yum install -y docker-ce docker-ce-cli containerd.io
如果報錯,重新執行安裝一次
1.6.5、啟動 docker
systemctl start docker
systemctl enable docker #設定開機自啟動
1.6.6、版本驗證
docker version
1.7、docker卸載
systemctl stop docker yum remove -y docker-ce rm -rf /var/lib/docker
1.8、容器鏡像服務
1.8.1 、什么是容器鏡像服務
從 docker 的官方鏡像倉庫服務器上下載 docker 的鏡像速度很慢,因此我們可以配置國內的容器鏡像服務,提升 docker 鏡像的下載速度,
如:阿里云 騰訊云 網易云
1.8.2 、登錄阿里云
1.8.3 、開通容器鏡像服務
搜索“容器鏡像服務”

1.8.4 、獲取加速地址

1.9 、hello-world
1.9.1 、運行 hello-world 程式
docker run hello-world: 以鏡像為模板創建 docker 容器并運行

1.9.2 、運行流程如下

本人親自推薦閱讀推薦
Docker 極簡入門指南:
https://gitbook.cn/gitchat/column/5a13be9775462408e0da8d9d
深入淺出 Docker 技術堆疊實踐:
https://gitbook.cn/gitchat/column/59e464726958416d85ae9207
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/234861.html
標籤:其他


