Skip to content

Docker安装

参考:https://docs.docker.com/engine/install/centos/

sudo开头的命令表示要root用户或者管理员用户才能操作

一、环境准备

  • linux内核版本::docker官方要求至少3.8以上,建议3.10以上

  • 建议关闭防火墙:systemctl stop firewalld.service

  • 关闭linux系统安全:

     vi /etc/selinux/config
     #关闭系统安全验证
     SELINUX=disabled
  • 下载阿里云docker社区版 yum源

    # 进入路径
    cd /etc/yum.repos.d/
    #下载源-阿里国内源
    wget http://mirrors.aliyun.com/dockerce/linux/centos/docker-ce.repo
    # 国外源

wget https://download.docker.com/linux/centos/docker-ce.repo


或者

#安装必要的一些系统工具 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 #添加软件源信息-国内的源 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #国外源 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo


## 二、安装之前卸载docker

如果之前装有老版本的docker,通过命令卸载

sudo yum -y remove docker sudo yum -y remove docker-common sudo yum -y remove docker-selinux sudo yum -y docker docker-engine


## 三、安装docker-CE

1. 查看docker安装包

yum list | grep docker #列出所有包 yum list docker-ce --showduplicates | sort -r


2. 找到上面列出的镜像,下载docker社区版。具体镜像名称以实际为准

yum install -y docker-ce.x86_64 #如果没有上面的镜像,直接不指定版本安装 yum install -y docker-ce #如果不安装社区版 yum install docker-io -y


3. 在生产环境当中,可能需要执行想要安装的版本,此时可使用以下命令里查询出当前可用的docker版本

yum list docker-ce.x86_64 --showduplicates | sort -r 列出版本以后,可使用以下命令安装想要的版本,.x86_64舍弃 sudo yum install docker-ce-<version> yum install docker-ce-24.0.2-1.el7


4. 修改镜像仓库

vim /etc/docker/daemon.json

#改为下面内容,然后重启docker { "debug":true,"experimental":true, "registry-mirrors":["https://pb5bklzr.mirror.aliyuncs.com","https://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn"] }


## 四、配置阿里云镜像加速

docker默认的镜像是从国外拉取的,可能会出现跨区域的网络波动导致下载镜像的速度很慢等原因。

打开阿里云控制台,搜索容器,选择容器加速器选项:复制配置的链接地址

vi /etc/docker/daemon.json


这里可以设置容器日志的大小,控制容器日志的量,如果想要json格式可以增加

由于阿里云的镜像早就不更新docker hub的镜像了,这里使用的是国内反代的镜像地址

{ "registry-mirrors": ["https://docker.mirrors.sjtug.sjtu.edu.cn"], "log-driver": "json-file", "log-opts": { "max-size": "200m", "max-file": "3" } }

systemctl daemon-reload && systemctl restart docker


## 五、配置代理

参考:https://docs.docker.com/engine/daemon/proxy/

在配置文件增加以下代理的内容

{ "proxies": { "http-proxy": "http://proxy.example.com:3128", "https-proxy": "https://proxy.example.com:3129", "no-proxy": "*.test.example.com,.example.org,127.0.0.0/8" } }


## 六、启动docker

#更新xfsprogs yum -y update xfsprogs systemctl start docker #上面命令启动报错,用以下命令: sudo systemctl daemon-reload sudo systemctl restart docker.service #设置开机自启 systemctl enable docker


## 七、验证安装正确

docker version

Client: Version: 17.12.1-ce API version: 1.35 Go version: go1.9.4 Git commit: 7390fc6 Built: Tue Feb 27 22:15:20 2018 OS/Arch: linux/amd64

Server: Engine: Version: 17.12.1-ce API version: 1.35 (minimum version 1.12) Go version: go1.9.4 Git commit: 7390fc6 Built: Tue Feb 27 22:17:54 2018 OS/Arch: linux/amd64 Experimental: false


或者

sudo docker run hello-world


然后docker将下载测试镜像,并使用该镜像启动一个容器。看到类似以下输出表示成功

然后docker将下载测试镜像,并使用该镜像启动一个容器。看到类似以下输出表示成功

Unable to find image 'hello-world:latest' locally docker: Error response from daemon: Get https://registry-1.docker.io/v2/library/hello-world/manifests/latest: Get https://auth.docker.io/token?scope=repository%3Alibrary%2Fhello-world%3Apull&service=registry.docker.io: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers). See 'docker run --help'.


## 八、虚拟机安装了docker可能启动有问题,关闭并且禁止NetworkManager服务,修改配置文件

systemctl stop NetworkManager systemctl disable NetworkManager

ip addr查看网卡的mac地址,复制 修改网卡的配置:/etc/sysconfig/network-script/ifcfg-ens BOOTPROTO=dhcp HWADDR=mac地址


## 九、卸载docker

1、删除docker软件包

sudo yum remove docker-ce


2、若需删除docker存储的文件,例如镜像、容器、卷等信息,执行:

sudo rm -rf /var/lib/docker


## 十、docker升级

1. 首先,使用以下命令之一确认当前Docker CE的版本:

docker version # 查看docker的版本信息 docker version | grep -i version # 查看docker的版本号


2. 然后,您可以使用以下命令升级新版的Docker CE。假设您要安装的版本是 `docker-ce-&lt;VERSION&gt;`:

yum list docker-ce.x86_64 --showduplicates | sort -r #升级;相当于重新卸载安装 sudo yum remove docker-ce docker-ce-cli && yum install -y docker-ce-<VERSION> docker-ce-cli-<VERSION> yum upgrade -y docker-ce-<VERSION> docker-ce-cli-<VERSION> systemctl daemon-reload && systemctl restart docker


请将`&lt;VERSION&gt;`替换为您要升级到的版本号。

4. 安装完成后,您可以使用以下命令验证Docker CE的版本是否已更新:

docker version # 查看docker的版本信息 docker version | grep -i version # 查看docker的版本号


## 十一、容器通信问题--虚拟机

Centos默认设置/proc/sys/net/ipv4/ip_forward 为 0,这从底层阻断了Docker所有网络。一般虚拟机默认是阻断的

解决办法:

vi /usr/lib/sysctl.d/00-system.conf

添加如下代码:

net.ipv4.ip_forward=1 net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-arptables = 1


重启network服务

systemctl restart network


## 十二、开启远程管理

Docker 默认不开启管理端口 2375就必须先对 docker.service 文件修改。

nano /usr/lib/systemd/system/docker.service


找到以下句子

`ExecStart=/usr/sbin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock $DOCKER_OPTS`

在中间添加 tcp://0.0.0.0:2375 -H,如下:

`ExecStart=/usr/sbin/dockerd -H tcp://0.0.0.0:2375 -H fd:// --containerd=/run/containerd/containerd.sock $DOCKER_OPTS`

**加载并重启**

systemctl daemon-reload && systemctl restart docker