news 2026/3/11 11:33:40

docker基础

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
docker基础

docker基础

文章目录

  • docker基础
    • 容器
    • Docker 的核心组件
    • Docker 内部具体实现
    • docker安装
    • 配置镜像加速器(华为云)
    • docker C/S分离部署

容器

  1. 容器是一种轻量级、可移植、自包含的软件打包技术,使应用程序可以在几乎任何地方以相同的方式运 行。开发人员在自己笔记本上创建并测试好的容器,无需任何修改就能够在生产系统的虚拟机、物理服 务器或公有云主机上运行。
  2. 与虚拟机对比,两者都是为应用提供封装和隔离。容器由应用程序本身和依赖(比如应用程序需要的库或其他软件)组成。容器启动速度快、内核共享、进程级别隔离、宿主机直接管理、分层镜像、一台服务器可启动1000+台容器。
  3. 容器使软件具备了超强的可移植能力。例如集装箱的发明。容器意味着环境隔离和可重复性。开发人员只需为应用创建一次运行环境,然后打包成容器便可在其他 机器上运行。另外,容器环境与所在的 Host 环境是隔离的,就像虚拟机一样,但更快更简单。只需要配置好标准的 runtime 环境,服务器就可以运行任何容器。这使得运维人员的工作变得更高效, 一致和可重复。

Docker 的核心组件

  1. Docker 客户端 - Client
  2. Docker 服务器 - Docker daemon
  3. Docker 镜像 - Image
  4. Registry 仓库
  5. Docker 容器 - Container

Docker 内部具体实现

  1. 用户是使用Docker Client与Docker Daemon建立通信,并发送请求给后者。
  2. Docker Daemon作为Docker架构中的主体部分,首先提供Docker Server的功能使其可以接受 Docker Client的请求
  3. Docker Engine执行Docker内部的一系列工作,每一项工作都是以一个Job的形式的存在。
  4. Job的运行过程中,当需要容器镜像时,则从DockerRegistry中下载镜像,并通过镜像管理驱动 Graph driver将下载镜像以Graph的形式存储。
  5. 当需要为Docker创建网络环境时,通过网络管理驱动Networkdriver创建并配置Docker容器网络环 境。
  6. 当需要限制Docker容器运行资源或执行用户指令等操作时,则通过Exec driver来完成。
  7. Libcontainer是一项独立的容器管理包,Networkdriver以及Execdriver都是通过Libcontainer来实 现具体对容器进行的操作。

docker安装

安装 Docker Docker 支持几乎所有的 Linux 发行版,也支持 Mac 和 Windows。各操作系统的安装方法可以访问:https://docs.docker.com/engine/installation/

#克隆centos-stream-8模板#修改主机名和ip地址[root@localhost ~]# hostnamectl set-hostname docker[root@localhost ~]# nmcli connection modify ens160 ipv4.method manual[root@localhost ~]# nmcli con up ens160#卸载旧版本(可选)[root@docker ~]# yum remove docker-ce#安装必要工具# devicemapper 存储驱动已经在 docker 18.09 版本中被废弃,所以在后续的安Docker装中无需安装devicemapper支持。[root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2 vim[root@localhost ~]# yum-config-manager --add-repo[root@localhost ~]# yum makecache#allinone部署#安装软件[root@docker ~]# yum install -y docker-ce#配置服务[root@docker ~]# systemctl enable docker.service --now#验证状态[root@docker ~10:08:02]# docker --versionDocker version26.1.3, build b72abbb[root@docker ~10:08:06]# systemctl status docker● docker.service - Docker Application Container Engine Loaded: loaded(/usr/lib/systemd/system/docker.service;enabled;vendor preset: dis>Active: active(running)since Mon2026-01-1210:08:02 CST;9s ago Docs: https://docs.docker.com Main PID:11423(dockerd)Tasks:10Memory:34.0M...

配置镜像加速器(华为云)

#打开华为云swr容器镜像服务[root@docker ~]# vi /etc/docker/daemon.json{"registry-mirrors":["https://4763bb9ecfcd4b229c2653d0d8c88618.mirror.swr.myhuaweicloud.com"]}#重启容器引擎[root@docker ~]# systemctl restart docker#确认配置结果[root@docker ~]# docker info#运行第一个容器[root@docker ~]# docker run hello-world#其过程可以简单的描述为:#1. 从本地查找hello-wrold镜像,没找到#2. 从 Docker Hub 下载hello-world镜像。#3. 启动hello-world容器。#清空实验环境#删除所有容器[root@docker ~]# docker rm -f $(docker ps -aq)#删除镜像hello-world[root@docker ~]# docker rmi -f hello-world#关机拍摄快照#运行第二个容器[root@docker ~]# docker run -d -p 80:80 httpd#其过程可以简单的描述为:#1. 从 Docker Hub 下载 httpd 镜像。镜像中已经安装好了 Apache HTTP Server。#2. 启动 httpd 容器,并将容器的 80 端口映射到 host 的 80 端口。[root@docker ~]# curl 192.168.108.30#可以访问容器的 http 服务,第一个容器运行成功,拥有了一个 WEB 服务器。

docker C/S分离部署

  • docker server端配置
#克隆两份centos-stream-8模板#ip 192.168.108.30[root@localhost ~]# hostnamectl set-hostname docker_server[root@localhost ~]# nmcli connection modify ens160 ipv4.method manual ipv4.addresses 192.168.108.30/24 ipv4.gateway 192.168.108.2 ipv4.dns 192.168.108.2 autoconnect yes[root@localhost ~]# nmcli con up ens160#安装软件[root@docker_server ~]# yum install -y yum-utils device-mapper-persistent-datalvm2vim[root@localhost ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo[root@docker_server~]# yum makecache[root@docker_server ~]# yum install -y docker-ce[root@docker_server ~]# systemctl enable docker.service --now[root@docker_server ~]# vi /etc/docker/daemon.json{"registry-mirrors":["https://4763bb9ecfcd4b229c2653d0d8c88618.mirror.swr.myhuaweicloud.com"]}#重启容器引擎[root@docker_server ~]# systemctl restart docker#配置服务[root@docker_server ~]# vim /usr/lib/systemd/system/docker.service# 在ExecStart参数中最后添加 -H tcp://0.0.0.0:2375,docker默认监听2375ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375[root@docker_server ~]# systemctl daemon-reload[root@docker_server ~]# systemctl restart docker.service[root@docker_server ~]# systemctl stop firewalld#验证[root@docker_server ~]# yum install lsof[root@docker_server ~]# lsof -i :2375
  • docker_client端
#ip 192.168.108.31[root@localhost ~]# hostnamectl set-hostname docker_client[root@localhost ~]# nmcli connection modify ens160 ipv4.method manual ipv4.addresses 192.168.108.31/24 ipv4.gateway 192.168.108.2 ipv4.dns 192.168.108.2 autoconnect yes[root@localhost ~]# nmcli con up ens160#只安装docker客户端[root@docker-client ~]# yum install -y yum-utils device-mapper-persistent-data lvm2 vim[root@docker-client ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo[root@docker-client~]# yum makecache[root@docker-client ~]# yum install -y docker-ce-cli#验证[root@docker_client ~]# docker run hello-world#client直接执行报错,没有装服务端# client端连接server端执行命令[root@docker-client ~]# docker -H 192.168.108.30 run hello-world[root@docker-client ~]# docker -H 192.168.108.30 images#这里也可以切换到Server端查看现象#client只做管理,image和container存储在server端。

er端执行命令
[root@docker-client ~]# docker -H 192.168.108.30 run hello-world

[root@docker-client ~]# docker -H 192.168.108.30 images

#这里也可以切换到Server端查看现象

#client只做管理,image和container存储在server端。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/10 14:04:45

快速优化Mac鼠标滚动:完整平滑体验指南

快速优化Mac鼠标滚动:完整平滑体验指南 【免费下载链接】Mos 一个用于在 macOS 上平滑你的鼠标滚动效果或单独设置滚动方向的小工具, 让你的滚轮爽如触控板 | A lightweight tool used to smooth scrolling and set scroll direction independently for your mouse …

作者头像 李华
网站建设 2026/3/11 21:10:51

Qwen All-in-One性能对比:与传统多模型方案的优劣分析

Qwen All-in-One性能对比:与传统多模型方案的优劣分析 1. 背景与问题提出 在当前AI应用快速落地的背景下,边缘设备和低资源环境下的模型部署成为工程实践中的关键挑战。尤其是在缺乏GPU支持的CPU服务器或本地终端上,如何在有限算力下实现多…

作者头像 李华
网站建设 2026/3/10 18:20:23

提示工程架构师前沿实践:用动态prompt适应用户需求变化的创新案例

提示工程架构师前沿实践:用动态Prompt适应用户需求变化的创新案例 引言:静态Prompt的“刻舟求剑”困境 作为一名提示工程架构师,我曾遇到过这样的真实场景: 某头部电商平台的智能客服系统,初期用静态Prompt覆盖了“退货…

作者头像 李华
网站建设 2026/3/10 20:33:08

STM32定时器控制LED灯亮度深度剖析

STM32定时器驱动LED调光:从原理到实战的硬核指南 你有没有遇到过这样的场景?想让一块开发板上的LED灯“呼吸”起来,结果用软件延时写了个闪烁程序,灯光生硬得像故障报警;或者调节亮度时,低档位根本看不出变…

作者头像 李华
网站建设 2026/3/9 16:17:43

KK-HF_Patch终极指南:快速解锁恋活游戏完整体验

KK-HF_Patch终极指南:快速解锁恋活游戏完整体验 【免费下载链接】KK-HF_Patch Automatically translate, uncensor and update Koikatu! and Koikatsu Party! 项目地址: https://gitcode.com/gh_mirrors/kk/KK-HF_Patch 还在为Koikatu游戏的语言障碍和功能限…

作者头像 李华
网站建设 2026/3/11 15:28:01

Qwen3-0.6B性能优化指南,让推理更快一步

Qwen3-0.6B性能优化指南,让推理更快一步 1. 概述 在大语言模型(Large Language Model, LLM)的实际部署中,性能优化是决定用户体验和系统效率的核心因素。Qwen3-0.6B作为通义千问系列中轻量级的密集模型,具备低延迟、…

作者头像 李华