(一)、簡介
Docker 是 Docker.Inc 公司開源的一個基於 LXC技術之上構建的Container容器引擎, 源代碼託管在 GitHub 上, 基於Go語言並聽從Apache2.0協議開源。Docker 可讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,而後發佈到任何流行的 Linux 機器上,也能夠實現虛擬化。容器是徹底使用沙箱機制,相互之間不會有任何接口(相似 iPhone 的 app),更重要的是容器性能開銷極低。
Docker是經過內核虛擬化技術(namespaces及cgroups等)來提供容器的資源隔離與安全保障等。因爲Docker經過操做系統層的虛擬化實現隔離,因此Docker容器在運行時,不須要相似虛擬機(VM)額外的操做系統開銷,提升資源利用率。linux
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 使鏡像構建透明化,不單單開發團隊能夠理解應用運行環境,也方便運維團隊理解應用運行所需條件,幫助更好的生產環境中部署該鏡像。json
(二)、Docker在CentOS/Redhat7.4安裝
一、安裝前提條件:
目前,CentOS 僅發行版本中的內核支持 Docker。
Docker 運行在 CentOS 7 上,要求系統爲64位、系統內核版本爲 3.10 以上。
Docker 運行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系統爲64位、系統內核版本爲 2.6.32-431 或者更高版本。vim
從 2017 年 3 月開始 docker 在原來的基礎上分爲兩個分支版本: Docker CE 和 Docker EE。
Docker CE 即社區免費版,Docker EE 即企業版,強調安全,但需付費使用。
本文介紹 Docker CE 的安裝使用。centos
二、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
app
(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服務並自啓動dom
[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.
七、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"] }
八、刪除命令:
[root@localhost ~]#sudo yum remove docker-ce [root@localhost ~]#sudo rm -rf /var/lib/docker