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 https://download.docker.com/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,通过命令卸载
```bash
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
- 查看docker安装包
yum list | grep docker
#列出所有包
yum list docker-ce --showduplicates | sort -r- 找到上面列出的镜像,下载docker社区版。具体镜像名称以实际为准
yum install -y docker-ce.x86_64
#如果没有上面的镜像,直接不指定版本安装
yum install -y docker-ce
#如果不安装社区版
yum install docker-io -y在生产环境当中,可能需要执行想要安装的版本,此时可使用以下命令里查询出当前可用的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修改镜像仓库
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-ce2、若需删除docker存储的文件,例如镜像、容器、卷等信息,执行:
sudo rm -rf /var/lib/docker十、docker升级
首先,使用以下命令之一确认当前Docker CE的版本:
docker version # 查看docker的版本信息 docker version | grep -i version # 查看docker的版本号然后,您可以使用以下命令升级新版的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>替换为您要升级到的版本号。
安装完成后,您可以使用以下命令验证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