Docker解决了什么问题?
工作中遇到过需要创建多个虚拟机部署应用的情况,但是通过VMware安装太慢了,而且资源占用非常庞大,软件应用还需要手动安装,无法实现自动化部署等等。Docker的诞生就是为了解决这个问题。打包应用以及依赖环境到一个可移植的容器中,然后发布到任何平台的主机上(Linux、Windows、MacOS)都能正常运行。
| 对比 | 虚拟机 | Docker容器 |
|---|---|---|
| 启动速度 | 龟速 | 秒级 |
| 镜像大小 | 1G以上 | M级别 |
| 集成方便度 | 手动安装 | dockerfile自动化 |
| 内存访问效率 | 慢,先访问虚拟地址 | 基本等同于宿主机 |
| Cpu损耗率 | 50% | 接近0损耗 |
容器技术发展的几个方向
Docker 专业术语概念
-
容器
容器是镜像运行时的实体,容器可以被创建、启动、停止、删除、暂停等。在镜像上创建了一个可读写的层。
-
镜像
镜像就是一个压缩包,它是由一个完整的操作系统的所有文件和目录组成,也就是说这个压缩包里的内容和你本地开发和测试环境用到的操作系统是完全一样的。镜像是分层的,并且只读。
-
引擎
用来打包容器镜像、以及运行容器。
-
仓库 存放镜像的地方
Docker 安装
- yum方式安装
1.安装依赖:yum -y install yum-utils device-mapper-persistent-data lvm2
2.添加仓库:yum-config-manager --add-repo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.安装docker:yum makecache fast && yum install docker-ce
4.设置自启动:systemctl enable docker && systemctl start docker
5.设置加速器
mkdir /etc/docker
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://docker.rainbond.cc"]
}
- 二进制包的方式安装
下载地址: https://mirrors.aliyun.com/docker-ce/linux/static/stable/x86_64/docker-23.0.6.tgz
tar -xf docker-23.0.6.tgz
cd docker/
cp * /usr/local/bin
vim /usr/lib/systemd/system/docker.service,填入以下内容:
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service time-set.target
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/local/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutStartSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
OOMScoreAdjust=-500
[Install]
WantedBy=multi-user.target
设置加速器
mkdir /etc/docker
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://docker.rainbond.cc"]
}
配置加速器后如果拉取镜像仍然十分缓慢,请手动检查加速器配置是否生效,在命令行中执行docker info,查看加速器是否配置正确