发布时间:2026/8/3 11:23:03
Docker 基础应用与介绍 Docker 基础应用Docker 是一个开源的应用容器引擎基于 Go 语言开发。它允许开发者将应用程序及其所有依赖项如代码、运行时、库、环境变量和配置文件等打包到一个轻量级、可移植的“容器”中。这个容器可以在任何安装了 Docker 引擎的 Linux 或 Windows 机器上运行且保证了环境的高度一致性。Docker 的核心优势环境一致性解决“在我的机器上能运行”的问题Docker 将应用及其依赖打包在一起确保了开发、测试和生产环境的绝对一致极大减少了因环境差异导致的 Bug。轻量级与高效与传统虚拟机VM需要模拟完整的操作系统不同Docker 容器共享宿主机的操作系统内核。因此容器体积更小通常为 MB 级别启动速度极快秒级甚至毫秒级且对 CPU 和内存的资源消耗极低。卓越的可移植性“一次构建到处运行”。无论是在你的本地笔记本、公有云服务器还是本地数据中心只要目标机器安装了 Docker就可以无缝运行相同的容器。快速部署与弹性扩展通过 Dockerfile 可以实现镜像构建的自动化。结合 CI/CD持续集成/持续交付流程和 Kubernetes 等编排工具可以实现应用的快速交付和自动化弹性伸缩。隔离性与安全性每个容器都在独立的命名空间和 cgroups 中运行彼此隔离。一个容器的崩溃或资源耗尽通常不会直接影响宿主机或其他容器。docker 与虚拟机的区别Docker 容器虚拟机共享宿主机内核每台虚拟机有自己的内核隔离的是进程视图虚拟化整台计算机启动通常很快需要启动完整操作系统资源开销较小资源开销较大隔离通常弱于虚拟机隔离通常更强Docker 的安装在线安装Ubuntu和Centosdocker 再安装的时候可以使用离线安装或者是在线安装两种方式如果是在线安装的话推荐使用阿里云开源镜像站的安装方法他里面提供了docker的加速镜像源网址https://developer.aliyun.com/mirror/打开docker-ce 网站里面一共有两种安装方式、一种是Ubuntu一种是centos的。openeuler我这里使用的是openeuler操作系统openEuler 官方源中提供了开箱即用的 Docker 及相关组件。直接使用yum安装即可安装命令如下# 更新当前系统的yum 源[rootlocalhost ~]# yum update# 安装 Docker 引擎及常用组件[rootlocalhost ~]# yum install -y docker docker-compose# 查看当前安装docker的版本号[rootlocalhost ~]# docker versionClient: Version:18.09.0 EulerVersion:18.09.0.351 API version:1.39Go version: go1.21.4 Git commit: 6273e58 Built: Wed Apr818:05:592026OS/Arch: linux/amd64 Experimental:falseServer: Engine: Version:18.09.0 EulerVersion:18.09.0.351 API version:1.39(minimum version1.12)Go version: go1.21.4 Git commit: 6273e58 Built: Wed Apr818:05:332026OS/Arch: linux/amd64 Experimental:false# 查看docker进程 是否运行[rootlocalhost ~]# systemctl status docker● docker.service - Docker Application Container Engine Loaded: loaded(/usr/lib/systemd/system/docker.service;enabled;preset: disabled)Active: active(running)since Sun2026-08-0213:44:57 CST;13min ago Docs: https://docs.docker.com Main PID:25944(dockerd)Tasks:21(limit:31996)Memory:38.3M()CGroup: /system.slice/docker.service ├─25944 /usr/bin/dockerd --live-restore └─25952 containerd--config/var/run/docker/containerd/containerd.toml --log-level infodaemon.json文件调试在 Docker 中daemon.json 是 Docker 守护进程Docker Daemon的核心配置文件。通过修改这个文件可以自定义 Docker 的存储路径、日志大小、镜像加速地址、网络配置等。它的默认路径是/etc/docker/daemon.json[rootlocalhost docker]# cat/etc/docker/daemon.json{insecure-registries:[registry.access.redhat.com,quay.io],registry-mirrors:[https://q2gr04ke.mirror.aliyuncs.com,http://hub-mirror.c.163.com,https://docker.mirrors.ustc.edu.cn],bip:192.168.17.1/24,exec-opts:[native.cgroupdriversystemd],live-restore:false,dns:[114.114.114.114,8.8.8.8]}配置项 (Key)值 (Value)作用说明 (Description)insecure-registries[registry.access.redhat.com, quay.io]配置不安全的镜像仓库允许 Docker 通过 HTTP 而非 HTTPS 访问这些指定的私有仓库。registry-mirrors[https://q2gr04ke.mirror.aliyuncs.com, http://hub-mirror.c.163.com, https://docker.mirrors.ustc.edu.cn]配置国内镜像加速器地址加速从 Docker Hub 拉取镜像的速度包含阿里云、网易、中科大源。bip192.168.17.1/24自定义 Docker 默认网桥docker0的 IP 地址和子网掩码用于避免与宿主机或其他网络发生 IP 冲突。exec-opts[native.cgroupdriversystemd]配置容器运行时的 cgroup 驱动。设置为systemd能与操作系统的 systemd 更好地集成是 CentOS/openEuler 等系统的官方推荐配置。live-restorefalse配置 Docker 守护进程重启或停止时的行为。设为false表示当 Docker 服务停止时其管理的容器也会随之停止。dns[114.114.114.114, 8.8.8.8]为容器配置自定义的 DNS 服务器地址解决容器内部无法解析域名的问题配置了国内 114 DNS 和 Google DNS。其中bip的配置表示当前系统生成的docker0的网卡的IP地址。默认是172.17.0.1/16当该网卡使用的IP地址与宿主机的IP地址重复为一个网段时建议将docker0的IP地址进行修改。否则会导致docker容器无法正常使用。重启服务使daemon.json配置生效[rootlocalhost docker]# systemctl daemon-reload[rootlocalhost docker]# systemctl restart dockerJobfordocker.service failed because the control process exited with error code. Seesystemctl status docker.serviceandjournalctl -xeu docker.servicefordetails.注意这里再启动docker的时候报错我们可以使用journalctl -xeu docker.service来查看一下报错的原因是什么journalctl -xeu docker.service ./docker.log把journalctl 输出的日志保存到当前目录的docker.log 文件中tail -n 200 docker.log查看docker.log中最后200行的日志通过日志描述可以看到时我们配置的daemon.json中的live-restore 与 systemd 启动文件docker.service中的命令行参数发生了冲突两个参数重复使用了那我们把daemon.json中的live-restore删除后重新在家启动即可。修改后的配置{insecure-registries:[registry.access.redhat.com,quay.io],registry-mirrors:[https://q2gr04ke.mirror.aliyuncs.com,http://hub-mirror.c.163.com,https://docker.mirrors.ustc.edu.cn],bip:192.168.17.1/24,exec-opts:[native.cgroupdriversystemd],dns:[114.114.114.114,8.8.8.8]}重启服务并重新加载配置[rootlocalhost docker]# systemctl daemon-reload[rootlocalhost docker]# systemctl restart docker重启完成之后查看docker0的IP地址是否已经修改了与我们配置文件中的一致查看docker的镜像仓库与镜像加速地址是否修改namespace和CgroupNamespace 决定容器“能看见什么”cgroup 决定容器“能使用多少资源”。它们都是 Linux 内核能力并不是 Docker 自己发明的。Docker 负责配置这些能力runc 等 OCI Runtime 负责创建。Linux 宿主机内核容器 A 的进程容器 B 的进程Namespace A进程、网络、挂载等视图Namespace B独立的视图cgroup ACPU 1核、内存 512MBcgroup BCPU 2核、内存 1GBNamespace 用于隔离系统资源的“视图”。容器里的程序看起来像运行在独立系统中但实际上仍是宿主机上的普通 Linux 进程。Linux 内核为不同进程保存不同的资源对象引用。执行系统调用时内核根据当前进程所属的 Namespace访问对应的资源对象。PID Namespace隔离进程编号和进程列表。Network Namespace隔离网络资源包括网卡 IP 地址 路由表 防火墙规则 端口 Socket使用下面的参数会共享宿主机网络docker run --networkhost nginxMount Namespace隔离文件系统挂载视图。容器中挂载或卸载文件系统一般不会影响其他容器。User Namespace隔离用户和 UID/GID。启用 User Namespace 后可以将容器内 rootUID 0 映射为宿主机普通用户例如 UID 100000需要注意普通 Docker 默认配置下容器内 root 不一定自动映射成宿主机普通用户。需要配置 userns-remap或者使用 Rootless Docker。cgroupcgroup 全称是 Control Groups用于统计和限制一组进程能够使用的资源。现代 Linux 通常使用 cgroup v2但核心原理相同。限制内存docker run --memory512m nginx:表示容器最多使用大约 512MB 内存。超过硬限制且无法回收时内核可能触发 OOM并终止容器中的进程。限制 CPUdocker run --cpus1.5 nginx:表示容器最多获得约 1.5 个 CPU 核心的计算能力但不一定固定运行在某个核心上。限制进程数量docker run --pids-limit100 nginx:防止容器创建过多进程例如避免 Fork Bomb 耗尽宿主机 PID。查看资源统计docker stats显示的 CPU、内存、网络和 I/O 数据很多来自 cgroup 统计信息。对比项Namespacecgroup核心作用隔离资源视图统计和限制资源解决的问题容器能看到什么容器能使用多少典型对象PID、网络、挂载、主机名CPU、内存、进程数、I/O是否限制资源一般不负责是是否隐藏资源是一般不负责docker 镜像docker 镜像原理Linux文件系统由bootfs和rootfs两部分组成bootfs包含bootloader引导加载程序和 kernel内核rootfs root文件系统包含的就是典型 Linux 系统中的/dev /proc/bin/etc等标准目录和文件不同的linux发行版bootfs基本一样而rootfs不同如ubuntu centos等docker镜像原理Docker镜像是由特殊的文件系统叠加而成最底端是 bootfs并使用宿主机的bootfs第二层是root文件系统rootfs,称为base image然后再往上可以叠加其他的镜像文件统一文件系统UnionFile System技术能够将不同的 层整合成一个文件系统为这些层提供了一个统一 的视角这样就隐藏了多层的存在在用户的角度看来只存在 一个文件系统一个镜像可以放在另一个镜像的上面。位于下面的镜像称为父镜像最底部的镜像成为基础镜像。当从一个镜像启动容器时Docker会在最顶层加载一个读 写文件系统作为容器docker 镜像相关命令查看docker镜像# 查看镜像: 查看本地所有的镜像[rootlocalhost ~]# docker images镜像名称 版本号 镜像ID 镜像存在时间 镜像大小 REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 5d0da3dc97642years ago 231MB[rootlocalhost ~]# docker images -q #查看所有的镜像ID5d0da3dc9764搜索镜像:从网络中查找需要的镜像dockersearch 镜像名称 NAME:镜像的名称 DESCRIPTION镜像的描述 STARS镜像的大小 OFFICIAL镜像是否是官方维护 如果至位【ok】则代表该镜像是官方维护的镜像 注意如果需要查看镜像的版本号则需要到https://hub.docker.com的docker镜像仓库官方网站中去查看[rootlocalhost ~]# docker search nginxNAME DESCRIPTION STARS OFFICIAL nginx Official build of Nginx.19730[OK]unit Official build of NGINX Unit: Universal Web …25[OK]nginx/nginx-ingress NGINX and NGINX Plus Ingress Controllers fo…89nginxinc/nginx-unprivileged Unprivileged NGINX Dockerfiles144nginx/nginx-prometheus-exporter NGINX Prometheus ExporterforNGINX and NGIN…39nginxinc/nginx-s3-gateway Authenticating and caching gateway based on …6nginx/unit This repository is retired, use the Docker o…64nginx/nginx-ingress-operator NGINX Ingress OperatorforNGINX and NGINX P…2nginxinc/amplify-agent NGINX Amplify Agentdockerrepository1nginx/nginx-quic-qns NGINX QUIC interop1nginxinc/ingress-demo Ingress Demo4nginxproxy/nginx-proxy Automated nginx proxyforDocker containers …132nginxproxy/acme-companion Automated ACME SSL certificate generation fo…131bitnami/nginx Bitnami nginx Docker Image184bitnami/nginx-ingress-controller Bitnami Docker ImageforNGINX Ingress Contr…32ubuntu/nginx Nginx, a high-performance reverse proxywe…112nginxinc/nginmesh_proxy_debug0nginxproxy/docker-gen Generate files fromdockercontainer meta-da…16nginxinc/mra-fakes30kasmweb/nginx An Nginx image based off nginx:alpine and in…7nginxinc/nginmesh_proxy_init0nginxinc/mra_python_base0nginxinc/ngx-rust-tool0rancher/nginx-ingress-controller12拉取镜像:从Docker仓库下载镜像到本地镜像名称格式为名称:版本号如果版本号不指定则是最新的版本。 如果不知道镜像版本可以去docker hub搜索对应镜像查看dockerpull 镜像名称[rootlocalhost ~]# docker pull centosUsing default tag: latest latest: Pulling from library/centos a1d0c7532777: Pull complete Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177 Status: Downloaded newer imageforcentos:latest docker.io/library/centos:latest[rootlocalhost ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE centos latest 5d0da3dc97642years ago 231MB删除镜像dockerrmi 镜像id# 删除指定本地镜像dockerrmidockerimages-q# 删除所有本地镜

相关新闻

2026/8/3 11:23:03

Fastboot模式下查看安卓分区信息:从驱动安装到命令实战

1. 项目概述:为什么需要查看Fastboot分区信息? 当你把安卓设备通过数据线连接到电脑,屏幕上显示一只兔子躺在扳手旁的画面时,你就进入了Fastboot模式。这个模式对于开发者、玩机爱好者和维修人员来说,是一个功能强大的…

2026/8/3 11:18:03

Elasticsearch 8.x核心概念与实战管理指南

1. Elasticsearch 8.x核心概念与基础架构Elasticsearch作为当前最流行的分布式搜索和分析引擎,其8.x版本在性能、安全性和易用性方面都有显著提升。我们先从核心概念入手,理解其基本工作原理。1.1 核心数据模型解析Elasticsearch采用文档型数据库的设计理…

2026/8/3 11:18:03

DY溢出指数模型:金融风险传染的量化分析工具

1. DY溢出指数模型概述DY溢出指数模型(Diebold-Yilmaz Spillover Index)是金融计量经济学中用于分析市场间风险传染和波动溢出效应的经典方法。这个由Francis Diebold和Kamil Yilmaz在2009年提出的模型,本质上是通过方差分解技术来量化不同金…

2026/8/3 13:13:44

Python PyGame制作动态表白贺卡教程

1. 项目概述:用Python打造动态表白贺卡 去年情人节帮朋友做这个项目时,我深刻体会到Python在创意编程中的无限可能。这个表白贺卡项目融合了图片切换、动画效果和背景音乐三大核心功能,特别适合编程新手作为第一个实战项目。不同于简单的静态…

2026/8/3 13:13:44

Python爬虫与数据分析实战:从零到项目部署的完整学习路径

这次我们来看一套号称“B站最全最细”的Python全套教程,总集数高达600集,内容覆盖了从Python基础语法到爬虫、数据分析等核心实战技能,并打出了“7天从入门到精通,学完即可就业”的宣传口号。对于想系统学习Python,尤其…

2026/8/3 13:13:44

Python漫画爬取与可视化分析系统开发实践

1. 项目背景与核心价值 漫画作为一种广受欢迎的文化载体,每天都会产生海量的更新数据。传统的人工浏览方式已经无法满足深度分析需求,这正是我们开发"基于Python的漫画爬取与可视化分析系统"的初衷。这个系统能够自动化完成从数据采集到分析展…

2026/8/3 13:13:44

图像分类工程实践:从数据准备到模型部署的全流程指南

1. 从“看图说话”到“机器识图”:图像分类的工程化视角 如果你问一个刚接触机器学习的人,他最先想实现什么功能,十有八九会是“让电脑认出图片里是猫还是狗”。这个看似简单的需求,背后就是 图像分类 ——计算机视觉领域最基础…

2026/8/3 13:08:44

Unity集成TTSDK开发抖音小游戏:从环境配置到上架全流程指南

1. 项目概述:为什么UnityTTSDK是抖音小游戏的首选方案? 如果你是一个Unity开发者,最近肯定没少听到“抖音小游戏”这个词。它不再是简单的H5互动,而是能承载更复杂玩法和更好体验的“真游戏”。而Unity 2022.x作为当前LTS&#xf…

2026/8/2 0:02:18

如何用免费工具突破游戏窗口限制:SRWE完整使用指南

如何用免费工具突破游戏窗口限制:SRWE完整使用指南 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE 你是否遇到过这样的困扰?想为心爱的游戏截图,却发现游戏不支持自定义分辨率…

2026/8/2 1:52:02

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/1 0:03:49

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/2 8:56:50

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…