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 versionClient: 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-<VERSION>`: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
请将`<VERSION>`替换为您要升级到的版本号。
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
