news 2026/1/30 1:10:12

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/1/29 22:36:57

Windows安卓应用安装神器:APK Installer完全使用手册

Windows安卓应用安装神器:APK Installer完全使用手册 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 还在为无法在Windows电脑上安装安卓应用而苦恼吗&…

作者头像 李华
网站建设 2026/1/29 14:23:11

PixelAnnotationTool终极指南:3分钟掌握图像标注完整教程

PixelAnnotationTool终极指南:3分钟掌握图像标注完整教程 【免费下载链接】PixelAnnotationTool Annotate quickly images. 项目地址: https://gitcode.com/gh_mirrors/pi/PixelAnnotationTool 在计算机视觉领域,高质量的数据标注是模型成功的关…

作者头像 李华
网站建设 2026/1/29 17:55:34

基于大语言模型与高精度OCR融合的智能文档抽取技术,实现了版式无关的自动化信息提取

在合同审核、金融尽调或法律证据比对等场景中,专业人员常常需要面对堆积如山的文件。传统的文档比对依赖人工逐字逐句核对,不仅效率低下,而且容易因疲劳导致关键信息遗漏或误判。面对版式各异、结构复杂的海量文件,如何快速、精准…

作者头像 李华
网站建设 2026/1/16 4:35:24

FSMN VAD WebUI界面详解,四大功能模块全解析

FSMN VAD WebUI界面详解,四大功能模块全解析 1. 背景与系统概述 1.1 FSMN VAD 技术背景 语音活动检测(Voice Activity Detection, VAD)是语音处理系统中的关键前置模块,用于识别音频中哪些时间段包含有效语音,从而过…

作者头像 李华
网站建设 2026/1/30 3:54:18

微前端架构设计:从单体应用到模块化企业级系统的演进之路

微前端架构设计:从单体应用到模块化企业级系统的演进之路 【免费下载链接】vue-vben-admin vbenjs/vue-vben-admin: 是一个基于 Vue.js 和 Element UI 的后台管理系统,支持多种数据源和插件扩展。该项目提供了一个完整的后台管理系统,可以方便…

作者头像 李华
网站建设 2026/1/18 17:51:37

DeepSeek-R1-Distill-Qwen-1.5B企业应用案例:法律文书生成部署

DeepSeek-R1-Distill-Qwen-1.5B企业应用案例:法律文书生成部署 1. 引言 随着大模型在垂直领域的深入应用,轻量化、高效率的推理模型成为企业落地AI能力的关键。在法律、金融、医疗等专业场景中,对模型的专业性、响应速度和部署成本提出了更…

作者头像 李华