docker的簡單安裝

Docker的英文本意是“搬運工”,在程序員的世界裏,Docker搬運的是集裝箱(Container),集裝箱裏裝的是任意類型的App,開發者通過Docker可以將App變成一種標準化的、可移植的、自管理的組件,可以在任何主流系統中開發、調試和運行。最重要的是,它不依賴於任何語言、框架或系統。

Docker是一個開源的引擎,可以輕鬆的爲任何應用創建一個輕量級的、可移植的、自給自足的容器。開發者在筆記本上編譯測試通過的容器可以批量地在生產環境中部署,包括VMs(虛擬機)、bare metal、OpenStack 集羣和其他的基礎應用平臺。

Docker通常用於如下場景:

web應用的自動化打包和發佈;
自動化測試和持續集成、發佈;
在服務型環境中部署和調整數據庫或其他的後臺應用;
從頭編譯或者擴展現有的OpenShift或Cloud Foundry平臺來搭建自己的PaaS環境。

Docker系統有兩個程序:docker服務端和docker客戶端。其中docker服務端是一個服務進程,管理着所有的容器。docker客戶端則扮演着docker服務端的遠程控制器,可以用來控制docker的服務端進程。大部分情況下,docker服務端和客戶端運行在一臺機器上。

安裝docker環境(rhel7.2)
1) 修改yum源安裝docker引擎

vim /etc/yum.repos.d/yum.repo, 加入以下內容:

[dockerrepo]
name=Docker Repository
baseurl=http://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=0

建立在電腦可以連網的基礎上。。。。
不過就像我的使用虛擬機,無法連接網絡,那麼只能下載安裝包之後使用本機yum源安裝依賴性即可。
過程如下:
[root@server3 ~]# rpm -ivh docker-engine–1.13.1-1.el7.centos.x86_64.rpm
warning: docker-engine-1.13.1-1.el7.centos.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID 2c52609d: NOKEY
error: Failed dependencies:
libltdl.so.7()(64bit) is needed by docker-engine-1.13.1-1.el7.centos.x86_64
libseccomp.so.2()(64bit) is needed by docker-engine-1.13.1-1.el7.centos.x86_64
selinux-policy-base >= 3.13.1-102 is needed by docker-engine-selinux-1.13.1-1.el7.centos.noarch
selinux-policy-targeted >= 3.13.1-102 is needed by docker-engine-selinux-1.13.1-1.el7.centos.noarch
這時候使用yum安裝了libseccomp.x86_64,libtool-ltdl.x86_64,解決了上面兩個依賴性,而電腦yum源在安裝時不能滿足selinux-*的版本要求,無奈不能上網。我就降低了docker的版本爲rpm -ivh docker-engine-1.12.6-1.el7.centos.x86_64.rpm docker-engine-selinux-1.12.6-1.el7.centos.noarch.rpm 這個時候就安裝成功了。

[root@server3 ~]# rpm -ivh docker-engine-1.12.6-1.el7.centos.x86_64.rpm docker-engine-selinux-1.12.6-1.el7.centos.noarch.rpm
warning: docker-engine-1.12.6-1.el7.centos.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID 2c52609d: NOKEY
Preparing...                                                            ################################# [100%]
Updating / installing...
   1:docker-engine-selinux-1.12.6-1.el                                  ################################# [ 50%]
setsebool:  SELinux is disabled.
libsepol.permission_copy_callback: Module docker depends on permission audit_read in class capability2, not satisfied (No such file or directory).
libsemanage.semanage_link_sandbox: Link packages failed (No such file or directory).
/usr/sbin/semodule:  Failed!
   2:docker-engine-1.12.6-1.el7.centos                                  ################################# [100%]

2) 開啓路由轉發功能,否則容器中的無法上網

echo 1 > /proc/sys/net/ipv4/ip_forward

3) 啓動Docker服務

 systemctl start docker

 systemctl enable docker   #開機啓動

4) 檢查是否安裝成功

 docker version    #可查看docker版本信息則安裝成功。
 [root@server3 ~]# docker version
Client:
 Version:      1.12.6
 API version:  1.24
 Go version:   go1.6.4
 Git commit:   78d1802
 Built:        Tue Jan 10 20:20:01 2017
 OS/Arch:      linux/amd64

Server:
 Version:      1.12.6
 API version:  1.24
 Go version:   go1.6.4
 Git commit:   78d1802
 Built:        Tue Jan 10 20:20:01 2017
 OS/Arch:      linux/amd64

5) docker info #查看Docker 中容器總體狀況。

[root@server3 ~]# docker info
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: 1.12.6
Storage Driver: devicemapper
 Pool Name: docker-253:0-68326981-pool
 Pool Blocksize: 65.54 kB
 Base Device Size: 10.74 GB
 Backing Filesystem: xfs
 Data file: /dev/loop0
 Metadata file: /dev/loop1
 Data Space Used: 11.8 MB
 Data Space Total: 107.4 GB
 Data Space Available: 17.56 GB
 Metadata Space Used: 581.6 kB
 Metadata Space Total: 2.147 GB
 Metadata Space Available: 2.147 GB
 Thin Pool Minimum Free Space: 10.74 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: false
 Deferred Deletion Enabled: false
 Deferred Deleted Device Count: 0
 Data loop file: /var/lib/docker/devicemapper/devicemapper/data
 WARNING: Usage of loopback devices is strongly discouraged for production use. Use `--storage-opt dm.thinpooldev` to specify a custom block storage device.
 Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
 Library Version: 1.02.107-RHEL7 (2015-10-14)
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: host bridge overlay null
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options: seccomp
Kernel Version: 3.10.0-327.el7.x86_64
Operating System: Red Hat Enterprise Linux Server 7.2 (Maipo)
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 993.1 MiB
Name: server3
ID: 4K4S:EPX4:ZQ4Y:XHD7:5GAW:ETCN:QWUE:SISI:A3KF:NPAX:QFP3:PQJ3
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Insecure Registries:
 127.0.0.0/8

以下內容來源網絡,方便理解:

  1. Docker概述:
    Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後發佈到任何流行的 Linux 機器上,也可以實現虛擬化。 容器是完全使用沙箱機制,相互之間不會有任何接口(類似 iPhone 的 app)。幾乎沒有性能開銷,可以很容易地在機器和數據中心中運行。最重要的是,他們不依賴於任何語言、框架或包裝系統。
    Docker 是 dotCloud 公司開源的一個基於 LXC 的高級容器引擎,源代碼託管在 Github 上, 基於 Go 語言並遵從 Apache2.0 協議開源。
    Docker 讓開發者可以打包他們的應用以及依賴包到一個可移植的 container 中,然後發佈到任何流行的linux機器上。

    Image 和 Container 的關係:image 可以理解爲一個系統鏡像,Container 是 Image 在運行時的一個狀態。如果拿虛擬機作一個比喻的話,Image 就是關機狀態下的磁盤文件,Container 就是虛擬機運行時的磁盤文件,包括內存數據。
    dockerhub:dockerhub 是 docker 官方的鏡像存儲站點,其中提供了很多常用的鏡像供用戶下載,如ubuntu, centos 等系統鏡像。通過 dockerhub 用戶也可以發佈自己的 docker 鏡像,爲此用戶需要註冊一個賬號,在網站上創建一個 docker 倉庫。

  2. Docker 核心技術
    1) Namespace — 實現 Container 的進程、網絡、消息、文件系統和主機名的隔離。
    2) Cgroup — 實現對資源的配額和度量。Cgrout 的配額,就像 vmware 虛擬機中的配置參數:可以指定 cpu 個數,內存大小等。

  3. Docker特性
    文件系統隔離:每個進程容器運行在一個完全獨立的根文件系統裏。
    資源隔離:系統資源,像 CPU 和內存等可以分配到不同的容器中,使用 cgroup。
    網絡隔離:每個進程容器運行在自己的網絡空間,虛擬接口和 IP 地址。
    日誌記錄:Docker 將會收集和記錄每個進程容器的標準流(stdout/stderr/stdin),用於實時檢索或批量檢索。
    變更管理:容器文件系統的變更可以提交到新的鏡像中,並可重複使用以創建更多的容器。無需使用模板 或手動配置。
    交互式 shell:Docker 可以分配一個虛擬終端並關聯到任何容器的標準輸入上,例如運行一個一次性交互

  4. Docker優缺點:

    優點:
    1) 一些優勢和 VM 一樣,但不是所有都一樣。比 VM 小,比 VM 快,Docker 容器的尺寸減小相比整個虛擬機大大簡化了分佈到雲和從雲分發時間和開銷。 Docker 啓動一個容器實例時間很短,一兩秒就可以啓動一個實例。
    2) 對於在筆記本電腦,數據中心的虛擬機,以及任何的雲上,運行相同的沒有變化的應用程序,IT 的發佈速度更快。Docker 是一個開放的平臺,構建,發佈和運行分佈式應用程序。Docker 使應用程序能夠快速從組件組裝和避免開發和生產環境之間的摩擦。
    3) 您可以在部署在公司局域網或雲或虛擬機上使用它。
    4) 開發人員並不關心具體哪個 Linux 操作系統使用 Docker,開發人員可以根據所有依賴關係構建相應的軟件,針對他們所選擇的操作系統。然後,在部署時一切是完全一樣的,因爲一切都在 DockerImage 的容器在其上運行。開發人員負責並且能夠確保所有的相關性得到滿足。
    5) Google,微軟,亞馬遜,IBM 等都支持 Docker。
    缺點:
    1) Docker 支持 Unix/Linux 操作系統,Windows 或 Mac需要藉助於Boot2Docker。
    2)Docker 用於應用程序時是最有用的,但並不包含數據。日誌,跟蹤和數據庫等通常應放在 Docker 容器外。

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