今天我们开始学习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   

安装完成。

相关推荐
崇山峻岭之间5 分钟前
Matlab学习记录09
开发语言·学习·matlab
橙露6 分钟前
VMware Workstation Pro 25H2的linux版本,免费分享,下载:全新命名体系 + 深度适配 Linux 内核,虚拟化效率拉满
java·linux·服务器
bing_feilong7 分钟前
ubuntu如何开机运行一个python3脚本?
linux·运维·ubuntu
走在路上的菜鸟9 分钟前
Android学Dart学习笔记第二十五节 类修饰符
android·笔记·学习·flutter
cnnews10 分钟前
某讯T1刷armbian
linux·ubuntu·开源·github
bj_zhb11 分钟前
git reflog用法
大数据·linux·git·github
OnlyEasyCode17 分钟前
Linux部署Nginx前后端web教程
linux·前端·nginx
亮子AI18 分钟前
【Typescript】未知类型如何处理?
linux·javascript·typescript
杨江27 分钟前
Jenkins on Linux安装部署
linux·运维·jenkins
youxiao_9028 分钟前
Docker 容器(二)
运维·docker·容器