在CentOS7上安装Docker Community Edition并配置阿里云镜像加速

查看CentOS版本

1
2
3
4
5
$ cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)

$ rpm -q centos-release
centos-release-7-6.1810.2.el7.centos.x86_64

卸载旧版本

  • 2017年3月1号之前Docker软件名为dockerdocker-engine
  • 2017年3月1号开始分为Docker CE(开源版)和Docker EE(企业版)。
  • Docker CE软件名为docker-ce,目录/var/lib/docker/包含了镜像、容器、卷和网络等配置。
  • 安装新版本之前需要先将老版本删除

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    
    $ 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

YUM安装方式

配置YUM源

  • 安装依赖

    1
    2
    3
    
    # `yum-utils`提供`yum-config-manager`功能
    # `devicemapper`存储驱动需要`device-mapper-persistent-data`和`lvm2`才能正常工作。 
    $ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  • 添加软件源信息

    1
    2
    3
    4
    5
    6
    7
    
    # Aliyun镜像(推荐)
    $ sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
    # Docker官方
    $ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    
    $ sudo yum makecache fast

安装Docker

最新版本

1
$ sudo yum -y install docker-ce docker-ce-cli containerd.io

此时,Docker已经安装但还没启动,Docker用户组也已经建立但还没有添加用户。

指定版本

  • 列出库中可用版本,第二列为Centos7专属的版本号格式

    1
    2
    3
    4
    5
    6
    
    $ yum list docker-ce --showduplicates | sort -r
    
    docker-ce.x86_64  3:18.09.1-3.el7                     docker-ce-stable
    docker-ce.x86_64  3:18.09.0-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
  • 安装时需要指定版本

  • 版本格式为上方第二列3:18.09.1-3.el7中第一个:与第一个-之间的内容即docker-ce-18.09.1

    1
    2
    
    # sudo yum install docker-ce-18.09.1 docker-ce-cli-18.09.1 containerd.io
    $ sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

启动Docker

1
2
3
4
$ sudo systemctl start docker
$ sudo systemctl daemon-reload 
$ sudo systemctl stop docker
$ sudo systemctl restart docker 

其他安装方式

安装Docker-CE的其他方式,详见

卸载Docker CE

  • 卸载Docker包

    1
    
    $ sudo yum remove docker-ce
  • 镜像、容器、卷以及自定义配置文件不会自动删除(你必须手动删除修改过的配置文件),为了将其全部删除使用如下命令

    1
    
    $ sudo rm -rf /var/lib/docker

镜像加速

阿里云

  • 注册帐号并访问加速器页面
  • 针对Docker客户端版本大于1.10.0的用户
  • 修改daemon配置文件/etc/docker/daemon.json

    1
    2
    3
    4
    5
    6
    
    $ sudo mkdir -p /etc/docker
    $ sudo tee /etc/docker/daemon.json <<-'EOF'
    {
    "registry-mirrors": ["https://xxxxx.mirror.aliyuncs.com"] // 这个地址是每个用户独有
    }
    EOF
  • 使加速器生效

    1
    2
    
    $ sudo systemctl daemon-reload
    $ sudo systemctl restart docker

Hello Docker

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
$ sudo docker run hello-world

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete 
Digest: sha256:2557e3c07ed1e38f26e389462d03ed943586f744621577a99efb77324b0fe535
Status: Downloaded newer image for hello-world:latest
# 看到如下内容证明docker安装成功
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/

开机启动

1
2
3
4
$ sudo systemctl enable docker

Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service \
to /usr/lib/systemd/system/docker.service.

设置权限

将当前用户添加到docker用户组即可省去sudo

  • 检查当前用户

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    
    $ w
    00:53:30 up 16 min,  1 user,  load average: 0.00, 0.08, 0.11
    USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
    vagrant  pts/0    10.0.2.2         00:42    2.00s  0.15s  0.00s w
    
    $ whoami
    vagrant
    
    $ $USER
    vagrant
  • 检查docker用户组

    1
    2
    3
    
    $ cat /etc/group | grep docker
    
    docker❌992:
  • 添加到docker用户组

    1
    2
    
    # 添加用户vagrant到docker用户组
    $ sudo usermod -aG docker $USER
    1
    2
    3
    4
    
    # 添加用户vagrant到docker用户组
    $ sudo gpasswd -a $USER docker
    # 从docker用户组中删除用户vagrant
    $ sudo gpasswd -d $USER docker
    1
    2
    3
    
    # 查看
    $ cat /etc/group | grep docker
    docker❌992:vagrant

重启虚拟主机vagrant reload生效,此后使用docker ps即可无需再添加sudo

链接