docker是什么匪煌?
? Docker 是一個開源的應(yīng)用容器引擎党巾,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個可移植的容器中,然后發(fā)布到任何流行的Linux機(jī)器上驳规,也可以實(shí)現(xiàn)虛擬化署海,容器是完全使用沙箱機(jī)制砸狞,相互之間不會有任何接口。
Docker 包括三個基本概念:
- 鏡像(Image):Docker 鏡像(Image)踱启,就相當(dāng)于是一個 root 文件系統(tǒng)研底。比如官方鏡像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系統(tǒng)的 root 文件系統(tǒng)。
- 容器(Container):鏡像(Image)和容器(Container)的關(guān)系冠蒋,就像是面向?qū)ο蟪绦蛟O(shè)計中的類和實(shí)例一樣乾胶,鏡像是靜態(tài)的定義,容器是鏡像運(yùn)行時的實(shí)體恋脚。容器可以被創(chuàng)建、啟動吨掌、停止脓恕、刪除、暫停等秋茫。
- 倉庫(Repository):倉庫可看著一個代碼控制中心乃秀,用來保存鏡像跺讯。
docker的安裝
- 查看內(nèi)核(建議切換到root用戶進(jìn)行安裝docker)
Docker 運(yùn)行在CentOS 7 上,要求系統(tǒng)為64位局荚、系統(tǒng)內(nèi)核版本為 3.10 以上愈污。
Docker 運(yùn)行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系統(tǒng)為64位首装、系統(tǒng)內(nèi)核版本為 2.6.32-431 或者更高版本擎析。
[root@localhost ~]# uname -r
3.10.0-957.el7.x86_64
[root@localhost ~]#
- 把yum包更新到最新
[root@localhost ~]# yum update
-
卸載舊版本(如果安裝過舊版本的話揍魂,第一次安裝不用管這一步)
查看是否安裝了docker [root@localhost ~]# yum list installed | grep docker 較舊的 Docker 版本稱為 docker 或 docker-engine 。如果已安裝這些程序喜最,請卸載它們以及相關(guān)的依賴項庄蹋。從 2017 年 3 月開始 docker 在原來的基礎(chǔ)上分為兩個分支版本: Docker CE 和 Docker EE迷雪。 Docker CE 即社區(qū)免費(fèi)版章咧,Docker EE 即企業(yè)版赁严,強(qiáng)調(diào)安全,但需付費(fèi)使用疼约。 [root@localhost ~]# yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine 如果是較新版本采用下面的方式進(jìn)行卸載 [root@localhost ~]# yum remove docker-ce 刪除鏡像文件程剥、容器汤踏、掛載目錄、自定義配置文件等 [root@localhost ~]# rm -rf /var/lib/docker
安裝需要的軟件包昙沦, yum-util 提供yum-config-manager功能载荔,另外兩個(device-mapper-persistent-data 和 lvm2)是devicemapper驅(qū)動依賴的
[root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
- 設(shè)置yum源(選一個源設(shè)置即可)
4.1 阿里云源
[root@localhost ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4.1 官方源
[root@localhost ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
說明:上面阿里云源和官方源兩者命令選其一執(zhí)行即可懒熙。不要兩個都執(zhí)行工扎!
- 查看所有倉庫中所有docker版本
[root@localhost ~]# yum list docker-ce --showduplicates | sort -r
docker-ce.x86_64 18.06.3.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.2.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.1.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.0.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.03.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 18.03.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.12.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.12.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.09.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.09.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.06.2.ce-1.el7.centos docker-ce-stable
-
選擇相應(yīng)版本進(jìn)行安裝(yun install docker-ce-版本號肢娘;下面版本17.12.0.ce是由17.12.0.ce-1.el7.centos得來)
[root@localhost ~]# yum install docker-ce-17.12.0.ce 安裝過程選y舆驶。 當(dāng)然也可以不指定版本安裝,安裝最新版本 [root@localhost ~]# yum install docker-ce
-
啟動docker
默認(rèn)安裝后拘荡,docker未啟動 [root@localhost ~]# systemctl status docker ● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled) Active: inactive (dead) Docs: https://docs.docker.com 啟動docker [root@localhost ~]# systemctl start docker
-
查看docker版本(client和server都啟動了則證明安裝成功)
[root@localhost ~]# docker version Client: Version: 17.12.0-ce API version: 1.35 Go version: go1.9.2 Git commit: c97c6d6 Built: Wed Dec 27 20:10:14 2017 OS/Arch: linux/amd64 Server: Engine: Version: 17.12.0-ce API version: 1.35 (minimum version 1.12) Go version: go1.9.2 Git commit: c97c6d6 Built: Wed Dec 27 20:12:46 2017 OS/Arch: linux/amd64 Experimental: false [root@localhost ~]#
- 設(shè)置docke開機(jī)啟動
``` [root@localhost ~]# systemctl enable docker [root@localhost ~]# chkconfig docker on ```
國內(nèi)鏡像加速
國內(nèi)從 DockerHub 拉取鏡像有時會遇到困難珊皿,此時可以配置鏡像加速器。Docker 官方和國內(nèi)很多云服務(wù)商都提供了國內(nèi)加速器服務(wù)粉臊。
- Docker官方提供的中國鏡像庫(也不是很快):https://registry.docker-cn.com
- 中國科技大學(xué)的鏡像加速器: https://docker.mirrors.ustc.edu.cn
- 其他加速器(阿里云)可點(diǎn)擊了解詳情:https://blog.csdn.net/M82_A1/article/details/91957886
- 阿里云容器鏡像 :https://help.aliyun.com/document_detail/60750.html?spm=5176.10695662.1996646101.searchclickresult.3ff91ef8PXqlUd
- 阿里云鏡像加速器(每一個用戶一個自己的加速器地址):登錄后可查看自己專屬鏡像加速器
在/etc/docker/daemon.json添加下面鏡像庫维费。
{"registry-mirrors":["https://docker.mirrors.ustc.edu.cn","https://registry.docker-cn.com"]}
之后重新啟動服務(wù)(劃重點(diǎn)促王,很多資料都沒有這一步,當(dāng)我們新增了daemon.json文件后必須重載docker才能生效):
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker
檢查加速器是否生效:
[root@localhost ~]# docker info
docker info返回內(nèi)容包含下面信息阅畴,則代表鏡像庫設(shè)置成功:
Registry Mirrors:
https://docker.mirrors.ustc.edu.cn/
https://registry.docker-cn.com/
運(yùn)行第一個容器 hello-world
第一次執(zhí)行docker run hello-world
會先從本地找鏡像迅耘。如果不存在,則會去鏡像中心拉到本地執(zhí)行纽哥。
[root@localhost ~]# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete
Digest: sha256:9572f7cdcee8591948c2963463447a53466950b3fc15a247fcad1917ca215a2f
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
其他的鏡像可以在鏡像中心找:https://hub.docker.com/
建立docker用戶組
默認(rèn)情況下春塌,docker
命令會使用 Unix socket 與 Docker 引擎通訊只壳。而只有 root
用戶和 docker
組的用戶才可以訪問 Docker 引擎的 Unix socket暑塑。出于安全考慮,一般 Linux 系統(tǒng)上不會直接使用 root
用戶惕艳。因此驹愚,更好地做法是將需要使用 docker
的用戶加入 docker
用戶組。
授權(quán)后终娃,當(dāng)前用戶不需要每次進(jìn)行執(zhí)行docker命令時,都加上sudo余佛。不操作也沒不影響運(yùn)行窍荧。
如果你當(dāng)前的用戶就是docker組,則不必操作下面2郊楣、3等操作了瓤荔。
1、[docker@localhost ~]$ groups $USER
docker : docker
[docker@localhost ~]$
2今瀑、[root@localhost ~]# groupadd docker --docker為新建組名(新建組名必須是docker)
3点把、[root@localhost ~]# gpasswd -a hadoop docker --將當(dāng)前用戶hadoop加入到docker用戶組里面。用戶名根據(jù)你當(dāng)前的用戶進(jìn)行進(jìn)行替換哥童。
4褒翰、設(shè)置-注銷系統(tǒng)或重啟系統(tǒng)使第二步生效,重新登錄系統(tǒng)后影暴,新開命令行窗口即可;
5、[root@localhost ~]# systemctl docker start
6伦吠、[hadoop@localhost ~] docker run hello-world
參考材料:
作者:陳集福
鏈接:http://www.reibang.com/p/6bed6e37eb1c