1. 程式人生 > >Docker 介紹和安裝(一)

Docker 介紹和安裝(一)

Build,Ship,and Run Any App, AnyWhere

Docker 是一種核心級別的虛擬化技術。實現,一次建立和或配置,在任何地方、任何時間執行的目的。

中文社群

優勢:

  • 更快速的交付和部署;
  • 更高效的資源利用;
  • 更輕鬆的遷移和擴充套件;
  • 更簡單的更新管理

同虛擬機器相比:

  1. Docker 啟動更快
  2. 對系統資源需求很少
  3. 借鑑 Git 的設計理念來方便使用者的獲取、分發和更新應用映象,儲存複用,增量更新
  4. 支援 Dockerfile 支援靈活的自動化建立和部署機制,以提高效率和標準化流程
特性 Docker 虛擬機器
啟動速度 秒級 分鐘級
效能 接近原生 較弱
記憶體代價 很小 較多
硬碟使用 一般MB 一般Gb
執行密度 單機支援上千個 一般十幾個
隔離性 安全隔離 完全隔離
遷移性 優秀 一般

虛擬化技術的分類: 硬體層面虛擬化(很少)和軟體層面的虛擬化。軟體層面的虛擬化可以繼續細分為:1、完全虛擬化;2、硬體輔助虛擬化;3、部分虛擬化;4、超虛擬化;5、作業系統級虛擬化。

Docker 屬於作業系統級虛擬化,內容通過建立多個虛擬化作業系統例項(核心和庫)來隔離不同的程序。

Docker和常見的虛擬化不同之處

Docker 中的三個核心概念

映象(Image)、容器(Container)和倉庫(Repository)

映象

映象和容器的關係可以理解為Java中類和物件的關係。Docker 映象類似於虛擬機器中的映象(ISO檔案),是建立 Docker 的基礎。

容器

容器是從映象中建立的應用執行例項。它可以啟動、開始、停止、刪除,各個容器之間互相隔離,不可見。容器可以看出傳統虛擬機器中安裝好的作業系統。

倉庫 Repository

Docker 倉庫類似於程式碼倉庫,是 Docker 集中存放映象檔案的場所。最大的公開倉庫是 Docker Hub (https://hub.docker.com/), 和 GitHub 類似,Docker Hub 中註冊需要自帶梯子。

Docker 的獲取安裝

Docker 分為社群版和企業版,默認個人使用社群穩定版本。Docker 產品 介紹。

在 Centos7 中安裝 Docker CE

筆者習慣在Centos7 中實地實驗,其它版本安裝可以參考官網(https://docs.docker.com/install/)。

1. 解除安裝之前的版本

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine

2. 通過 yum 進行安裝

手動安裝參考(https://docs.docker.com/install/linux/docker-ce/centos/#install-from-a-package)

設定 yum 源

1、 先安裝相關的依賴包

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

2、 新增穩定的 Docker 社群版本倉庫到 Linux 映象源中

# 官方映象源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 換成阿里的 Docker 映象源
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

提示出錯:Could not fetch/save url https://download.docker.com/linux/centos/docker-ce.repo to file /etc/yum.repos.d/docker-ce.repo: [Errno 12] Timeout on https://download.docker.com/linux/centos/docker-ce.repo: (28, ‘Operation timed out after 30001 milliseconds with 0 out of 0 bytes received’)
主要是因為被牆的原因

3、 執行安裝命令

sudo yum -y install docker-ce

Docker 官網上說明了如何安裝指定版本的 Docker

4、 啟動 Docker

systemctl start docker

5、 驗證 Docker 是否正確執行,啟動 Hello World 映象。

sudo docker run hello-world

執行命令後會打印出 Hello world

其它命令

## List Docker CLI commands
docker
docker container --help

## Display Docker version and info
docker --version
docker version
docker info

## Execute Docker image
docker run hello-world

## List Docker images
docker image ls

## List Docker containers (running, all, all in quiet mode)
docker container ls
docker container ls --all
docker container ls -aq
  • docker ps 檢視執行的容器
  • dockerd -D -H tcp://127.0.0.1:2376 通過 Dockerd 命令啟動 Docker 服務,開啟 Debug 模式,並監聽本地的 2376 埠

對於 Centos7 來說,配置檔案路徑為 /etc/systemd/system/docker.service.d/docker.conf