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 语句,包括其语法、用法以及如何安全地执行删除操…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...
HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
热门Chrome扩展程序存在明文传输风险,用户隐私安全受威胁
赛门铁克威胁猎手团队最新报告披露,数款拥有数百万活跃用户的Chrome扩展程序正在通过未加密的HTTP连接静默泄露用户敏感数据,严重威胁用户隐私安全。 知名扩展程序存在明文传输风险 尽管宣称提供安全浏览、数据分析或便捷界面等功能,但SEMR…...
STM32标准库-ADC数模转换器
文章目录 一、ADC1.1简介1. 2逐次逼近型ADC1.3ADC框图1.4ADC基本结构1.4.1 信号 “上车点”:输入模块(GPIO、温度、V_REFINT)1.4.2 信号 “调度站”:多路开关1.4.3 信号 “加工厂”:ADC 转换器(规则组 注入…...
深入浅出WebGL:在浏览器中解锁3D世界的魔法钥匙
WebGL:在浏览器中解锁3D世界的魔法钥匙 引言:网页的边界正在消失 在数字化浪潮的推动下,网页早已不再是静态信息的展示窗口。如今,我们可以在浏览器中体验逼真的3D游戏、交互式数据可视化、虚拟实验室,甚至沉浸式的V…...
Django RBAC项目后端实战 - 03 DRF权限控制实现
项目背景 在上一篇文章中,我们完成了JWT认证系统的集成。本篇文章将实现基于Redis的RBAC权限控制系统,为系统提供细粒度的权限控制。 开发目标 实现基于Redis的权限缓存机制开发DRF权限控制类实现权限管理API配置权限白名单 前置配置 在开始开发权限…...
