一、卸载旧版docker

①:卸载旧版本docker,如果yum报告没有安装这些软件包,那也没关系。

  1. sudo yum remove docker \
  2. docker-client \
  3. docker-client-latest \
  4. docker-common \
  5. docker-latest \
  6. docker-latest-logrotate \
  7. docker-logrotate \
  8. docker-engine

具体执行如下:

  1. [root@localhost yum.repos.d]# sudo yum remove docker \
  2. > docker-client \
  3. > docker-client-latest \
  4. > docker-common \
  5. > docker-latest \
  6. > docker-latest-logrotate \
  7. > docker-logrotate \
  8. > docker-engine
  9. 已加载插件:fastestmirror, langpacks
  10. 参数 docker 没有匹配
  11. 参数 docker-client 没有匹配
  12. 参数 docker-client-latest 没有匹配
  13. 参数 docker-common 没有匹配
  14. 参数 docker-latest 没有匹配
  15. 参数 docker-latest-logrotate 没有匹配
  16. 参数 docker-logrotate 没有匹配
  17. 参数 docker-engine 没有匹配
  18. 不删除任何软件包

二、安装docker

①:设置存储库,在新主机上首次安装 Docker Engine 之前,您需要设置 Docker 存储库。之后,您可以从存储库 安装、更新 Docker
安装yum-utils包(提供yum-config-manager 实用程序)并设置稳定存储库。

  1. sudo yum install -y yum-utils
  2. sudo yum-config-manager \
  3. --add-repo \
  4. https://download.docker.com/linux/centos/docker-ce.repo

具体执行如下:

  1. [root@localhost yum.repos.d]# sudo yum install -y yum-utils
  2. 已加载插件:fastestmirror, langpacks
  3. Loading mirror speeds from cached hostfile
  4. * base: mirrors.aliyun.com
  5. * extras: mirrors.aliyun.com
  6. * updates: mirrors.aliyun.com
  7. 软件包 yum-utils-1.1.31-54.el7_8.noarch 已安装并且是最新版本
  8. 无须任何处理
  9. [root@localhost yum.repos.d]#
  10. [root@localhost yum.repos.d]#
  11. [root@localhost yum.repos.d]# sudo yum-config-manager \
  12. > --add-repo \
  13. > https://download.docker.com/linux/centos/docker-ce.repo
  14. 已加载插件:fastestmirror, langpacks
  15. adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
  16. grabbing file https://download.docker.com/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
  17. repo saved to /etc/yum.repos.d/docker-ce.repo

②:安装Docker Engine,安装最新版本的 Docker Enginecontainerd

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

具体执行如下:

  1. [root@localhost yum.repos.d]# sudo yum install docker-ce docker-ce-cli containerd.io
  2. 已加载插件:fastestmirror, langpacks
  3. Loading mirror speeds from cached hostfile
  4. * base: mirrors.aliyun.com
  5. * extras: mirrors.aliyun.com
  6. * updates: mirrors.aliyun.com
  7. docker-ce-stable | 3.5 kB 00:00:00
  8. (1/2): docker-ce-stable/7/x86_64/updateinfo | 55 B 00:00:00
  9. (2/2): docker-ce-stable/7/x86_64/primary_db | 62 kB 00:00:00
  10. 正在解决依赖关系
  11. --> 正在检查事务
  12. ---> 软件包 containerd.io.x86_64.0.1.4.6-3.1.el7 将被 安装
  13. --> 正在处理依赖关系 container-selinux >= 2:2.74,它被软件包 containerd.io-1.4.6-3.1.el7.x86_64 需要
  14. ---> 软件包 docker-ce.x86_64.3.20.10.7-3.el7 将被 安装
  15. --> 正在处理依赖关系 docker-ce-rootless-extras,它被软件包 3:docker-ce-20.10.7-3.el7.x86_64 需要
  16. ---> 软件包 docker-ce-cli.x86_64.1.20.10.7-3.el7 将被 安装
  17. --> 正在处理依赖关系 docker-scan-plugin(x86-64),它被软件包 1:docker-ce-cli-20.10.7-3.el7.x86_64 需要
  18. --> 正在检查事务
  19. ---> 软件包 container-selinux.noarch.2.2.119.2-1.911c772.el7_8 将被 安装
  20. ---> 软件包 docker-ce-rootless-extras.x86_64.0.20.10.7-3.el7 将被 安装
  21. --> 正在处理依赖关系 fuse-overlayfs >= 0.7,它被软件包 docker-ce-rootless-extras-20.10.7-3.el7.x86_64 需要
  22. ......
  23. ......

③:docker安装成功后,查看docker的版本信息:

  1. [root@localhost yum.repos.d]# docker version
  2. Client: Docker Engine - Community
  3. Version: 20.10.7
  4. API version: 1.41
  5. Go version: go1.13.15
  6. Git commit: f0df350
  7. Built: Wed Jun 2 11:58:10 2021
  8. OS/Arch: linux/amd64
  9. Context: default
  10. Experimental: true
  11. Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

三、启动docker

①:手动启动docker

  1. systemctl start docker

②:centos7中设置docker开机自启动:

  1. sudo systemctl enable docker

四、配置docker镜像加速器

①:配置docker镜像加速器,您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器

  1. sudo mkdir -p /etc/docker
  2. sudo tee /etc/docker/daemon.json <<-'EOF'
  3. {
  4. "registry-mirrors": ["https://f69s1xsk.mirror.aliyuncs.com"]
  5. }
  6. EOF
  7. sudo systemctl daemon-reload
  8. sudo systemctl restart docker

实际执行结果如下:

  1. [root@localhost yum.repos.d]# sudo mkdir -p /etc/docker
  2. [root@localhost yum.repos.d]#
  3. [root@localhost yum.repos.d]# sudo tee /etc/docker/daemon.json <<-'EOF'
  4. > {
  5. > "registry-mirrors": ["https://f69s1xsk.mirror.aliyuncs.com"]
  6. > }
  7. > EOF
  8. {
  9. "registry-mirrors": ["https://f69s1xsk.mirror.aliyuncs.com"]
  10. }
  11. [root@localhost yum.repos.d]#
  12. [root@localhost yum.repos.d]# sudo systemctl daemon-reload
  13. [root@localhost yum.repos.d]#
  14. [root@localhost yum.repos.d]# sudo systemctl restart docker
  15. [root@localhost yum.repos.d]#
  16. [root@localhost yum.repos.d]# cat /etc/docker/daemon.json
  17. {
  18. "registry-mirrors": ["https://f69s1xsk.mirror.aliyuncs.com"]
  19. }

五、以非 root 用户管理 Docker

Docker守护进程绑定到Unix套接字而不是TCP端口。默认情况下,Unix套接字归用户所有root,其他用户只能使用sudoDocker守护进程始终以root用户身份运行。
如果您不想在docker命令前加上sudo,请创建一个名为的Unixdocker并向其中添加用户。当Docker守护进程启动时,它会创建一个可由docker组成员访问的Unix套接字。

  • ①:创建docker组。

    1. sudo groupadd docker
  • ②:将您的用户添加到docker组中。

    1. sudo usermod -aG docker $USER
  • ③:注销并重新登录,以便重新评估您的组成员身份。如果在Linux上,您还可以运行以下命令来激活对组的更改:

    1. newgrp docker
  • ④:验证您可以在docker没有sudo.

    1. [root@localhost ~]# echo $USER
    2. root
    3. [greamrod@localhost root]$
    4. [root@localhost ~]# su greamrod
    5. [greamrod@localhost root]$
    6. [greamrod@localhost root]$ echo $USER
    7. greamrod
    8. [greamrod@localhost root]$ docker ps
    9. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    10. [greamrod@localhost root]$
    11. [greamrod@localhost root]$ docker --version
    12. Docker version 20.10.9, build c2ea9bc

六、开发docker2375端口号

①:修改/lib/systemd/system/docker.service文件:
原本内容如下:

  1. [greamrod@localhost ~]$ cat /lib/systemd/system/docker.service
  2. [Unit]
  3. Description=Docker Application Container Engine
  4. Documentation=https://docs.docker.com
  5. After=network-online.target firewalld.service containerd.service
  6. Wants=network-online.target
  7. Requires=docker.socket containerd.service
  8. [Service]
  9. Type=notify
  10. # the default is not to use systemd for cgroups because the delegate issues still
  11. # exists and systemd currently does not support the cgroup feature set required
  12. # for containers run by docker
  13. ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
  14. ExecReload=/bin/kill -s HUP $MAINPID
  15. TimeoutSec=0
  16. RestartSec=2
  17. Restart=always
  18. # Note that StartLimit* options were moved from "Service" to "Unit" in systemd 229.
  19. # Both the old, and new location are accepted by systemd 229 and up, so using the old location
  20. # to make them work for either version of systemd.
  21. StartLimitBurst=3
  22. # Note that StartLimitInterval was renamed to StartLimitIntervalSec in systemd 230.
  23. # Both the old, and new name are accepted by systemd 230 and up, so using the old name to make
  24. # this option work for either version of systemd.
  25. StartLimitInterval=60s
  26. # Having non-zero Limit*s causes performance problems due to accounting overhead
  27. # in the kernel. We recommend using cgroups to do container-local accounting.
  28. LimitNOFILE=infinity
  29. LimitNPROC=infinity
  30. LimitCORE=infinity
  31. # Comment TasksMax if your systemd version does not support it.
  32. # Only systemd 226 and above support this option.
  33. TasksMax=infinity
  34. # set delegate yes so that systemd does not reset the cgroups of docker containers
  35. Delegate=yes
  36. # kill only the docker process, not all processes in the cgroup
  37. KillMode=process
  38. OOMScoreAdjust=-500
  39. [Install]
  40. WantedBy=multi-user.target
  41. [greamrod@localhost ~]$
  42. [greamrod@localhost ~]$ ll /lib/systemd/system/docker.service
  43. -rw-r--r--. 1 root root 1695 6 2 19:57 /lib/systemd/system/docker.service

将以下这一行配置:

  1. ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

替换为:

  1. ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

②:开发端2375口号:

  1. # 开发指定端口号
  2. sudo firewall-cmd --zone=public --add-port=2375/tcp --permanent
  3. # 更新防火墙规则
  4. sudo firewall-cmd --reload
  5. # 查看所有打开的端口
  6. sudo firewall-cmd --zone=public --list-ports

具体执行如下:

  1. [greamrod@localhost ~]$ sudo firewall-cmd --zone=public --add-port=2375/tcp --permanent
  2. success
  3. [greamrod@localhost ~]$
  4. [greamrod@localhost ~]$ sudo firewall-cmd --reload
  5. success

③:重启docker:

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

七、安装docker-compose

①:运行此命令以下载Docker Compose的当前稳定版本:

  1. sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

具体执行如下:

  1. [root@localhost greamrod]# sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  2. % Total % Received % Xferd Average Speed Time Time Time Current
  3. Dload Upload Total Spent Left Speed
  4. 100 633 100 633 0 0 969 0 --:--:-- --:--:-- --:--:-- 970
  5. 100 12.1M 100 12.1M 0 0 1654k 0 0:00:07 0:00:07 --:--:-- 2445k

②:对二进制文件应用可执行权限:

  1. sudo chmod +x /usr/local/bin/docker-compose

③:测试是否安装成功:

  1. docker-compose version

④:链接:

  1. sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

具体执行如下:

  1. [greamrod@localhost ~]$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  2. [sudo] greamrod 的密码:
  3. % Total % Received % Xferd Average Speed Time Time Time Current
  4. Dload Upload Total Spent Left Speed
  5. 100 633 100 633 0 0 1590 0 --:--:-- --:--:-- --:--:-- 1594
  6. 100 12.1M 100 12.1M 0 0 1527k 0 0:00:08 0:00:08 --:--:-- 2082k
  7. [greamrod@localhost ~]$
  8. [greamrod@localhost ~]$
  9. [greamrod@localhost ~]$ sudo chmod +x /usr/local/bin/docker-compose
  10. [greamrod@localhost ~]$
  11. [greamrod@localhost ~]$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
  12. [sudo] greamrod 的密码:
  13. [greamrod@localhost ~]$
  14. [greamrod@localhost ~]$ ll /usr/bin/docker-compose
  15. lrwxrwxrwx. 1 root root 29 6 29 09:48 /usr/bin/docker-compose -> /usr/local/bin/docker-compose
  16. [greamrod@localhost ~]$
  17. [greamrod@localhost ~]$ docker-compose --version
  18. docker-compose version 1.29.2, build 5becea4c

参考链接

文章参考链接

  • CentOS上安装Docker引擎:[https://docs.docker.com/engine/install/centos/](https://docs.docker.com/engine/install/centos/)