Docker配置与使用详解
一、引言
随着云计算和微服务的兴起,Docker作为一种轻量级的容器化技术,越来越受到开发者和运维人员的青睐。Docker通过容器化的方式,将应用程序及其依赖项打包成一个可移植的镜像,从而实现了应用程序的快速部署和扩展。本文将详细介绍Docker的配置与使用,包括Docker的安装、镜像管理、容器操作以及Docker Compose的使用等,并附有详细的代码示例。
二、Docker安装
Docker的安装过程因操作系统而异,但大多数操作系统都提供了官方支持的Docker安装包。以下以Ubuntu系统为例,介绍Docker的安装步骤:
1. 更新软件包列表
sudo apt-get update
2. 安装Docker所需的依赖项
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
3. 添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
4. 添加Docker官方软件源
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
5. 更新软件包列表并安装Docker CE(社区版)
sudo apt-get update
sudo apt-get install docker-ce
6. 启动Docker服务并设置为开机自启
sudo systemctl start docker
sudo systemctl enable docker
7. 验证Docker安装是否成功
sudo docker run hello-world
如果以上命令能正确输出Docker的信息,说明Docker安装成功。
三、Docker镜像管理
Docker镜像是Docker容器的基础,它包含了应用程序及其依赖项的所有文件。Docker提供了丰富的镜像管理工具,如Docker Hub、阿里云容器镜像服务等。以下介绍Docker镜像的拉取、查看、搜索和删除等基本操作。
1. 拉取镜像
使用docker pull命令可以从Docker Hub或其他镜像仓库拉取镜像。例如,拉取Ubuntu 20.04的镜像:
sudo docker pull ubuntu:20.04
2. 查看镜像
使用docker images命令可以查看本地所有的镜像:
sudo docker images
3. 搜索镜像
使用docker search命令可以在Docker Hub上搜索镜像。例如,搜索名为nginx的镜像:
sudo docker search nginx
4. 删除镜像
使用docker rmi命令可以删除本地镜像。例如,删除名为ubuntu:20.04的镜像:
sudo docker rmi ubuntu:20.04
四、Docker容器操作
Docker容器是Docker镜像的实例化对象,它包含了应用程序的运行环境。以下介绍Docker容器的创建、启动、停止、进入和删除等基本操作。
1. 创建并启动容器
使用docker run命令可以创建并启动容器。例如,基于ubuntu:20.04镜像创建一个名为mycontainer的容器,并在其中执行bash命令:
sudo docker run -it --name mycontainer ubuntu:20.04 bash
其中,-it表示以交互模式运行容器,--name用于指定容器名称。
2. 查看容器
使用docker ps命令可以查看正在运行的容器:
sudo docker ps
使用docker ps -a命令可以查看所有容器(包括已停止的容器):
sudo docker ps -a
3. 停止容器
使用docker stop命令可以停止正在运行的容器。例如,停止名为mycontainer的容器:
sudo docker stop mycontainer
4. 进入容器
使用docker exec命令可以在正在运行的容器中执行命令。例如,进入名为mycontainer的容器并执行bash命令:
sudo docker exec -it mycontainer bash
另外,还可以使用docker attach命令进入容器的终端,但这种方式会阻塞其他命令的执行。
5. 删除容器
使用docker rm命令可以删除容器。例如,删除名为mycontainer的容器:
sudo docker rm mycontainer
注意:在删除容器之前,需要先停止该容器。
五、Docker Compose使用
Docker Compose是一个用于定义和运行多容器Docker应用程序的工具。它使用YAML文件来配置应用程序的服务、网络和卷等。以下介绍Docker Compose的基本使用步骤。
1. 安装Docker Compose
Docker Compose的安装过程与Docker类似,但它是作为一个独立的工具安装的。在Linux系统上,可以通过下载二进制文件并设置可执行权限来完成安装。以下是在Linux上安装Docker Compose的示例步骤:
首先,下载Docker Compose的二进制文件,比如docker-compose的当前稳定版本(版本号需要替换为最新的):
sudo curl -L "https://github.com/docker/compose/releases/download/vX.Y.Z/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
然后,设置可执行权限:
sudo chmod +x /usr/local/bin/docker-compose
接下来,测试安装是否成功:
docker-compose --version
如果返回了Docker Compose的版本号,则表示安装成功。
2. 创建Docker Compose配置文件
Docker Compose使用YAML文件来定义服务、网络和卷等。以下是一个简单的docker-compose.yml文件示例,它定义了一个名为web的web应用程序服务和一个名为db的数据库服务:
version: '3'
services:web:build: ./webports:- "5000:5000"depends_on:- dbenvironment:DB_HOST: dbDB_USER: exampleDB_PASS: exampleDB_NAME: exampledbdb:image: postgresenvironment:POSTGRES_PASSWORD: example
在这个例子中,web服务基于当前目录下的./web目录中的Dockerfile构建,并将容器的5000端口映射到宿主机的5000端口。web服务依赖于db服务,并使用环境变量来配置数据库连接信息。db服务则基于官方的PostgreSQL镜像创建。
3. 使用Docker Compose启动服务
在包含docker-compose.yml文件的目录下运行以下命令来启动服务:
docker-compose up -d
-d选项表示在后台运行服务。你可以使用docker-compose ps命令来查看正在运行的服务。
4. 停止和删除服务
要停止服务,可以使用以下命令:
docker-compose stop
要删除服务以及它们使用的网络、卷等,可以使用以下命令:
docker-compose down
5. 其他Docker Compose命令
Docker Compose提供了许多其他命令,如docker-compose logs(查看服务日志)、docker-compose restart(重启服务)等。你可以通过docker-compose --help命令查看所有可用的命令和选项。
六、总结
本文详细介绍了Docker的配置与使用,包括Docker的安装、镜像管理、容器操作以及Docker Compose的使用。通过具体的代码示例,展示了如何执行各种Docker操作,并解释了它们的作用和用法。希望本文能帮助读者更好地理解和使用Docker技术。随着云计算和微服务的不断发展,Docker将继续发挥重要作用,为开发者和运维人员提供更高效、更灵活的解决方案。
相关文章:
Docker配置与使用详解
一、引言 随着云计算和微服务的兴起,Docker作为一种轻量级的容器化技术,越来越受到开发者和运维人员的青睐。Docker通过容器化的方式,将应用程序及其依赖项打包成一个可移植的镜像,从而实现了应用程序的快速部署和扩展。本文将详…...
触控MCU芯片(1):英飞凌PSoC第6代第7代
前言: 说到触摸MCU芯片,这个历史也是很久了,比如日常经常接触到的洗衣机、电冰箱、小家电,隔着一层玻璃,轻轻一按就能识别按键,感觉比过去纯机械式的按键更高级更美观,不仅白电,现在很多汽车也都在进行触摸按键的改版,不再使用笨重的机械按键,比如空调调温按键、档位…...
git pull报错:unable to pull from remote repository due to conflicting tag(s)
背景 我在vscode里正常拉取代码,突然就报了如题所示的错误。 原因 因为vscode的拉取按钮执行的实际命令是:git pull --tags origin branch-name,该命令的实际含义是从远程仓库拉取指定的分支和该远程仓库上的所有标签。 在拉取标签时本地的…...
Python将字符串用特定字符分割并前面加序号
Python将字符串用特定字符分割并前面加序号 Python将字符串用特定字符分割并前面加序号,今天项目中就遇到,看着不难,得花点时间搞出来急用啊,在网上找了一圈,没发现有完整流程的文章。所以就搞出来并写了这个文章。仅…...
【第16章】Vue实战篇之跨域解决
文章目录 前言一、浏览器跨域二、配置代理1.公共请求2.代理配置 总结 前言 前后端项目分离衍生出浏览器跨域问题,开发之前我们通过配置代理解决这个问题。 一、浏览器跨域 浏览器的跨域问题主要是由于浏览器的同源策略导致的。同源策略是浏览器的一个安全功能&…...
【PB案例学习笔记】-22制作一个语音朗读金额小应用
写在前面 这是PB案例学习笔记系列文章的第22篇,该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习,提高编程技巧,以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码,小凡都上传到了gite…...
glmark2代码阅读总结
glmark2代码阅读总结 一、总体 用输入参数生成testbench项用scene和benchmark管理进行复用通过类的重载,创建出不同的分支和具体的实现点,如scene和mainloop类用例执行又规划,每个scene都统一有setup,等使用scene的继承关系&…...
第 6 章 监控系统 | 监控套路 - 总结
前面,我们使用 Prometheus + Grafana + Node Exporter 实现虚拟机监控及告警。 那么,😇 监控的套路究竟是什么呢? 第 1 步:暴露 metrics,通过某个 exporter 将 metrics 暴露出来第 2 步:配置 Prometheus 抓取上面暴露的 metrics 数据第 3 步:加速 metrics 显示,配置…...
VsCode中C文件调用其他C文件函数失败
之前一直使用CodeBlocks,最近使用vscode多,感觉它比较方便,但在调用其他C文件的时候发现报错以下内容基于单C文件运行成功,否则请移步 博文:VSCode上搭建C/C开发环境 报错信息 没有使用CodeRunner插件,弹…...
css中content属性你了解多少?
在CSS中,content属性通常与伪元素(如 ::before 和 ::after)一起使用,用于在元素的内容之前或之后插入生成的内容。这个属性不接受常规的HTML内容,而是接受一些特定的值,如字符串、属性值、计数器值等。 以…...
JVM-GC-G1垃圾回收器
JVM-GC-G1垃圾回收器 基本概念 card table card table概念是为了解决新生代对象进入老年代时,在进行新生代扫描的时候会遍历老年代对象的问题。将内存分为多个card,如果在一个老年代card中存在引用新生代对象的对象,则将该区域标记及为dirty card。 CS…...
【Ubuntu通用压力测试】Ubuntu16.04 CPU压力测试
使用 stress 对CPU进行压力测试 我也是一个ubuntu初学者,分享是Linux的优良美德。写的不好请大佬不要喷,多谢支持。 sudo apt-get update 日常先更新再安装东西不容易出错 sudo apt-get upgrade -y 继续升级一波 sudo apt-get install -y linux-tools…...
Artix Linux 默认不使用 systemd
开发者选择不使用systemd,而倾向于使用OpenRC或runit作为其初始化系统的原因。 哲学和设计原则:Systemd是一个功能丰富的初始化系统和系统管理器,它集成了许多功能,但这也导致它的设计哲学与一些用户或开发者的偏好不符。有些用户…...
JVM-GC-CMS垃圾回收器
JVM-CMS垃圾回收器 CMS垃圾回收的步骤 1. 初始标记(InitialMarking) 这是一个STW的过程,并行标记,只是标记GC Roots能直接关联到的对象。由于GC Root直接关联的对象少,因此STW时间比较短。 2. 并发标记 非STW的过程&…...
【玩转google云】实战:如何在GKE上使用Helm安装和配置3节点的RabbitMQ集群
需求 因项目需要需要在Google Kubernetes Engine (GKE) 中使用Helm安装一个3节点的RabbitMQ集群,配置用户名和密码,开通公网访问的Web管理界面,指定namespace为mq,并使用5G的硬盘存储MQ的数据。 前提条件 GKE集群:确保你有一个运行中的GKE集群。Helm工具:确保已安装Hel…...
【神经网络】深度神经网络
深度神经网络(Deep Neural Network,简称DNN)是一种模仿人脑神经网络结构和工作原理的机器学习模型。它通过层级化的特征学习和权重调节,能够实现复杂任务的高性能解决方案。深度神经网络由多个神经元层组成,每个神经元…...
机器学习算法 —— K近邻(KNN分类)
🌟欢迎来到 我的博客 —— 探索技术的无限可能! 🌟博客的简介(文章目录) 目录 KNN的介绍和应用KNN的介绍1) KNN建立过程2) 类别的判定KNN的优点KNN的缺点KNN的应用实战KNN分类数据集 —— KNN分类库函数导入数据导入模型训练&可视化原理简析莺尾花数据集 —— KNN分…...
Thinkphp5内核流浪猫流浪狗宠物领养平台H5源码
Thinkphp5内核流浪猫流浪狗宠物领养平台H5源码 可封装APP,适合做猫狗宠物类的发信息发布,当然懂的修改一下,做其他信息发布也是可以的。 Thinkphp5内核流浪猫流浪狗宠物领养平台H5源码...
c++ 智能指针使用注意事项及解决方案
c11智能指针 shared_ptr介绍注意事项示例解决方案 weak_ptr特点示例 unique_ptr特点示例 shared_ptr 介绍 shared_ptr 是一种智能指针,用于自动管理动态分配的对象的生命周期。它通过引用计数机制来确保当最后一个 shared_ptr 指向一个对象时,该对象会…...
SQLite Delete 语句
SQLite Delete 语句 SQLite 的 DELETE 语句用于从表中删除数据。它是 SQL 数据库管理中非常基础且重要的操作之一。在使用 DELETE 语句时,可以删除表中的特定行,也可以删除整个表的数据。本文将详细介绍 SQLite 中的 DELETE 语句,包括其语法、用法以及如何安全地执行删除操…...
基于LLM与多智能体架构的科研文献检索系统设计与实现
1. 项目概述:当AI遇上科研,一场信息检索的革命如果你是一名科研工作者,或者正在为毕业论文、项目报告而焦头烂额,那你一定对“找文献”这件事深有体会。面对海量的学术数据库,输入关键词,得到成千上万篇论文…...
光耦LED寿命评估与可靠性设计实践
1. 光耦LED寿命评估的核心价值 在工业自动化控制系统中,我曾亲眼目睹一个价值数百万的生产线因为光耦器件失效导致整个控制系统误动作。故障排查时发现,正是光耦内部的LED光源经过5年连续工作后出现严重光衰,使得信号传输出现错误。这个教训让…...
从AceForge看一体化AI平台:如何实现模型部署与运维的平民化
1. 项目概述:从“AceForge”看开源AI工具链的平民化革命最近在GitHub上闲逛,发现一个叫“AceForge”的项目,作者是sudokrang。点进去一看,简介写得挺有意思,大意是说这是一个“一站式、开箱即用的AI应用开发与部署平台…...
五分钟 熟悉所有Claude Code指令
废话不多说,直接上干货,点赞收藏一、 启动与退出cd xx #进入你的项目 claude start # 启动 Claude Code claude exit # 退出二、查看帮助claude /help # 显示所有命令及使用说明 claude /status # 查看当前会话状态三、文件操作claude /add <file&g…...
服务器运维(四十八)linux删除无用依赖 —东方仙盟
一、逐条安全性分析1. sudo dnf autoremove -y作用:删掉安装软件后遗留的无用依赖包风险:极低禁忌:你现在只跑 nginxmysqllua,没有冷门依赖,随便跑效果:清大量残留库、编译依赖2. sudo dnf clean all作用&a…...
【DeepSeek+Grafana可视化实战指南】:20年SRE亲授5大避坑法则与实时指标监控黄金配置
更多请点击: https://intelliparadigm.com 第一章:DeepSeekGrafana可视化实战导论 DeepSeek 系列大模型(如 DeepSeek-V2、DeepSeek-Coder)在推理服务中产生丰富的运行时指标——包括 token 吞吐量、P99 延迟、GPU 显存占用、请求…...
工业仿真软件推荐指南|高解析度、低成本、自主可控的长期之选
在工业数字化与AI融合的当下,选择一款值得长期投入的工业仿真软件,已成为企业研发效率与成本控制的关键。面对市场上众多CAE/CFD软件,如何从“能用”到“好用”,再到“值得长期持有”,需要一套清晰的评估框架。本文将从…...
Anthropic Claude Haiku 4.5 安全突破:勒索行为从96%降至0%
上一篇: Google I/O 2026前瞻:Gemini 4.0、Android XR与AI原生生态的全面突破 下一篇: Anthropic ARR突破440亿美元:Q1营收同比增长80倍深度分析 核心结论: Anthropic通过"困难建议数据集"和宪法训练方法,成功将Claude模型的勒索行…...
LangForce方法:强化VLA模型语言依赖,提升分布外泛化能力并保留语言核心功能
LangForce方法:强化VLA模型语言依赖,提升分布外泛化能力并保留语言核心功能当前VLA模型常依赖视觉线索而非语言指令,在新场景下表现不佳。论文提出的LangForce方法,通过引入对数似然比损失,强化模型对语言的依赖&#…...
物联网设备安全:硅基硬件防护方案解析
1. 物联网设备安全现状与挑战在智能家居、工业自动化、医疗监测等领域,物联网设备正以惊人的速度普及。根据IDC的调研数据,超过27%的企业在选择物联网供应商时将安全能力作为首要考量标准。然而现实情况是,大多数物联网设备仍在使用软件层面的…...
