Centos7 安装 docker

docker是什么?

​ Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。

Docker 包括三个基本概念:

  • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  • 仓库(Repository):仓库可看着一个代码控制中心,用来保存镜像。

docker的安装

  1. 查看内核(建议切换到root用户进行安装docker)

Docker 运行在CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。

Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。

[root@localhost ~]# uname -r
3.10.0-957.el7.x86_64
[root@localhost ~]# 
  1. 把yum包更新到最新
[root@localhost ~]# yum update
  1. 卸载旧版本(如果安装过旧版本的话,第一次安装不用管这一步)

    查看是否安装了docker
    [root@localhost ~]# yum list installed | grep docker
    
    较旧的 Docker 版本称为 docker 或 docker-engine 。如果已安装这些程序,请卸载它们以及相关的依赖项。从 2017 年 3 月开始 docker 在原来的基础上分为两个分支版本: Docker CE 和 Docker EE。
    Docker CE 即社区免费版,Docker EE 即企业版,强调安全,但需付费使用。
    [root@localhost ~]#  yum remove docker \
                      docker-client \
                      docker-client-latest \
                      docker-common \
                      docker-latest \
                      docker-latest-logrotate \
                      docker-logrotate \
                      docker-engine
                      
    如果是较新版本采用下面的方式进行卸载
    [root@localhost ~]#  yum remove docker-ce
    
    删除镜像文件、容器、挂载目录、自定义配置文件等
    [root@localhost ~]#  rm -rf /var/lib/docker                  
    
  2. 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个(device-mapper-persistent-data 和 lvm2)是devicemapper驱动依赖的

[root@localhost ~]#  yum install -y yum-utils device-mapper-persistent-data lvm2
  1. 设置yum源(选一个源设置即可)
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

说明:上面阿里云源和官方源两者命令选其一执行即可。不要两个都执行!
  1. 查看所有仓库中所有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
  1. 选择相应版本进行安装(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。
    
    
    当然也可以不指定版本安装,安装最新版本
    [root@localhost ~]# yum install docker-ce
    
  1. 启动docker

    默认安装后,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
    
  2. 查看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 ~]# 
    
    1. 设置docke开机启动

      [root@localhost ~]#  systemctl enable docker
      [root@localhost ~]#  chkconfig docker on
      

国内镜像加速

国内从 DockerHub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。Docker 官方和国内很多云服务商都提供了国内加速器服务。

{"registry-mirrors":["https://docker.mirrors.ustc.edu.cn","https://registry.docker-cn.com"]}

之后重新启动服务(划重点,很多资料都没有这一步,当我们新增了daemon.json文件后必须重载docker才能生效):

[root@localhost ~]#   systemctl daemon-reload
[root@localhost ~]#   systemctl restart docker

检查加速器是否生效:

[root@localhost ~]# docker info

docker info返回内容包含下面信息,则代表镜像库设置成功:
Registry Mirrors:
    https://docker.mirrors.ustc.edu.cn/
   https://registry.docker-cn.com/

运行第一个容器 hello-world

第一次执行docker run hello-world会先从本地找镜像。如果不存在,则会去镜像中心拉到本地执行。

[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用户组

默认情况下,docker 命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。因此,更好地做法是将需要使用 docker 的用户加入 docker 用户组。

授权后,当前用户不需要每次进行执行docker命令时,都加上sudo。不操作也没不影响运行。

如果你当前的用户就是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 --将当前用户hadoop加入到docker用户组里面。用户名根据你当前的用户进行进行替换。

4、设置-注销系统或重启系统使第二步生效,重新登录系统后,新开命令行窗口即可;
5、[root@localhost ~]#  systemctl docker start
6、[hadoop@localhost ~] docker run hello-world

参考材料:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342