今天我们开始学习Docker概述与安装

一、 Docker概述


Docker简介

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可抑制的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器完全使用沙盒机制,相互之间不会存在任何接口。几乎没有性能开销,可以很容易的在机器和数据中心运行。最重要的是,他们不依赖于任何语言、框架或者包装系统。

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通常用于如下场景

  • web应用的自动化打包和发布;

  • 自动化测试和持续集成、发布;

  • 在服务型环境中部署和调整数据库或其他的后台应用;

  • 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。

二、 Docker 架构


Docker 包括三个基本概念

  • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。

  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

  • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

Docker 容器通过 Docker 镜像来创建。

三、 Docker安装


使用ansible,复制yum源

bash 复制代码
[root@ansible ~]# yum install -y docker-ce

编辑配置文件/etc/docker/daemon.json 做好仓库优化

bash 复制代码
[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

只能本地访问连接 并开机自启

bash 复制代码
[root@localhost ~]# systemctl daemon-reload
systemctl enable --now docker

查看进程状态

bash 复制代码
[root@ansible ~]# systemctl status docker
● docker.service - Docker Application Container Engine
     Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: disabled)
     Active: active (running) since Mon 2025-12-01 20:08:58 CST; 10min ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 1264 (dockerd)
      Tasks: 12
     Memory: 110.5M ()
     CGroup: /system.slice/docker.service
             └─1264 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

12月 01 20:08:57 ansible dockerd[1264]: time="2025-12-01T20:08:57.344303670+08:00" level=info msg="Deleting nftables IPv4 rule>
12月 01 20:08:57 ansible dockerd[1264]: time="2025-12-01T20:08:57.353650106+08:00" level=info msg="Deleting nftables IPv6 rule>
12月 01 20:08:58 ansible dockerd[1264]: time="2025-12-01T20:08:58.230686765+08:00" level=info msg="Loading containers: done."
12月 01 20:08:58 ansible dockerd[1264]: time="2025-12-01T20:08:58.255053382+08:00" level=warning msg="WARNING: Support for cgr>
12月 01 20:08:58 ansible dockerd[1264]: time="2025-12-01T20:08:58.255327296+08:00" level=info msg="Docker daemon" commit=46126>
12月 01 20:08:58 ansible dockerd[1264]: time="2025-12-01T20:08:58.256426145+08:00" level=info msg="Initializing buildkit"
12月 01 20:08:58 ansible dockerd[1264]: time="2025-12-01T20:08:58.293253324+08:00" level=info msg="Completed buildkit initiali>
12月 01 20:08:58 ansible dockerd[1264]: time="2025-12-01T20:08:58.311351983+08:00" level=info msg="Daemon has completed initia>
12月 01 20:08:58 ansible dockerd[1264]: time="2025-12-01T20:08:58.311481164+08:00" level=info msg="API listen on /run/docker.s>
12月 01 20:08:58 ansible systemd[1]: Started Docker Application Container Engine.

查看访问接口

bash 复制代码
[root@ansible ~]# ps aux | grep docker
root        1264  0.1  2.3 2127184 80636 ?       Ssl  20:08   0:00 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
root        2442  0.0  0.2  21988  7936 pts/0    S+   20:21   0:00 grep --color=auto docker

查看镜像

bash 复制代码
[root@ansible ~]# docker images
                                                                                                          i Info →   U  In Use
IMAGE           ID             DISK USAGE   CONTENT SIZE   EXTRA
alpine:latest   4b7ce07002c6       12.8MB          3.8MB        
centos:7        be65f488b776        301MB         76.1MB        
nginx:latest    553f64aecdc3        225MB         59.8MB    U   

安装完成。

相关推荐
m0_683124791 分钟前
Ubuntu服务设置开机自启
linux·运维·ubuntu
BestOrNothing_20155 分钟前
(1)双系统中Ubuntu22.04启动盘制作与启动盘恢复全过程
linux·ubuntu·双系统·启动盘制作·启动盘恢复
AI成长日志9 分钟前
【实用工具教程】Linux常用命令速查与实战场景:文件操作、进程管理与网络调试高频命令解析
linux·php
落叶花开又一年14 分钟前
检验检测机构资质认定远程评审工作程序
linux·运维·服务器
CDA数据分析师干货分享15 分钟前
汉江师范学院数据科学与大数据技术专业大二学生:CDA一级学习经验
大数据·经验分享·学习·数据分析·cda证书·cda数据分析师
SuniaWang19 分钟前
《Spring AI + 大模型全栈实战》学习手册系列 · 专题四:《Ollama 模型管理与调优:让 AI 模型在低配服务器上流畅运行》
人工智能·学习·spring
idolao21 分钟前
CentOS 7 安装 jdk-7u25-linux-x64.tar.gz 详细步骤(解压配置环境变量)
linux
冰水不凉36 分钟前
cartographer源码阅读四-MapBuilder
学习·slam
旺仔.2911 小时前
僵死进程及Linux文件操作 详解
linux·运维·服务器
IMPYLH1 小时前
Linux 的 comm 命令
linux·运维·算法