一、 Docker概述
Docker简介

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可抑制的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器完全使用沙盒机制,相互之间不会存在任何接口。几乎没有性能开销,可以很容易的在机器和数据中心运行。最重要的是,他们不依赖于任何语言、框架或者包装系统。 Docker是dotCloud公司开源的一个基于LXC的高级容器引擎,源码托管在Github上,基于go语言并且遵从Apache2.0协议开源。
GitHub地址:https://github.com/moby/moby
LXC主要通过Kernel的namespace实现每个用户实例之间的项目隔离,通过cgroup实现对资源的配额和调度。
Docker容器技术与虚拟机的区别
相同点:docker容器技术和虚拟机技术,都是虚拟化技术。
不同点:
虚拟机技术:

docker容器技术:

通过图片,我们很明显的看到docker有着比虚拟机更少的抽象层。 由于docker不需要Hypervisor实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。所以docker效率比虚拟机效率高。达到了秒级启动的地步。
Docker相较于VM的优点
- 比VM小、快,Docker容器的尺寸减小相比于整个虚拟机大大简化了分布到云和分发时间的开销。Docker启动一个容器实例时间仅仅需要几秒钟。
- Docker是一个开放的平台,构建、发布和运行分布式应用程序。
- 开发人员不需要关注具体是哪个Linux操作系统。
- Google、微软(azure)、亚马逊(AWS)、IBM等都支持docker。
- Docker支持Unix/Linux操作系统,也支持Windows和Mac。
- 一次封装,到处运行
Docker局限性
Docker用于应用程序时是最有用的,但并不包含数据。日志、数据库等通常放在Docker容器外。一个容器的镜像通常都很小,不用存储大量数据,存储可以通过外部挂载等方式使用,比如:NFS、ipsan、MFS、ceph等 ,或者docker -v 命令进行映射磁盘。
总之,docker只用于计算,存储交给别人。
二、 Docker 架构
Docker 包括三个基本概念
- 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
- 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
- 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。
Docker 容器通过 Docker 镜像来创建。

三、 Docker安装
1、使用官方安装脚本自动安装
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
2、启动 Docker
[root@localhost ~]# systemctl start docker
##通过运行 hello-world 镜像来验证是否正确安装了 Docker Engine-Community 。
[root@localhost ~]# docker run hello-world
3、卸载 Docker
##删除安装包
[root@localhost ~]# yum remove docker-ce
##删除镜像、容器、配置文件等内容
[root@localhost ~]# rm -rf /var/lib/docker
四、 Docker 镜像加速
国内从 DockerHub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。Docker 官方和国内很多云服务商都提供了国内加速器服务,
##编辑配置文件
[root@localhost ~]#
cat <<EOF >>/etc/docker/daemon.json
{
"registry-mirrors": [
"https://0vmzj3q6.mirror.aliyuncs.com",
"https://docker.m.daocloud.io",
"https://mirror.baidubce.com",
"https://dockerproxy.com",
"https://mirror.iscas.ac.cn",
"https://huecker.io",
"https://dockerhub.timeweb.cloud",
"https://noohub.ru",
"https://vlgh0kqj.mirror.aliyuncs.com"
]
}
EOF
##重新启动服务
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker
五、/etc/docker/daemon.json 配置文件
核心配置字段
data-root
- 指定 Docker 数据存储路径(替代旧的 graph 选项)
- 示例:"/mnt/docker-data"
2. exec-opts
- 运行时选项(如 cgroup 驱动)
- 示例:["native.cgroupdriver=systemd"]
3. log-driver
- 默认容器日志驱动(如 json-file, syslog, journald)
- 示例:"json-file"
4. log-opts
- 日志驱动的配置选项
- 示例:{"max-size": "10m", "max-file": "3"}
网络配置
5. bip
- 指定网桥 IP 地址(如 "192.168.1.1/24")
6. default-address-pools
- 自定义默认 IP 地址池
- 示例:[{"base": "10.10.0.0/16", "size": 24}]
7. dns
- 自定义 DNS 服务器
- 示例:["8.8.8.8", "1.1.1.1"]
8. mtu
- 容器网络 MTU 值
示例
{
"data-root": "/var/lib/docker",
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"registry-mirrors": ["https://registry.example.com"],
"insecure-registries": ["myregistry.local:5000"],
"live-restore": true,
"features": {
"buildkit": true
}
}
注意事项
修改后需重启 Docker 服务:sudo systemctl restart docker
可通过 docker info 验证配置是否生效
589

被折叠的 条评论
为什么被折叠?



