1. 程式人生 > >藍鯨'Docker'入門篇

藍鯨'Docker'入門篇

文章目錄


一、什麼是Docker

在這裡插入圖片描述

Docker 是一個開源的應用容器引擎,基於 Go 語言 並遵從Apache2.0協議開源。Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後釋出到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何介面(類似 iPhone 的 app),更重要的是容器效能開銷極低。Docker 屬於 Linux 容器的一種封裝,提供簡單易用的容器使用介面。它是目前最流行的 Linux 容器解決方案。Docker 將應用程式與該程式的依賴,打包在一個檔案裡面。執行這個檔案,就會生成一個虛擬容器。程式在這個虛擬容器裡執行,就好像在真實的物理機上執行一樣。有了 Docker,就不用擔心環境問題。

二、Docker與虛擬機器比較

作為一種輕量級的虛擬化方式,Docker在執行應用上跟傳統的虛擬機器方式相比具有顯著優勢:

Docker容器很快,啟動和停止可以在秒級實現,這相比傳統的虛擬機器方式要快得多。
Docker容器對系統資源需求很少,一臺主機上可以同時執行數千個Docker容器。
Docker通過類似Git的操作來方便使用者獲取、分發和更新應用映象,指令簡明,學習成本較低。
Docker通過Dockerfile配置檔案來支援靈活的自動化建立和部署機制,提高工作效率。

在這裡插入圖片描述

三、Docker 的架構

Docker 使用客戶端-伺服器 (C/S) 架構模式,使用遠端API來管理和建立Docker容器。

Docker 容器通過 Docker 映象來建立。

容器與映象的關係類似於面向物件程式設計中的物件與類。

Docker 面向物件
容器 物件
映象

Docker 映象(Images)

Docker 映象是用於建立 Docker 容器的模板。

Docker 容器(Container)

容器是獨立執行的一個或一組應用。

Docker 客戶端(Client)

Docker 客戶端通過命令列或者其他工具使用 Docker API (https://docs.docker.com/reference/api/docker_remote_api) 與 Docker 的守護程序通訊。

Docker 主機(Host)

一個物理或者虛擬的機器用於執行 Docker 守護程序和容器。

Docker 倉庫(Registry)

Docker 倉庫用來儲存映象,可以理解為程式碼控制中的程式碼倉庫。

Docker Hub(https://hub.docker.com) 提供了龐大的映象集合供使用。

Docker Machine

Docker Machine是一個簡化Docker安裝的命令列工具,通過一個簡單的命令列即可在相應的平臺上安裝Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

四、在Linux系統中安裝Docker

1、Ubuntu Docker 安裝

Docker 支援以下的 Ubuntu 版本:

  • Ubuntu Precise 12.04 (LTS)
  • Ubuntu Trusty 14.04 (LTS)
  • Ubuntu Wily 15.10
  • 其他更新的版本……

    • 前提條件

      Docker 要求 Ubuntu 系統的核心版本高於 3.10 ,檢視本頁面的前提條件來驗證你的 Ubuntu 版本是否支援 Docker。

      通過 uname -r 命令檢視你當前的核心版本

[email protected]:~$ uname -r


使用指令碼安裝 Docker

1、獲取最新版本的 Docker 安裝包

[email protected]:~$ wget -qO- https://get.docker.com/ | sh

輸入當前使用者的密碼後,就會下載指令碼並且安裝Docker及依賴包。

安裝完成後有個提示:

    If you would like to use Docker as a non-root user, you should now consider
    adding your user to the "docker" group with something like:

    sudo usermod -aG docker runoob
Remember that you will have to log out and back in for this to take effect!

當要以非root使用者可以直接執行docker時,需要執行 sudo usermod -aG docker runoob 命令,然後重新登陸,否則會有如下報錯

2、啟動docker 後臺服務

[email protected]:~$ sudo service docker start

3、測試執行hello-world

[email protected]:~$ docker run hello-world

映象加速

鑑於國內網路問題,後續拉取 Docker 映象十分緩慢,我們可以需要配置加速器來解決,我使用的是網易的映象地址:http://hub-mirror.c.163.com

新版的 Docker 使用 /etc/docker/daemon.json(Linux) 或者 %programdata%\docker\config\daemon.json(Windows) 來配置 Daemon。

請在該配置檔案中加入(沒有該檔案的話,請先建一個):

{
  "registry-mirrors": ["http://hub-mirror.c.163.com"]
}

2、CentOS Docker 安裝

Docker支援以下的CentOS版本:

  • CentOS 7 (64-bit)
  • CentOS 6.5 (64-bit) 或更高的版本

前提條件

目前,CentOS 僅發行版本中的核心支援 Docker。

Docker 執行在 CentOS 7 上,要求系統為64位、系統核心版本為 3.10 以上。

Docker 執行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系統為64位、系統核心版本為 2.6.32-431 或者更高版本。


使用 yum 安裝(CentOS 7下)

Docker 要求 CentOS 系統的核心版本高於 3.10 ,檢視本頁面的前提條件來驗證你的CentOS 版本是否支援 Docker 。

通過 uname -r 命令檢視你當前的核心版本
[[email protected] ~]# uname -r 3.10.0-327.el7.x86_64

安裝 Docker

從 2017 年 3 月開始 docker 在原來的基礎上分為兩個分支版本: Docker CE 和 Docker EE。

Docker CE 即社群免費版,Docker EE 即企業版,強調安全,但需付費使用。

本文介紹 Docker CE 的安裝使用。

移除舊的版本:

$ 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

安裝一些必要的系統工具:

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

新增軟體源資訊:

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新 yum 快取:

sudo yum makecache fast

安裝 Docker-ce:

sudo yum -y install docker-ce

啟動 Docker 後臺服務

sudo systemctl start docker

測試執行 hello-world

[[email protected] ~]# docker run hello-world

由於本地沒有hello-world這個映象,所以會下載一個hello-world的映象,並在容器內執行。


使用指令碼安裝 Docker

1、使用 sudoroot 許可權登入 Centos。

2、確保 yum 包更新到最新。

$ sudo yum update

3、執行 Docker 安裝指令碼。

$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh

執行這個指令碼會新增 docker.repo 源並安裝 Docker。

4、啟動 Docker 程序。

sudo systemctl start docker

5、驗證 docker 是否安裝成功並在容器中執行一個測試的映象。

$ sudo docker run hello-world
docker ps

到此,Docker 在 CentOS 系統的安裝完成。


映象加速

鑑於國內網路問題,後續拉取 Docker 映象十分緩慢,我們可以需要配置加速器來解決,我使用的是網易的映象地址:http://hub-mirror.c.163.com

新版的 Docker 使用 /etc/docker/daemon.json(Linux) 或者 %programdata%\docker\config\daemon.json(Windows) 來配置 Daemon。

請在該配置檔案中加入(沒有該檔案的話,請先建一個):

五、Docker常用命令

1、映象操作

1、搜尋映象

可使用docker search 命令搜尋存放在Docker Hub中的映象

docker search java

2、下載映象

docker pull java

3、列出映象

docker images 

4、刪除本地映象

docker rm java

2、容器操作

1、新建並啟動容器

docker run

它有很多選項,可使用docker run –help 檢視選項

常用的選項有:

-d選項:表示後臺執行
-P選項:隨機埠對映
-p選項:指定埠對映,有以下四種格式。
    ip:hostPort:containerPort
    ip::containerPort
    hostPort:containerPort
    containerPort

示例:

docker run -d -p 91:80 nginx

-d #後臺執行
-p 宿主機埠:容器埠 #開放容器埠到宿主機埠
訪問http://Docker 宿主機 IP:91/,將會看到nginx的歡迎頁面。

2、列出容器

docker ps 

3、停止容器

docker stop 容器ID/容器名稱 

4、強制停止容器

docker kill 容器ID/容器名稱

5、啟動已停止的容器

docker start 容器ID/容器名稱

6、進入容器
某場景下,可能需要進入執行中的容器。

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

docker exec -it 0f2f3885c9a0 /bin/bash

7、刪除容器

使用docker rm命令即可刪除指定容器。

docker rm 容器ID/容器名稱

8、建立容器

有時候我們需要建立一個容器,但並不馬上啟動它,後面需要時,以start啟動

docker create -it nginx

暫停容器

9、暫停一個容器,方便 commit

docker pause CONTAINER

檢視容器或者映象的詳細資訊

10、檢視容器或者映象的詳細資訊

docker inspect

六、參考資料

1、官網:https://www.docker.com/
2、Docker入門教程 http://dockone.io/article/111
3、Docker_百度百科 http://baike.baidu.com/view/11854949.htm
4、史上最全Docker資料集粹 http://special.csdncms.csdn.net/BeDocker/
5、Docker - 話題精華 - 知乎 http://www.zhihu.com/topic/19950993/top-answers
6、docker 簡明教程 | 簡果網 http://www.simapple.com/docker-tutorial
7、如何使用Dockerfile構建映象 http://blog.csdn.net/qinyushuang/article/details/43342553
8、Dockerfile reference - Docker https://docs.docker.com/engine/reference/builder/
9、菜鳥教程-Docker教學 http://www.runoob.com/docker/docker-tutorial.html
10、 灰寨小學–python小陳的部落格 https://blog.csdn.net/xiaochendefendoushi/article/details/80979905