目录
1. Docker是什么?
Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目。它基于 Google 公司推出的 Go 语言实现。项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议,项目代码在GitHub 上进行维护。
Docker 是一个开源的容器化平台,可以让开发者将应用程序及其依赖打包成一个独立的容器,从而实现应用程序的快速部署、可移植性和弹性伸缩。Docker 采用了轻量级的容器技术,可以在不同的环境中运行,包括开发、测试、生产等多个环境,而不需要重新配置或修改应用程序。
2. Docker优缺点
Docker 是一个开源的容器化平台,它的主要优点包括:
- 轻量级:Docker 容器只包含应用程序及其依赖,因此比传统虚拟机更轻量化,可以更快速地启动、停止和部署。
- 可移植性:Docker 容器可以在不同的环境中运行,包括开发、测试、生产等多个环境,而不需要重新配置或修改应用程序。
- 快速部署:Docker 容器可以在几秒钟内启动,因此可以更快速地部署应用程序,从而提高开发和部署的效率。
- 弹性伸缩:Docker 容器可以动态地扩展和缩小,根据需求自动调整容器的数量和资源使用情况,从而提高应用程序的可用性和性能。
- 简化配置:Docker 提供了一个统一的容器化平台,可以简化应用程序的配置和管理,从而减少错误和故障。
- 增强安全性:Docker 容器提供了一层额外的安全性,容器之间是隔离的,可以更好地保护应用程序和数据不受外部攻击的影响。
总之,Docker 的优点包括快速部署、简化配置、可移植性、弹性伸缩、增强安全性等,这些优点可以帮助企业更快速地部署应用程序,提高开发效率和运维效率,降低成本和风险。
虽然 Docker 有很多优点,但也存在以下一些缺点:
- 不适用于所有应用程序:Docker 适用于大多数应用程序,但某些应用程序可能无法容器化,比如需要访问硬件资源的应用程序。
- 容器间隔离不完全:虽然 Docker 容器提供了一定程度的隔离,但容器之间仍然可以相互访问,因此容器之间的安全性可能无法得到充分保障。
- 数据管理困难:Docker 容器本身是不持久化的,因此需要使用卷或挂载主机目录来实现数据的持久化,这可能会导致数据管理上的困难。
- 性能损失:Docker 容器需要运行在宿主操作系统上,因此可能存在一定的性能损失,特别是在某些 I/O 密集型应用程序中。
3. 安装Docker
1、环境准备
# 系统内核
[root@docker ~] # uname -r
3.10.0-1160.el7.x86_64
# 系统版本
[root@docker ~] # cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
2、关闭防火墙
# 关闭防火墙
systemctl disable --now firewalld
# 关闭selinux
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
3、安装一些系统软件包
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
4、开启包转发功能和修改内核参数
# 内核参数修改:br_netfilter模块用于将桥接流量转发至iptables链,br_netfilter内核参数需要开启转发。
modprobe br_netfilter
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
5、安装docker-ce
(1)配置docker-ce yum源
# 配置docker-ce国内yum源(阿里云)
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 国外的docker-ce源
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
(2)安装docker依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
(3)安装docker-ce
yum install -y docker-ce docker-ce-cli containerd.io
(4)启动docker
systemctl enable --now docker
然后可以用docker version命令测试Docker是否安装成功,并查看Docker的版本信息
(4)运行Hello World镜像测试
docker run hello-world
4. 卸载Docker的方法
# 卸载Docker-ce软件包
yum remove -y docker-ce docker-ce-cli containerd.io
# 删除Docker工作路径 /var/lib/docker为Docker的默认工作路径
rm -rf /var/lib/docker
5. 配置阿里云镜像加速器
登录自己阿里云账号,找到产品与服务下的容器与中间件中的容器镜像服务
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://4u6ad4xd.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker