Docker(一)简介以及安装
Docker简介以及安装
一、 Docker是什么?
指南:https://docs.docker.com/reference/
Dockerhub 官网 :https://registry.hub.docker.com
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了。
二、Docker 架构

| 概念 | 说明 |
|---|---|
|
Docker 镜像(Images) |
Docker 镜像是用于创建 Docker 容器的模板,比如 Ubuntu 系统。 |
|
Docker 容器(Container) |
容器是独立运行的一个或一组应用,是镜像运行时的实体。 |
|
Docker 客户端(Client) |
Docker 客户端通过命令行或者其他工具使用 Docker SDK (https://docs.docker.com/develop/sdk/) 与 Docker 的守护进程通信。 |
|
Docker 主机(Host) |
一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。 |
|
Docker Registry |
Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。 Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。 一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。 通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。 |
|
Docker Machine |
Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。 |
三、docker 与虚拟机的区别
简单一句话虚拟机隔离操作系统、docker能隔离应用与应用。docker与物理主机公用一个内核,而虚拟机必须要模拟和电脑一样真实配置。

四、Docker安装
官方文档安装教程: https://docs.docker.com/engine/install/centos/
以下步骤适用于Centos7.6-centos7.9
1、查看当前系统的版本
cat /etc/centos-release
2、配置主机名:
hostnamectl set-hostname dengwei && bash
3、关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
4、关闭 iptables 防火墙
#安装 iptables
yum install iptables-services -y
# 禁用 iptables
service iptables stop && systemctl disable iptables
# 清空防火墙规则
iptables -F
5、临时关闭 selinux
setenforce 0
永久关闭
vim /etc/selinux/config
设置如下配置
SELINUX=disabled
注意:修改 selinux 配置文件之后,重启机器(reboot),selinux 才能永久生效
通过 getenforce 查看是否生效
显示 Disabled 表示 selinux 关闭成功
6、配置时间同步
yum install -y ntp ntpdate
ntpdate cn.pool.ntp.org
# 配置定时同步时间任务
crontab -e
输入如下配置:
* */1 * * * /usr/sbin/ntpdate cn.pool.ntp.org
重启 crond 服务使配置生效:
systemctl restart crond
7、安装基础软件包
yum install -y wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel python-devel epel-release openssh-server socat ipvsadm conntrack
8、安装 docker-ce
安装 docker 依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
配置 docker-ce 国内 yum 源(阿里云)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装 docker-ce
yum install docker-ce -y
9、启动 docker 服务
systemctl start docker && systemctl enable docker
查看启动状态
systemctl status docker
查看 Docker 版本信息
docker version
10、开启包转发功能和修改内核参数
内核参数修改:br_netfilter 模块用于将桥接流量转发至 iptables 链,br_netfilter 内核参数需要开
启转发。
[root@dengwei ~]# modprobe br_netfilter
[root@dengwei ~]# cat > /etc/sysctl.d/docker.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
# 使参数生效
sysctl -p /etc/sysctl.d/docker.conf
# 查看是否生效,如果显示br_netfilter即生效
[root@dengwei ~]# lsmod | grep br_netfilter
重启后模块失效,下面是开机自动加载模块的脚本在/etc/新建 rc.sysinit 文件
vim /etc/rc.sysinit
加入如下配置:
cat /etc/rc.sysinit
#!/bin/bash
for file in /etc/sysconfig/modules/*.modules ; do
[ -x $file ] && $file
done
在/etc/sysconfig/modules/目录下新建文件如下
vim /etc/sysconfig/modules/br_netfilter.modules
加入如下配置:
modprobe br_netfilter
增加权限
chmod 755 /etc/sysconfig/modules/br_netfilter.modules
注:开启包转发和修改内核参数主要解决
Docker 安装后出现:WARNING: bridge-nf-call-iptables is disabled 的解决办法:
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1:
将 Linux 系统作为路由或者 VPN 服务就必须要开启 IP 转发功能。当 linux 主机有多个网卡时一个网卡收
到的信息是否能够传递给其他的网卡 ,如果设置成 1 的话 可以进行数据包转发,可以实现 VxLAN 等功
能。不开启会导致 docker 部署应用无法访问。
11、重启 docker
systemctl restart docker
12、配置 docker 镜像加速器
登陆阿里云镜像仓库
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
如果没有开通,可开通阿里云的镜像服务。注意现在阿里云的镜像加速支持阿里的云产品。本地使用不了。
最新的镜像加速地址获取,https://cloud.tencent.com/developer/article/2485043,可以在https://xuanyuan.cloud/搜索到想要的镜像后,再在docker 进行pull操作,直接docker search的话还是会超时。
修改 /etc/docker/daemon.json,设置 registry mirror,具体命令如下:
sudo vim /etc/docker/daemon.json <<EOF { "registry-mirrors": [ "https://docker.xuanyuan.me" ] } EOF
重启生效:
systemctl daemon-reload
systemctl restart docker
如果是使用阿里云的产品可以使用下面的加速地址


浙公网安备 33010602011771号