Docker容器化解决方案

发布时间:2026/11/5 4:54:24

Docker容器化解决方案 Docker容器化解决方案文章目录Docker容器化解决方案1. 容器简介1.1 什么是Linux容器1.2 容器发展简史2. Docker简介2.1 Docker是什么2.2 Docker的目标3. Docker熟识3.1 Docker部署及配置3.2 Docker基本指令4. Docker镜像管理4.1 搜索官方仓库镜像 `docker search image_name`4.2 获取镜像 `docker pull image_name:tag`4.3 导出镜像 `docker image save image_name:tag /to/path/image_name.tar.gz`4.4 导入镜像: `docker image load -i /to/path/image_name.tar.gz`4.5 删除镜像4.6 查看镜像详细信息5. 容器的日常管理5.1 容器的起/停5.2 进入容器的方法5.3 容器与宿主机间传输文件6. Docker数据卷的管理6.1 挂载时创建卷6.2 提前创建数据卷7. Dockerfile自动构建docker镜像7.1 Dockerfile指令集7.2 单阶段构建镜像7.3 多阶段构建镜像8. HarBor私有镜像仓库8.1 环境准备8.2 harbor配置及启动9. docker-compose编排工具9.1 安装docker-compose9.2 编排启动镜像1. 容器简介1.1 什么是Linux容器Linux容器是与系统其他部分隔离开的一系列进程,从另一个镜像运行,并由该镜像提供支持进程所需的全部文件。容器提供的镜像包含了应用的所有依赖项,因而在从开发到测试再到生产的整个过程中,它都具有可移植性和一致性。1.2 容器发展简史我们现在称为容器技术的概念最初出现在 2000 年,当时称为 FreeBSD jail,这种技术可将 FreeBSD 系统分区为多个子系统(也称为 Jail)。Jail 是作为安全环境而开发的,系统管理员可与企业内部或外部的多个用户共享这些 Jail。Jail 的目的是让进程在经过修改的 chroot 环境中创建,而不会脱离和影响整个系统 — 在 chroot 环境中,对文件系统、网络和用户的访问都实现了虚拟化。尽管 Jail 在实施方面存在局限性,但最终人们找到了脱离这种隔离环境的方法。但这个概念非常有吸引力。2001 年,通过 Jacques Gélinas 的 VServer 项目,隔离环境的实施进入了 Linux 领域。正如 Gélinas 所说,这项工作的目的是“在高度独立且安全的单一环境中运行多个通用 Linux 服务器。”在完成了这项针对 Linux 中多个受控制用户空间的基础性工作后,Linux 容器开始逐渐成形并最终发展成了现在的模样。2. Docker简介2.1 Docker是什么“Docker” 一词指代多种事物,包括开源社区项目、开源项目使用的工具、主导支持此类项目的公司 Docker Inc. 以及该公司官方支持的工具。技术产品和公司使用同一名称,的确让人有点困惑。我们来简单说明一下:IT 软件中所说的 “Docker” ,是指容器化技术,用于支持创建和使用 Linux 容器。开源 Docker 社区致力于改进这类技术,并免费提供给所有用户,使之获益。Docker Inc. 公司凭借 Docker 社区产品起家,它主要负责提升社区版本的安全性,并将改进后的版本与更广泛的技术社区分享。此外,它还专门对这些技术产品进行完善和安全固化,以服务于企业客户。借助 Docker ,您可将容器当做重量轻、模块化的虚拟机使用。同时,您还将获得高度的灵活性,从而实现对容器的高效创建、部署及复制,并能将其从一个环境顺利迁移至另一个环境Docker 技术使用 Linux 内核和内核功能(例如 Cgroups 和 namespaces)来分隔进程,以便各进程相互独立运行。这种独立性正是采用容器的目的所在;它可以独立运行多种进程、多个应用程序,更加充分地发挥基础设施的作用,同时保持各个独立系统的安全性。容器工具(包括 Docker)可提供基于镜像的部署模式。这使得它能够轻松跨多种环境,与其依赖程序共享应用或服务组。Docker 还可在这一容器环境中自动部署应用程序(或者合并多种流程,以构建单个应用程序)。此外,由于这些工具基于 Linux 容器构建,使得 Docker 既易于使用,又别具一格 —— 它可为用户提供前所未有的高度应用程访问权限、快速部署以及版本控制和分发能力2.2 Docker的目标docker的主要目标是"Build,Ship and Run any App,Angwhere", 构建,运输,处处运行构建:做一个docker镜像运输:docker pull or push运行:启动一个容器每一个容器,他都有自己的文件系统rootfs.3. Docker熟识3.1 Docker部署及配置安装docker工具$cd/etc/yum.repos.d $wgethttps://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo $sed-i's#download.docker.com#mirrors.ustc.edu.cn/docker-ce#g'docker-ce.repo $ yum-yinstalldocker-ce $ systemctlenable--nowdocker.service启动第一个容器$dockercontainer run-itd-p8080:80 nginx:1.21 Unable tofindimage'nginx:1.21'locally1.21: Pulling from library/nginx 1fe172e4850f: Pull complete 35c195f487df: Pull complete 213b9b16f495: Pull complete a8172d9e19b9: Pull complete f5eee2cb2150: Pull complete 93e404ba8667: Pull complete Digest: sha256:859ab6768a6f26a79bc42b231664111317d095a4f04e4b6fe79ce37b3d199097 Status: Downloaded newer imagefornginx:1.21 28a074f14de734d565b61d49f8dd1fd005a7da696b381ec3514fe89449ae96b3配置镜像加速器$vim/etc/docker/daemon.json{"registry-mirrors":["https://registry.docker-cn.com"]}$ systemctl daemon-reload $ systemctl restart docker.service3.2 Docker基本指令查看docker版本$dockerversion Client: Docker Engine - Community Version:20.10.14 API version:1.41Go version: go1.16.15 Git commit: a224086 Built: Thu Mar2401:49:572022OS/Arch: linux/amd64 Context: default Experimental:trueServer: Docker Engine - Community Engine: Version:20.10.14 API version:1.41(minimum version1.12)Go version: go1.16.15 Git commit: 87a90dc Built: Thu Mar2401:48:242022OS/Arch: linux/amd64 Experimental:falsecontainerd: Version:1.5.11 GitCommit: 3df54a852345ae127d1fa3092b95168e4a88e2f8 runc: Version:1.0.3 GitCommit: v1.0.3-0-gf46b6ba docker-init: Version:0.19.0 GitCommit: de40ad0基础资源查看dockercontainerlsCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 31bdb0575074 nginx:1.21"/docker-entrypoint.…"About a minute ago Up58seconds0.0.0.0:8080-80/tcp, :::8080-80/tcp romantic_elion $dockerimagelsREPOSITORY TAG IMAGE ID CREATED SIZE nginx1.21fa5269854a5e12days ago 142MB $dockernetworklsNETWORK ID NAME DRIVER SCOPE 47ea72ec86c9 bridge bridgelocalaf2d08d73c78hosthostlocal166d963f62c8 none nulllocal$dockervolumelsDRIVER VOLUME NAME登录远程仓库, 获取拉镜像的权限$dockerlogin Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID,headover to https://hub.docker.com to create one. Username: hlions Password: WARNING!Your password will be stored unencryptedin/root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded $dockerlogoutRemoving login credentialsforhttps://index.docker.io/v1/4. Docker镜像管理4.1 搜索官方仓库镜像docker search image_name$dockerlogin $dockersearch nginx|head-3NAME DESCRIPTION STARS OFFICIAL AUTOMATED nginx Official build of Nginx.16723[OK]bitnami/nginx Bitnami nginx Docker Image124[OK]4.2 获取镜像docker pull image_name:tag$dockerpull tomcat:8-jdk8-corretto8-jdk8-corretto: Pulling from library/tomcat 8de5b65bd171: Pull complete 00e9707b9594: Pull complete a4d7141ce82b: Pull complete 683f96ff9142: Pull complete 021d0aeb9b5a: Pull complete Digest: sha256:5519094808b33f320cb8821e6789ae813d1c71ee3dd03ecc35035fb94be37a3e Status: Downloaded newer imagefortomcat:8-jdk8-corretto docker.io/library/tomcat:8-jdk8-corretto $dockerimagelsREPOSITORY TAG IMAGE ID CREATED SIZE tomcat8-jdk8-corretto 6aa794aeaf2e Less than a second ago 379MB nginx1.21fa5269854a5e12days ago 142MB4.3 导出镜像docker image save image_name:tag /to/path/image_name.tar.gz$dockerimage save tomcat:8-jdk8-corretto/opt/docker-images-tar/tomcat-8-jdk-corretto.tar.gz4.4 导入镜像:docker image load -i /to/path/image_name.tar.gz$dockerimage load-i/opt/docker-images-tar/tomcat-8-jdk-corretto.tar.gz 2ce46c79ab58: Loading layer[==================================================]171.1MB/171.1MB adfbec3e67f4: Loading layer[==================================================]184.6MB/184.6MB 62ad8969b17a: Loading layer[==================================================]3.072kB/3.072kB 693367907f2b: Loading layer[==================================================]31.19MB/31.19MB 21dcce1be3e6: Loading layer[==================================================]2.048kB/2.048kB Loaded image: tomcat:8-jdk8-corretto $dockerimagelsREPOSITORY TAG IMAGE ID CREATED SIZE tomcat8-jdk8-corretto 6aa794aeaf2e Less than a second ago 379MB nginx1.21fa5269854a5e12days ago 142MB4.5 删除镜像$dockerimagelsREPOSITORY TAG IMAGE ID CREATED SIZE tomcat8-jdk8-corretto 6aa794aeaf2e Less than a second ago 379MB nginx1.21fa5269854a5e12days ago 142MB $
延伸阅读

更多相关文章

2026/11/4 7:12:26

影刀RPA 多线程基础:并发采集入门

影刀RPA 多线程基础:并发采集入门 署名:林焱 什么情况用什么 RPA采集100个网页,单线程一个个打开要30分钟。如果同时开5个线程,6分钟就跑完了。多线程能显著提升IO密集型任务效率。 场景推荐方式特点网页批量采集threading 队列…

2026/11/5 7:03:44

从ChatGPT到AGI:2026年AI大模型的终极追问与未来幻想

国内用户访问提示:由于网络限制,OpenAI官网及Anthropic官网在国内无法直接访问。国内用户可通过镜像平台AIGCBAR体验ChatGPT、Claude等主流AI模型。该平台内置Auto模式与Thinking模式,思考程度提供标准和深度两档可选,支持国内邮箱…

2026/11/5 16:51:33

EasyU优启通PE维护盘实战指南:制作、启动与核心操作全解析

1. 为什么一个PE维护盘值得单独拿出来聊装系统、修引导、救数据、清病毒,这些活儿但凡干过几次的人都知道,真正决定效率的往往不是你手速多快,而是手边那套PE环境靠不靠谱。EasyU(圈内习惯叫优启通)就是在这个场景下被…

2026/11/5 16:26:13

Rust原来很简单二:所有权系统

Part 2 核心篇 —— 所有权系统 本篇覆盖 第 6 ~ 10 章:所有权、借用与引用、生命周期、字符串与切片、内存模型。 ⚠️ 这是全书最重要的一篇。 把它吃透,Rust 从此“很简单”;跳过它,你会处处碰壁。请慢下来,动手敲每一段代码。 第 6 章 所有权:Rust 的第一性原理 6…

2026/11/5 15:00:49

基于Hadoop+Spark的民宿智能推荐系统设计与实现

1. 项目概述:大数据时代的民宿智能推荐这个毕业设计项目融合了当前大数据领域最主流的技术栈,构建了一个完整的民宿推荐系统解决方案。作为一名长期从事大数据系统开发的工程师,我认为这个选题非常贴合实际应用场景——随着旅游业的复苏和共享…

2026/11/5 14:10:30

ADS122U04IPWR+STM32F427ZI工业级温度测量信号链设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 14:10:30

UART接口24位ADC搭配RS485,解决远距离温度监控难题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 14:10:30

UART接口24位ADC搭配PIC18F46K22的RTD与热电偶测温实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 15:39:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 0:02:07

多智能体协作系统架构设计与实践优化

1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中…

2026/11/5 0:02:07

大模型系统性入门实战指南:从原理到部署微调的全链路路线

提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#…

2026/11/5 0:02:07

鸿蒙文件系统沙箱机制解析与开发实践

1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的…

2026/11/5 15:39:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑