Docker入門(一)

(一)、簡介
Docker 是 Docker.Inc 公司開源的一個基於 LXC技術之上構建的Container容器引擎, 源代碼託管在 GitHub 上, 基於Go語言並遵從Apache2.0協議開源。Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後發佈到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口(類似 iPhone 的 app),更重要的是容器性能開銷極低。
Docker是通過內核虛擬化技術(namespacescgroups等)來提供容器的資源隔離安全保障等。由於Docker通過操作系統層的虛擬化實現隔離,所以Docker容器在運行時,不需要類似虛擬機(VM)額外的操作系統開銷,提高資源利用率。

Docker與虛擬機相比的優缺點:
Docker入門(一)

docker的優點:
1. 更高效的利用系統資源:由於容器不需要進行硬件虛擬以及運行完整操作系統等額外開銷,Docker 對系統資源的利用率更高。無論是應用執行速度、內存損耗或者文件存儲速度,都要比傳統虛擬機技術更高效。因此,相比虛擬機技術,一個相同配置的主機,往往可以運行更多數量的應用。
2. 更快速的啓動時間:傳統的虛擬機技術啓動應用服務往往需要數分鐘,而Docker 容器應用,由於直接運行於宿主內核,無需啓動完整的操作系統,因此可以做到秒級、甚至毫秒級的啓動時間。大大的節約了開發、測試、部署的時間。
3.一致的運行環境:開發過程中一個常見的問題是環境一致性問題。由於開發環境、測試環境、生產環境不一
致,導致有些bug 並未在開發過程中被發現。而Docker 的鏡像提供了除內核外完整的運行時環境,確保了應用運行環境一致性,從而不會再出現「這段代碼在我機器上沒問題啊」這類問題。
4.持續交付和部署:Docker是build once,run everywhere. 使用Docker 可以通過定製應用鏡像來實現持續集成、持續交付、部署。開發人員可以通過Dockerfile 來進行鏡像構建,並結合持續集成(Continuous Integration) 系統進行集成測試,而運維人員則可以直接在生產環境中快速部署該鏡像,甚至結合持續部署(Continuous Delivery/Deployment) 系統進行自動部署。
5.更輕鬆的遷移:Docker 使用的分層存儲以及鏡像的技術,使得應用重複部分的複用更爲容易,也使得應用的維護更新更加簡單,基於基礎鏡像進一步擴展鏡像也變得非常簡單。此外,Docker 團隊同各個開源項目團隊一起維護了一大批高質量的官方鏡像,既可以直接在生產環境使用,又可以作爲基礎進一步定製,大大的降低了應用服務的鏡像製作成本。使用Dockerfile 使鏡像構建透明化,不僅僅開發團隊可以理解應用運行環境,也方便運維團隊理解應用運行所需條件,幫助更好的生產環境中部署該鏡像。

(二)、Docker在CentOS/Redhat7.4安裝
1、安裝前提條件:
目前,CentOS 僅發行版本中的內核支持 Docker。
Docker 運行在 CentOS 7 上,要求系統爲64位、系統內核版本爲 3.10 以上。
Docker 運行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系統爲64位、系統內核版本爲 2.6.32-431 或者更高版本。

從 2017 年 3 月開始 docker 在原來的基礎上分爲兩個分支版本: Docker CE 和 Docker EE。
Docker CE 即社區免費版,Docker EE 即企業版,強調安全,但需付費使用。
本文介紹 Docker CE 的安裝使用。

2、yum 安裝
(1)、查看系統的版本

[root@localhost ~]# uname -r
3.10.0-693.el7.x86_64
[root@localhost ~]# cat /etc/redhat-release 
CentOS Linux release 7.4.1708 (Core)

(2)、刪除舊的docker版本

[root@localhost ~]# 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

(3)、安裝必要的工具
[root@localhost ~]#sudo yum install -y yum-utils device-mapper-persistent-data lvm2

(4)、添加yum源的相關軟件信息並更新緩存

[root@localhost ~]# sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
Loaded plugins: fastestmirror
adding repo from: http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
grabbing file http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo
[root@localhost ~]# sudo yum makecache fast
Loaded plugins: fastestmirror
base                                                                                                             | 3.6 kB  00:00:00     
docker-ce-stable                                                                                                 | 2.9 kB  00:00:00     
extras                                                                                                           | 3.4 kB  00:00:00     
updates                                                                                                          | 3.4 kB  00:00:00     
(1/8): extras/7/x86_64/prestodelta                                                                               | 100 kB  00:00:00     
(2/8): extras/7/x86_64/filelists_db                                                                              | 603 kB  00:00:00     
(3/8): extras/7/x86_64/other_db                                                                                  | 126 kB  00:00:00     
(4/8): updates/7/x86_64/prestodelta                                                                              | 672 kB  00:00:00     
(5/8): updates/7/x86_64/other_db                                                                                 | 574 kB  00:00:00     
(6/8): docker-ce-stable/x86_64/filelists_db                                                                      | 9.4 kB  00:00:00     
(7/8): docker-ce-stable/x86_64/other_db                                                                          |  70 kB  00:00:00     
(8/8): updates/7/x86_64/filelists_db                                                                             | 3.3 MB  00:00:05     
Loading mirror speeds from cached hostfile
Metadata Cache Created

(5)、安裝docer-ce
[root@localhost ~]# sudo yum -y install docker-ce
(6)、創建docker服務並自啓動

 [root@localhost ~]# systemctl enable docker
[root@localhost ~]# systemctl start docker
[root@localhost ~]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2018-10-23 14:38:10 CST; 24h ago
     Docs: https://docs.docker.com
 Main PID: 14269 (dockerd)
   CGroup: /system.slice/docker.service
           ├─14269 /usr/bin/dockerd
           └─14277 docker-containerd --config /var/run/docker/containerd/containerd.toml

Oct 23 14:52:36 localhost.localdomain dockerd[14269]: time="2018-10-23T14:52:36+08:00" level=info msg="shim reaped" id=12e2c02c...75c5de
Oct 23 14:52:36 localhost.localdomain dockerd[14269]: time="2018-10-23T14:52:36.443901659+08:00" level=error msg="stream copy e... fifo"
Oct 23 14:52:36 localhost.localdomain dockerd[14269]: time="2018-10-23T14:52:36.443982581+08:00" level=error msg="stream copy e... fifo"
Oct 23 14:52:36 localhost.localdomain dockerd[14269]: time="2018-10-23T14:52:36.492469070+08:00" level=error msg="12e2c02cb1218...ainer"
Oct 23 15:35:16 localhost.localdomain dockerd[14269]: time="2018-10-23T15:35:16+08:00" level=info msg="shim docker-containerd-s...=14989
Oct 23 15:35:20 localhost.localdomain dockerd[14269]: time="2018-10-23T15:35:20+08:00" level=info msg="shim reaped" id=51fa7e93...09c377
Oct 23 15:35:20 localhost.localdomain dockerd[14269]: time="2018-10-23T15:35:20.787866184+08:00" level=info msg="ignoring event...elete"
Oct 23 17:16:55 localhost.localdomain dockerd[14269]: time="2018-10-23T17:16:55+08:00" level=info msg="shim docker-containerd-s...=15236
Oct 23 17:51:36 localhost.localdomain dockerd[14269]: time="2018-10-23T17:51:36+08:00" level=info msg="shim reaped" id=04e3b5c3...81e21c
Oct 23 17:51:36 localhost.localdomain dockerd[14269]: time="2018-10-23T17:51:36.468411067+08:00" level=info msg="ignoring event...elete"
Hint: Some lines were ellipsized, use -l to show in full.

7、docker鏡像的加速。和yum一樣,docker國外的鏡像拉取十分緩慢,可以通過設置國內的網站來加速其訪問的速度,國內著名的有網易(http://hub-mirror.c.163.com ) 和阿里雲。新版的 Docker 使用 /etc/docker/daemon.json(Linux) 或者 %programdata%\docker\config\daemon.json(Windows) 來配置 Daemon。
請在該配置文件中加入,如果沒有該文件的話,先建一個就好了:

[root@localhost ~]# vim /etc/docker/daemon.json

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

8、刪除命令:

[root@localhost ~]#sudo yum remove docker-ce
[root@localhost ~]#sudo rm -rf /var/lib/docker
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章